/*
 * ATTENTION: An "eval-source-map" devtool has been used.
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunkportainer"] = self["webpackChunkportainer"] || []).push([["main"],{

80081:

(function(module, __unused_webpack_exports, __webpack_require__) {

var map = {
	"./__mocks__/fileMock.js": 14691,
	"./__mocks__/styleMock.js": 12534,
	"./__mocks__/svg.js": 38541,
	"./agent/components/file-uploader/fileUploaderController.js": 75947,
	"./agent/components/file-uploader/index.js": 38123,
	"./agent/components/files-datatable/index.js": 46161,
	"./agent/components/host-browser/hostBrowserController.js": 10822,
	"./agent/components/host-browser/index.js": 70627,
	"./agent/components/node-selector/index.js": 60744,
	"./agent/components/node-selector/nodeSelectorController.js": 42102,
	"./agent/components/volume-browser/index.js": 41775,
	"./agent/components/volume-browser/volumeBrowserController.js": 14087,
	"./agent/index.js": 26317,
	"./agent/models/agent.js": 99662,
	"./agent/rest/agent.js": 13481,
	"./agent/rest/browse.js": 56192,
	"./agent/rest/dockerhub.js": 26084,
	"./agent/rest/host.js": 74298,
	"./agent/rest/ping.js": 79688,
	"./agent/rest/response/browse.js": 94477,
	"./agent/rest/v1/agent.js": 40941,
	"./agent/rest/v1/browse.js": 91130,
	"./agent/services/agentService.js": 78548,
	"./agent/services/hostBrowserService.js": 77884,
	"./agent/services/pingService.js": 38918,
	"./agent/services/volumeBrowserService.js": 45824,
	"./angulartics.matomo/index.js": 14916,
	"./app.js": 54905,
	"./assets/css/index.js": 42311,
	"./config.js": 98767,
	"./constants.js": 71541,
	"./docker/__module.js": 2601,
	"./docker/components/container-capabilities/container-capabilities.controller.js": 99831,
	"./docker/components/container-capabilities/container-capabilities.js": 83088,
	"./docker/components/container-restart-policy/container-restart-policy-controller.js": 17592,
	"./docker/components/container-restart-policy/container-restart-policy.js": 8270,
	"./docker/components/dashboard-cluster-agent-info/dashboard-cluster-agent-info.js": 15772,
	"./docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfoController.js": 26419,
	"./docker/components/datatables/configs-datatable/configsDatatable.js": 62135,
	"./docker/components/datatables/container-networks-datatable/containerNetworksDatatable.js": 65532,
	"./docker/components/datatables/container-networks-datatable/containerNetworksDatatableController.js": 50015,
	"./docker/components/datatables/container-processes-datatable/containerProcessesDatatable.js": 67723,
	"./docker/components/datatables/events-datatable/eventsDatatable.js": 3716,
	"./docker/components/datatables/images-datatable/imagesDatatable.js": 61389,
	"./docker/components/datatables/images-datatable/imagesDatatableController.js": 40650,
	"./docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.js": 78570,
	"./docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js": 24342,
	"./docker/components/datatables/networks-datatable/networksDatatable.js": 21035,
	"./docker/components/datatables/networks-datatable/networksDatatableController.js": 22821,
	"./docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.js": 90712,
	"./docker/components/datatables/nodes-datatable/nodesDatatable.js": 66951,
	"./docker/components/datatables/secrets-datatable/secretsDatatable.js": 1087,
	"./docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.js": 30700,
	"./docker/components/datatables/service-tasks-datatable/serviceTasksDatatableController.js": 83076,
	"./docker/components/datatables/services-datatable/actions/servicesDatatableActions.js": 88840,
	"./docker/components/datatables/services-datatable/actions/servicesDatatableActionsController.js": 3474,
	"./docker/components/datatables/services-datatable/servicesDatatable.js": 22601,
	"./docker/components/datatables/services-datatable/servicesDatatableController.js": 46311,
	"./docker/components/datatables/tasks-datatable/tasksDatatable.js": 77886,
	"./docker/components/datatables/tasks-datatable/tasksDatatableController.js": 33740,
	"./docker/components/datatables/volumes-datatable/volumesDatatable.js": 75198,
	"./docker/components/datatables/volumes-datatable/volumesDatatableController.js": 72091,
	"./docker/components/host-overview/host-overview.js": 37610,
	"./docker/components/host-view-panels/devices-panel/devices-panel.js": 85943,
	"./docker/components/host-view-panels/disks-panel/disks-panel.js": 40210,
	"./docker/components/host-view-panels/engine-details-panel/engine-details-panel.js": 25203,
	"./docker/components/host-view-panels/host-details-panel/host-details-panel.js": 68181,
	"./docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js": 44162,
	"./docker/components/host-view-panels/node-availability-select/node-availability-select.js": 28031,
	"./docker/components/host-view-panels/node-labels-table/node-labels-table-controller.js": 55024,
	"./docker/components/host-view-panels/node-labels-table/node-labels-table.js": 96399,
	"./docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js": 70395,
	"./docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js": 98186,
	"./docker/components/imageRegistry/por-image-registry-rate-limits.controller.js": 72749,
	"./docker/components/imageRegistry/por-image-registry-rate-limits.js": 64906,
	"./docker/components/imageRegistry/por-image-registry.controller.js": 22429,
	"./docker/components/imageRegistry/por-image-registry.js": 91653,
	"./docker/components/log-viewer/log-viewer.js": 69760,
	"./docker/components/log-viewer/logViewerController.js": 89410,
	"./docker/components/network-macvlan-form/network-macvlan-form.js": 22852,
	"./docker/components/network-macvlan-form/networkMacvlanFormController.js": 3476,
	"./docker/components/network-macvlan-form/networkMacvlanFormModel.js": 50373,
	"./docker/components/volumesCIFSForm/volumesCifsForm.js": 8470,
	"./docker/components/volumesCIFSForm/volumesCifsFormModel.js": 86668,
	"./docker/components/volumesNFSForm/volumes-nfs-form.js": 87959,
	"./docker/components/volumesNFSForm/volumesNFSFormModel.js": 57629,
	"./docker/filters/filters.js": 50352,
	"./docker/helpers/configHelper.js": 52161,
	"./docker/helpers/constraintsHelper.js": 82556,
	"./docker/helpers/containerHelper.js": 5204,
	"./docker/helpers/imageHelper.js": 20886,
	"./docker/helpers/infoHelper.js": 46313,
	"./docker/helpers/labelHelper.js": 6264,
	"./docker/helpers/networkHelper.js": 69452,
	"./docker/helpers/nodeHelper.js": 80677,
	"./docker/helpers/secretHelper.js": 45665,
	"./docker/helpers/serviceHelper.js": 18743,
	"./docker/helpers/taskHelper.js": 22588,
	"./docker/helpers/volumeHelper.js": 60069,
	"./docker/interceptors/containersInterceptor.js": 8691,
	"./docker/interceptors/imagesInterceptor.js": 18872,
	"./docker/interceptors/infoInterceptor.js": 84395,
	"./docker/interceptors/networksInterceptor.js": 2630,
	"./docker/interceptors/versionInterceptor.js": 73166,
	"./docker/interceptors/volumesInterceptor.js": 33022,
	"./docker/models/config.js": 66807,
	"./docker/models/container.js": 12064,
	"./docker/models/containerCapabilities.js": 66328,
	"./docker/models/event.js": 44333,
	"./docker/models/image.js": 84647,
	"./docker/models/imageDetails.js": 56946,
	"./docker/models/imageLayer.js": 75208,
	"./docker/models/network.js": 70983,
	"./docker/models/node.js": 11339,
	"./docker/models/plugin.js": 34161,
	"./docker/models/porImageRegistry.js": 76939,
	"./docker/models/secret.js": 89638,
	"./docker/models/service.js": 7456,
	"./docker/models/swarm.js": 90906,
	"./docker/models/task.js": 59146,
	"./docker/models/volume.js": 80682,
	"./docker/rest/build.js": 27401,
	"./docker/rest/commit.js": 66055,
	"./docker/rest/config.js": 12477,
	"./docker/rest/container.js": 82791,
	"./docker/rest/exec.js": 6396,
	"./docker/rest/image.js": 10679,
	"./docker/rest/network.js": 96452,
	"./docker/rest/node.js": 71989,
	"./docker/rest/plugin.js": 357,
	"./docker/rest/response/handlers.js": 12944,
	"./docker/rest/response/image.js": 89615,
	"./docker/rest/secret.js": 64522,
	"./docker/rest/service.js": 49449,
	"./docker/rest/swarm.js": 52358,
	"./docker/rest/system.js": 61489,
	"./docker/rest/systemEndpoint.js": 86666,
	"./docker/rest/task.js": 3446,
	"./docker/rest/volume.js": 28192,
	"./docker/services/buildService.js": 90544,
	"./docker/services/configService.js": 81287,
	"./docker/services/containerService.js": 40725,
	"./docker/services/execService.js": 9401,
	"./docker/services/imageService.js": 45203,
	"./docker/services/networkService.js": 23116,
	"./docker/services/nodeService.js": 39272,
	"./docker/services/pluginService.js": 52589,
	"./docker/services/secretService.js": 50225,
	"./docker/services/serviceService.js": 52550,
	"./docker/services/swarmService.js": 15268,
	"./docker/services/systemService.js": 39983,
	"./docker/services/taskService.js": 98585,
	"./docker/services/volumeService.js": 31746,
	"./docker/views/configs/configsController.js": 42177,
	"./docker/views/configs/create/createConfigController.js": 96068,
	"./docker/views/configs/edit/configController.js": 63301,
	"./docker/views/containers/console/containerConsoleController.js": 85196,
	"./docker/views/containers/create/createContainerController.js": 51079,
	"./docker/views/containers/edit/containerController.js": 94518,
	"./docker/views/containers/inspect/containerInspectController.js": 62897,
	"./docker/views/containers/logs/containerLogsController.js": 47381,
	"./docker/views/containers/stats/containerStatsController.js": 19393,
	"./docker/views/dashboard/dashboardController.js": 88444,
	"./docker/views/docker-features-configuration/docker-features-configuration.controller.js": 25006,
	"./docker/views/docker-features-configuration/index.js": 68958,
	"./docker/views/events/eventsController.js": 63181,
	"./docker/views/host/host-browser-view/host-browser-view-controller.js": 34776,
	"./docker/views/host/host-browser-view/host-browser-view.js": 24233,
	"./docker/views/host/host-view-controller.js": 43279,
	"./docker/views/host/host-view.js": 15906,
	"./docker/views/images/build/buildImageController.js": 88741,
	"./docker/views/images/edit/imageController.js": 37391,
	"./docker/views/images/imagesController.js": 12107,
	"./docker/views/images/import/importImageController.js": 14521,
	"./docker/views/networks/create/createNetworkController.js": 543,
	"./docker/views/networks/networksController.js": 74225,
	"./docker/views/nodes/node-browser/node-browser-controller.js": 50451,
	"./docker/views/nodes/node-browser/node-browser.js": 83602,
	"./docker/views/nodes/node-details/node-details-view-controller.js": 29978,
	"./docker/views/nodes/node-details/node-details-view.js": 74275,
	"./docker/views/registries/access/registryAccess.js": 77152,
	"./docker/views/registries/access/registryAccessController.js": 40106,
	"./docker/views/secrets/create/createSecretController.js": 65968,
	"./docker/views/secrets/edit/secretController.js": 20842,
	"./docker/views/secrets/secretsController.js": 69654,
	"./docker/views/services/create/createServiceController.js": 91188,
	"./docker/views/services/edit/serviceController.js": 1816,
	"./docker/views/services/logs/serviceLogsController.js": 59139,
	"./docker/views/services/servicesController.js": 48566,
	"./docker/views/swarm/swarmController.js": 9104,
	"./docker/views/swarm/visualizer/swarmVisualizerController.js": 83456,
	"./docker/views/tasks/edit/taskController.js": 75349,
	"./docker/views/tasks/logs/taskLogsController.js": 93356,
	"./docker/views/volumes/browse/browseVolumeController.js": 63137,
	"./docker/views/volumes/create/createVolumeController.js": 61362,
	"./docker/views/volumes/edit/volumeController.js": 28862,
	"./docker/views/volumes/volumesController.js": 6002,
	"./edge/__module.js": 63774,
	"./edge/components/associated-endpoints-datatable/associatedEndpointsDatatableController.js": 24381,
	"./edge/components/associated-endpoints-datatable/index.js": 34139,
	"./edge/components/edge-job-form/edgeJobFormController.js": 267,
	"./edge/components/edge-job-form/index.js": 59788,
	"./edge/components/edge-job-results-datatable/edgeJobResultsDatatableController.js": 11314,
	"./edge/components/edge-job-results-datatable/index.js": 46642,
	"./edge/components/edge-jobs-datatable/index.js": 25758,
	"./edge/components/edge-stack-deployment-type-selector/edge-stack-deployment-type-selector.controller.js": 70830,
	"./edge/components/edge-stack-deployment-type-selector/index.js": 60559,
	"./edge/components/edge-stack-endpoints-datatable/edgeStackEndpointsDatatableController.js": 67383,
	"./edge/components/edge-stack-endpoints-datatable/index.js": 91505,
	"./edge/components/edge-stack-status/edgeStackStatusController.js": 794,
	"./edge/components/edge-stack-status/index.js": 26342,
	"./edge/components/edge-stacks-datatable/index.js": 70018,
	"./edge/components/edit-edge-stack-form/editEdgeStackFormController.js": 83205,
	"./edge/components/edit-edge-stack-form/index.js": 56037,
	"./edge/components/group-form/groupFormController.js": 88633,
	"./edge/components/group-form/index.js": 36906,
	"./edge/components/groups-datatable/groupsDatatableController.js": 9868,
	"./edge/components/groups-datatable/index.js": 36267,
	"./edge/rest/edge-groups.js": 65658,
	"./edge/rest/edge-job-results.js": 96791,
	"./edge/rest/edge-jobs.js": 2056,
	"./edge/rest/edge-stacks.js": 86796,
	"./edge/rest/edge-templates.js": 42163,
	"./edge/services/edge-group.js": 800,
	"./edge/services/edge-job.js": 30221,
	"./edge/services/edge-stack.js": 27527,
	"./edge/services/edge-template.js": 10993,
	"./edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js": 44932,
	"./edge/views/edge-groups/createEdgeGroupView/index.js": 35146,
	"./edge/views/edge-groups/edgeGroupsView/edgeGroupsViewController.js": 62044,
	"./edge/views/edge-groups/edgeGroupsView/index.js": 45359,
	"./edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js": 23794,
	"./edge/views/edge-groups/editEdgeGroupView/index.js": 58188,
	"./edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js": 8039,
	"./edge/views/edge-jobs/createEdgeJobView/index.js": 47994,
	"./edge/views/edge-jobs/edgeJob/edgeJobController.js": 87609,
	"./edge/views/edge-jobs/edgeJob/index.js": 6300,
	"./edge/views/edge-jobs/edgeJobsView/edgeJobsViewController.js": 54223,
	"./edge/views/edge-jobs/edgeJobsView/index.js": 30190,
	"./edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js": 32884,
	"./edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.js": 96478,
	"./edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.controller.js": 83615,
	"./edge/views/edge-stacks/createEdgeStackView/docker-compose-form/index.js": 32878,
	"./edge/views/edge-stacks/createEdgeStackView/index.js": 24125,
	"./edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/index.js": 75038,
	"./edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/index.js": 56799,
	"./edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.controller.js": 23836,
	"./edge/views/edge-stacks/edgeStacksView/edgeStacksViewController.js": 33661,
	"./edge/views/edge-stacks/edgeStacksView/index.js": 82138,
	"./edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js": 66514,
	"./edge/views/edge-stacks/editEdgeStackView/index.js": 36237,
	"./edge/views/edge-stacks/index.js": 6142,
	"./index.js": 21570,
	"./kubernetes/__module.js": 26604,
	"./kubernetes/components/datatables/application/containers-datatable/containersDatatable.js": 28953,
	"./kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.controller.js": 41727,
	"./kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.js": 3962,
	"./kubernetes/components/datatables/applications-datatable-url/applications-datatable-url.js": 87082,
	"./kubernetes/components/datatables/applications-datatable/applicationsDatatable.js": 42270,
	"./kubernetes/components/datatables/applications-datatable/applicationsDatatableController.js": 45941,
	"./kubernetes/components/datatables/applications-ports-datatable/applicationsPortsDatatable.js": 50195,
	"./kubernetes/components/datatables/applications-ports-datatable/applicationsPortsDatatableController.js": 77106,
	"./kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.js": 21266,
	"./kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatableController.js": 89107,
	"./kubernetes/components/datatables/configurations-datatable/configurationsDatatable.js": 95240,
	"./kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js": 63507,
	"./kubernetes/components/datatables/events-datatable/eventsDatatable.js": 39564,
	"./kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.js": 78458,
	"./kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.js": 56531,
	"./kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatableController.js": 8122,
	"./kubernetes/components/datatables/nodes-datatable/nodesDatatable.js": 60810,
	"./kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.js": 56975,
	"./kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatableController.js": 94817,
	"./kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.js": 22158,
	"./kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatableController.js": 51329,
	"./kubernetes/components/datatables/volumes-datatable/volumesDatatable.js": 62925,
	"./kubernetes/components/datatables/volumes-datatable/volumesDatatableController.js": 63651,
	"./kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js": 41399,
	"./kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.js": 79553,
	"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.js": 43579,
	"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.controller.js": 88416,
	"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.js": 15778,
	"./kubernetes/components/helm/helm-templates/helm-templates.controller.js": 67316,
	"./kubernetes/components/helm/helm-templates/helm-templates.js": 71228,
	"./kubernetes/components/kube-services/kube-services-item/kube-services-item.controller.js": 65473,
	"./kubernetes/components/kube-services/kube-services-item/kube-services-item.js": 1542,
	"./kubernetes/components/kube-services/kube-services.controller.js": 54466,
	"./kubernetes/components/kube-services/kube-services.js": 14957,
	"./kubernetes/components/kubectl-shell/kubectl-shell.controller.js": 30761,
	"./kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.js": 4546,
	"./kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationDataController.js": 16591,
	"./kubernetes/components/resource-reservation/resourceReservation.js": 42718,
	"./kubernetes/components/resource-reservation/resourceReservationController.js": 44579,
	"./kubernetes/components/view-loading/viewLoading.js": 15572,
	"./kubernetes/components/yaml-inspector/yamlInspector.js": 31938,
	"./kubernetes/components/yaml-inspector/yamlInspectorController.js": 50346,
	"./kubernetes/converters/application.js": 10293,
	"./kubernetes/converters/configMap.js": 40654,
	"./kubernetes/converters/configuration.js": 10241,
	"./kubernetes/converters/daemonSet.js": 12512,
	"./kubernetes/converters/deployment.js": 95929,
	"./kubernetes/converters/event.js": 43083,
	"./kubernetes/converters/namespace.js": 2544,
	"./kubernetes/converters/persistentVolumeClaim.js": 56636,
	"./kubernetes/converters/resourcePool.js": 57911,
	"./kubernetes/converters/resourceQuota.js": 57456,
	"./kubernetes/converters/secret.js": 52341,
	"./kubernetes/converters/service.js": 86998,
	"./kubernetes/converters/statefulSet.js": 15986,
	"./kubernetes/converters/storageClass.js": 17981,
	"./kubernetes/converters/volume.js": 92192,
	"./kubernetes/custom-templates/index.js": 79023,
	"./kubernetes/custom-templates/kube-create-custom-template-view/index.js": 6793,
	"./kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js": 2267,
	"./kubernetes/custom-templates/kube-custom-templates-view/index.js": 79403,
	"./kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.controller.js": 11916,
	"./kubernetes/custom-templates/kube-edit-custom-template-view/index.js": 52657,
	"./kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js": 69199,
	"./kubernetes/endpoint/converter.js": 59041,
	"./kubernetes/endpoint/models.js": 5264,
	"./kubernetes/endpoint/rest.js": 42964,
	"./kubernetes/endpoint/service.js": 5427,
	"./kubernetes/filters/applicationFilters.js": 11518,
	"./kubernetes/filters/configurationFilters.js": 63642,
	"./kubernetes/filters/eventFilters.js": 58311,
	"./kubernetes/filters/filters.js": 11634,
	"./kubernetes/helm/rest.js": 65744,
	"./kubernetes/helm/service.js": 40846,
	"./kubernetes/helpers/application/index.js": 57947,
	"./kubernetes/helpers/application/rollback.js": 65011,
	"./kubernetes/helpers/commonHelper.js": 61515,
	"./kubernetes/helpers/configMapHelper.js": 58007,
	"./kubernetes/helpers/configurationHelper.js": 51780,
	"./kubernetes/helpers/eventHelper.js": 52929,
	"./kubernetes/helpers/formValidationHelper.js": 54241,
	"./kubernetes/helpers/history/daemonset.js": 48367,
	"./kubernetes/helpers/history/deployment.js": 38215,
	"./kubernetes/helpers/history/index.js": 70224,
	"./kubernetes/helpers/history/statefulset.js": 47220,
	"./kubernetes/helpers/namespaceHelper.js": 7506,
	"./kubernetes/helpers/resourceQuotaHelper.js": 21458,
	"./kubernetes/helpers/resourceReservationHelper.js": 22229,
	"./kubernetes/helpers/serviceHelper.js": 57637,
	"./kubernetes/helpers/stackHelper.js": 41208,
	"./kubernetes/helpers/stackHelper.test.js": 69461,
	"./kubernetes/helpers/volumeHelper.js": 11507,
	"./kubernetes/horizontal-pod-auto-scaler/converter.js": 41247,
	"./kubernetes/horizontal-pod-auto-scaler/helper.js": 1239,
	"./kubernetes/horizontal-pod-auto-scaler/models.js": 90914,
	"./kubernetes/horizontal-pod-auto-scaler/payload.js": 85597,
	"./kubernetes/horizontal-pod-auto-scaler/rest.js": 61160,
	"./kubernetes/horizontal-pod-auto-scaler/service.js": 51866,
	"./kubernetes/ingress/constants.js": 62072,
	"./kubernetes/ingress/converter.js": 47086,
	"./kubernetes/ingress/helper.js": 7587,
	"./kubernetes/ingress/models.js": 27155,
	"./kubernetes/ingress/payloads.js": 17362,
	"./kubernetes/ingress/rest.js": 45678,
	"./kubernetes/ingress/service.js": 76706,
	"./kubernetes/metrics/metrics.js": 60299,
	"./kubernetes/metrics/rest.js": 26835,
	"./kubernetes/models/application/formValues.js": 14917,
	"./kubernetes/models/application/models/constants.js": 20783,
	"./kubernetes/models/application/models/index.js": 7172,
	"./kubernetes/models/application/payloads.js": 11505,
	"./kubernetes/models/common/params.js": 82469,
	"./kubernetes/models/common/payloads.js": 27367,
	"./kubernetes/models/config-map/models.js": 13978,
	"./kubernetes/models/config-map/payloads.js": 40879,
	"./kubernetes/models/configuration/formvalues.js": 30578,
	"./kubernetes/models/configuration/models.js": 73582,
	"./kubernetes/models/daemon-set/models.js": 12745,
	"./kubernetes/models/daemon-set/payloads.js": 82935,
	"./kubernetes/models/deploy.js": 6253,
	"./kubernetes/models/deployment/models.js": 59238,
	"./kubernetes/models/deployment/payloads.js": 95008,
	"./kubernetes/models/event/models.js": 82239,
	"./kubernetes/models/history/models.js": 24601,
	"./kubernetes/models/namespace/models.js": 35076,
	"./kubernetes/models/namespace/payloads.js": 63829,
	"./kubernetes/models/nodes-limits/models.js": 74335,
	"./kubernetes/models/port/models.js": 83270,
	"./kubernetes/models/resource-pool/formValues.js": 16496,
	"./kubernetes/models/resource-pool/models.js": 72210,
	"./kubernetes/models/resource-quota/models.js": 47685,
	"./kubernetes/models/resource-quota/payloads.js": 75976,
	"./kubernetes/models/resource-reservation/models.js": 46685,
	"./kubernetes/models/resource-types/models.js": 39212,
	"./kubernetes/models/secret/models.js": 69730,
	"./kubernetes/models/secret/payloads.js": 60622,
	"./kubernetes/models/service/models.js": 79990,
	"./kubernetes/models/service/payloads.js": 31249,
	"./kubernetes/models/stack/models.js": 31084,
	"./kubernetes/models/stateful-set/models.js": 91920,
	"./kubernetes/models/stateful-set/payloads.js": 13871,
	"./kubernetes/models/storage-class/models.js": 86871,
	"./kubernetes/models/storage-class/payload.js": 79824,
	"./kubernetes/models/volume/models.js": 72913,
	"./kubernetes/models/volume/payloads.js": 88296,
	"./kubernetes/node/converter.js": 76676,
	"./kubernetes/node/filters.js": 57067,
	"./kubernetes/node/formValues.js": 2949,
	"./kubernetes/node/helper.js": 14780,
	"./kubernetes/node/models.js": 85001,
	"./kubernetes/node/payload.js": 11801,
	"./kubernetes/node/rest.js": 9790,
	"./kubernetes/node/service.js": 6795,
	"./kubernetes/pod/converter.js": 22050,
	"./kubernetes/pod/filters.js": 15826,
	"./kubernetes/pod/models/affinities.js": 73689,
	"./kubernetes/pod/models/index.js": 31275,
	"./kubernetes/pod/payloads/affinities.js": 78398,
	"./kubernetes/pod/payloads/create.js": 61005,
	"./kubernetes/pod/service.js": 30754,
	"./kubernetes/registries/index.js": 87658,
	"./kubernetes/registries/kube-registry-access-view/index.js": 51482,
	"./kubernetes/registries/kube-registry-access-view/kube-registry-access-view.controller.js": 60124,
	"./kubernetes/rest/configMap.js": 83972,
	"./kubernetes/rest/controllerRevision.js": 20017,
	"./kubernetes/rest/daemonSet.js": 38345,
	"./kubernetes/rest/deployment.js": 36566,
	"./kubernetes/rest/endpoint.js": 85333,
	"./kubernetes/rest/event.js": 69673,
	"./kubernetes/rest/health.js": 71461,
	"./kubernetes/rest/namespace.js": 82475,
	"./kubernetes/rest/nodesLimits.js": 40912,
	"./kubernetes/rest/persistentVolumeClaim.js": 58732,
	"./kubernetes/rest/pod.js": 83699,
	"./kubernetes/rest/portainer-namespace.js": 93449,
	"./kubernetes/rest/replicaSet.js": 81056,
	"./kubernetes/rest/resourceQuota.js": 10129,
	"./kubernetes/rest/response/transform.js": 25658,
	"./kubernetes/rest/secret.js": 61588,
	"./kubernetes/rest/service.js": 68376,
	"./kubernetes/rest/serviceAccount.js": 13535,
	"./kubernetes/rest/statefulSet.js": 55594,
	"./kubernetes/rest/storage.js": 33415,
	"./kubernetes/services/applicationService.js": 94358,
	"./kubernetes/services/configMapService.js": 45819,
	"./kubernetes/services/configurationService.js": 81567,
	"./kubernetes/services/controllerRevisionService.js": 40917,
	"./kubernetes/services/daemonSetService.js": 42183,
	"./kubernetes/services/deploymentService.js": 18354,
	"./kubernetes/services/eventService.js": 3855,
	"./kubernetes/services/healthService.js": 24717,
	"./kubernetes/services/historyService.js": 18842,
	"./kubernetes/services/namespaceService.js": 44987,
	"./kubernetes/services/nodesLimitsService.js": 73774,
	"./kubernetes/services/persistentVolumeClaimService.js": 79362,
	"./kubernetes/services/replicaSetService.js": 59010,
	"./kubernetes/services/resourcePoolService.js": 22539,
	"./kubernetes/services/resourceQuotaService.js": 85927,
	"./kubernetes/services/secretService.js": 76354,
	"./kubernetes/services/serviceService.js": 7055,
	"./kubernetes/services/stackService.js": 4063,
	"./kubernetes/services/statefulSetService.js": 4165,
	"./kubernetes/services/storageService.js": 36552,
	"./kubernetes/services/volumeService.js": 78085,
	"./kubernetes/store/namespace.js": 22823,
	"./kubernetes/views/applications/applications.js": 86393,
	"./kubernetes/views/applications/applicationsController.js": 55495,
	"./kubernetes/views/applications/console/console.js": 51819,
	"./kubernetes/views/applications/console/consoleController.js": 33243,
	"./kubernetes/views/applications/create/createApplication.js": 58791,
	"./kubernetes/views/applications/create/createApplicationController.js": 8924,
	"./kubernetes/views/applications/edit/application.js": 56378,
	"./kubernetes/views/applications/edit/applicationController.js": 66485,
	"./kubernetes/views/applications/edit/components/ingress-table/ingress-table.controller.js": 20630,
	"./kubernetes/views/applications/edit/components/ingress-table/ingress-table.js": 63060,
	"./kubernetes/views/applications/edit/components/placements-datatable/controller.js": 29272,
	"./kubernetes/views/applications/edit/components/placements-datatable/index.js": 50156,
	"./kubernetes/views/applications/edit/components/services-table/services-table.js": 18137,
	"./kubernetes/views/applications/helm/helm.controller.js": 85392,
	"./kubernetes/views/applications/helm/index.js": 8180,
	"./kubernetes/views/applications/logs/logs.js": 81297,
	"./kubernetes/views/applications/logs/logsController.js": 94649,
	"./kubernetes/views/applications/stats/stats.js": 61260,
	"./kubernetes/views/applications/stats/statsController.js": 13754,
	"./kubernetes/views/cluster/cluster.js": 24924,
	"./kubernetes/views/cluster/clusterController.js": 99641,
	"./kubernetes/views/cluster/node/node.js": 64696,
	"./kubernetes/views/cluster/node/nodeController.js": 79308,
	"./kubernetes/views/cluster/node/stats/stats.js": 83490,
	"./kubernetes/views/cluster/node/stats/statsController.js": 2997,
	"./kubernetes/views/configurations/configurations.js": 56286,
	"./kubernetes/views/configurations/configurationsController.js": 35752,
	"./kubernetes/views/configurations/create/createConfiguration.js": 9022,
	"./kubernetes/views/configurations/create/createConfigurationController.js": 38646,
	"./kubernetes/views/configurations/edit/configuration.js": 78025,
	"./kubernetes/views/configurations/edit/configurationController.js": 55682,
	"./kubernetes/views/configurations/validation.js": 64987,
	"./kubernetes/views/configure/configureController.js": 71244,
	"./kubernetes/views/dashboard/dashboard.js": 15219,
	"./kubernetes/views/dashboard/dashboardController.js": 79581,
	"./kubernetes/views/deploy/deploy.js": 36661,
	"./kubernetes/views/deploy/deployController.js": 23322,
	"./kubernetes/views/resource-pools/access/resourcePoolAccess.js": 28311,
	"./kubernetes/views/resource-pools/access/resourcePoolAccessController.js": 38513,
	"./kubernetes/views/resource-pools/components/storage-class-switch/index.js": 74474,
	"./kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.controller.js": 10405,
	"./kubernetes/views/resource-pools/create/createResourcePool.js": 19777,
	"./kubernetes/views/resource-pools/create/createResourcePoolController.js": 83908,
	"./kubernetes/views/resource-pools/edit/components/ingresses-datatable/controller.js": 63009,
	"./kubernetes/views/resource-pools/edit/components/ingresses-datatable/index.js": 44474,
	"./kubernetes/views/resource-pools/edit/resourcePool.js": 85146,
	"./kubernetes/views/resource-pools/edit/resourcePoolController.js": 42310,
	"./kubernetes/views/resource-pools/resourcePools.js": 7134,
	"./kubernetes/views/resource-pools/resourcePoolsController.js": 39502,
	"./kubernetes/views/security-constraint/constraintController.js": 66046,
	"./kubernetes/views/stacks/logs/logs.js": 9981,
	"./kubernetes/views/stacks/logs/logsController.js": 39554,
	"./kubernetes/views/summary/resources/applicationResources.js": 45233,
	"./kubernetes/views/summary/resources/configurationResources.js": 3310,
	"./kubernetes/views/summary/resources/helpers.js": 60953,
	"./kubernetes/views/summary/resources/namespaceResources.js": 49113,
	"./kubernetes/views/summary/summary.js": 3117,
	"./kubernetes/views/summary/summaryController.js": 69861,
	"./kubernetes/views/volumes/components/volumes-storages-datatable/controller.js": 70302,
	"./kubernetes/views/volumes/components/volumes-storages-datatable/index.js": 1502,
	"./kubernetes/views/volumes/edit/volume.js": 61158,
	"./kubernetes/views/volumes/edit/volumeController.js": 52962,
	"./kubernetes/views/volumes/volumes.js": 49633,
	"./kubernetes/views/volumes/volumesController.js": 64539,
	"./matomo-setup.js": 63924,
	"./portainer/__module.js": 50991,
	"./portainer/components/InformationPanel/InformationPanelAngular.js": 87005,
	"./portainer/components/access-datatable/accessDatatable.js": 21366,
	"./portainer/components/access-datatable/accessDatatableController.js": 92681,
	"./portainer/components/access-table/access-table.js": 56609,
	"./portainer/components/accessControlForm/por-access-control-form.js": 3735,
	"./portainer/components/accessControlForm/porAccessControlFormController.js": 86656,
	"./portainer/components/accessControlForm/porAccessControlFormModel.js": 19898,
	"./portainer/components/accessManagement/index.js": 39372,
	"./portainer/components/accessManagement/por-access-management.js": 26001,
	"./portainer/components/accessManagement/porAccessManagementController.js": 22421,
	"./portainer/components/associated-endpoints-selector/associatedEndpointsSelector.js": 439,
	"./portainer/components/associated-endpoints-selector/associatedEndpointsSelectorController.js": 98293,
	"./portainer/components/autofocus.js": 64054,
	"./portainer/components/beta-panel/betaPanel.js": 28428,
	"./portainer/components/buttonSpinner.js": 66864,
	"./portainer/components/code-editor/code-editor.js": 58945,
	"./portainer/components/code-editor/codeEditorController.js": 85150,
	"./portainer/components/copy-button/copy-button.controller.js": 28944,
	"./portainer/components/copy-button/copy-button.js": 27816,
	"./portainer/components/custom-template-common-fields/customTemplateCommonFieldsController.js": 99614,
	"./portainer/components/custom-template-common-fields/index.js": 26453,
	"./portainer/components/custom-template-selector/custom-template-selector.controller.js": 45165,
	"./portainer/components/custom-template-selector/index.js": 16970,
	"./portainer/components/custom-templates-list/customTemplatesListController.js": 85452,
	"./portainer/components/custom-templates-list/index.js": 9578,
	"./portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.controller.js": 43926,
	"./portainer/components/datatables/access-tokens-datatable/index.js": 80127,
	"./portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.controller.js": 76752,
	"./portainer/components/datatables/datatable-columns-visibility/index.js": 13877,
	"./portainer/components/datatables/endpoints-datatable/endpointsDatatable.js": 56210,
	"./portainer/components/datatables/endpoints-datatable/endpointsDatatableController.js": 805,
	"./portainer/components/datatables/filter/datatable-filter.controller.js": 38058,
	"./portainer/components/datatables/filter/index.js": 59001,
	"./portainer/components/datatables/genericDatatableController.js": 11471,
	"./portainer/components/datatables/groups-datatable/groupsDatatable.js": 36864,
	"./portainer/components/datatables/index.js": 41101,
	"./portainer/components/datatables/pagination/index.js": 21757,
	"./portainer/components/datatables/registries-datatable/registriesDatatable.js": 44145,
	"./portainer/components/datatables/registries-datatable/registriesDatatableController.js": 63188,
	"./portainer/components/datatables/sort-icon/datatable-sort-icon.controller.js": 81749,
	"./portainer/components/datatables/sort-icon/index.js": 62040,
	"./portainer/components/datatables/stacks-datatable/stacksDatatable.js": 97203,
	"./portainer/components/datatables/stacks-datatable/stacksDatatableController.js": 97433,
	"./portainer/components/datatables/strings-datatable/index.js": 59198,
	"./portainer/components/datatables/tags-datatable/tagsDatatable.js": 96447,
	"./portainer/components/datatables/titlebar/index.js": 58973,
	"./portainer/components/datatables/users-datatable/usersDatatable.js": 59322,
	"./portainer/components/datatables/users-datatable/usersDatatableController.js": 92040,
	"./portainer/components/demo-feature-indicator/demo-feature-indicator.controller.js": 62424,
	"./portainer/components/demo-feature-indicator/index.js": 96026,
	"./portainer/components/endpointSecurity/por-endpoint-security.js": 39590,
	"./portainer/components/endpointSecurity/porEndpointSecurityController.js": 59810,
	"./portainer/components/endpointSecurity/porEndpointSecurityModel.js": 25229,
	"./portainer/components/environment-variables-panel/environment-variables-panel.controller.js": 72532,
	"./portainer/components/environment-variables-panel/environment-variables-simple-mode/environment-variables-simple-mode-item/environment-variables-simple-mode-item.controller.js": 19695,
	"./portainer/components/environment-variables-panel/environment-variables-simple-mode/environment-variables-simple-mode-item/index.js": 47254,
	"./portainer/components/environment-variables-panel/environment-variables-simple-mode/environment-variables-simple-mode.controller.js": 17272,
	"./portainer/components/environment-variables-panel/environment-variables-simple-mode/index.js": 55005,
	"./portainer/components/environment-variables-panel/index.js": 5633,
	"./portainer/components/focusIf.js": 87508,
	"./portainer/components/form-components/file-upload-form/index.js": 74075,
	"./portainer/components/form-components/index.js": 39068,
	"./portainer/components/form-components/web-editor-form/index.js": 67653,
	"./portainer/components/form-components/web-editor-form/web-editor-form.controller.js": 32340,
	"./portainer/components/forms/git-form/git-form-additional-files-panel/git-form-additional-file-item/git-form-additional-file-item.controller.js": 27190,
	"./portainer/components/forms/git-form/git-form-additional-files-panel/git-form-additional-file-item/index.js": 83208,
	"./portainer/components/forms/git-form/git-form-additional-files-panel/git-form-additional-files-panel.controller.js": 17968,
	"./portainer/components/forms/git-form/git-form-additional-files-panel/index.js": 7274,
	"./portainer/components/forms/git-form/git-form-auth-fieldset/git-form-auth-fieldset.controller.js": 10789,
	"./portainer/components/forms/git-form/git-form-auth-fieldset/index.js": 48980,
	"./portainer/components/forms/git-form/git-form-auto-update-fieldset/git-form-auto-update-fieldset.controller.js": 12847,
	"./portainer/components/forms/git-form/git-form-auto-update-fieldset/index.js": 34385,
	"./portainer/components/forms/git-form/git-form-compose-path-field/index.js": 39926,
	"./portainer/components/forms/git-form/git-form-info-panel/index.js": 78356,
	"./portainer/components/forms/git-form/git-form-ref-field/index.js": 65830,
	"./portainer/components/forms/git-form/git-form-url-field/index.js": 4680,
	"./portainer/components/forms/git-form/git-form.controller.js": 93632,
	"./portainer/components/forms/git-form/git-form.js": 97525,
	"./portainer/components/forms/git-form/index.js": 8540,
	"./portainer/components/forms/group-form/group-form.js": 95189,
	"./portainer/components/forms/group-form/groupFormController.js": 37134,
	"./portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.controller.js": 29037,
	"./portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.js": 34323,
	"./portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js": 55658,
	"./portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.js": 9509,
	"./portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.js": 48637,
	"./portainer/components/forms/registry-form-azure/registry-form-azure.js": 90018,
	"./portainer/components/forms/registry-form-custom/registry-form-custom.js": 8746,
	"./portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.js": 7744,
	"./portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.js": 84375,
	"./portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatableController.js": 56110,
	"./portainer/components/forms/registry-form-gitlab/registry-form-gitlab.js": 54470,
	"./portainer/components/forms/registry-form-proget/registry-form-proget.js": 25318,
	"./portainer/components/forms/registry-form-quay/registry-form-quay.js": 18218,
	"./portainer/components/forms/stack-from-template-form/index.js": 12281,
	"./portainer/components/forms/stack-redeploy-git-form/index.js": 7008,
	"./portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js": 20472,
	"./portainer/components/group-association-table/group-association-table.js": 87637,
	"./portainer/components/index.js": 46362,
	"./portainer/components/information-panel-offline/informationPanelOffline.js": 64654,
	"./portainer/components/information-panel-offline/informationPanelOfflineController.js": 2454,
	"./portainer/components/intervalFormat.js": 44516,
	"./portainer/components/onEnterKey.js": 45679,
	"./portainer/components/option-panel/index.js": 22730,
	"./portainer/components/option-panel/option-panel.controller.js": 25601,
	"./portainer/components/product-list/product-item/product-item.js": 46621,
	"./portainer/components/product-list/product-list.js": 38222,
	"./portainer/components/registry-details/index.js": 97554,
	"./portainer/components/sensitive-details/sensitive-details.js": 90434,
	"./portainer/components/show-hide/show-hide.js": 53712,
	"./portainer/components/slider/slider.js": 77337,
	"./portainer/components/slider/sliderController.js": 58944,
	"./portainer/components/stack-duplication-form/stack-duplication-form-controller.js": 10018,
	"./portainer/components/stack-duplication-form/stack-duplication-form.js": 37848,
	"./portainer/components/status-indicator/index.js": 91709,
	"./portainer/components/template-list/template-item/template-item.js": 44677,
	"./portainer/components/template-list/template-list-controller.js": 67620,
	"./portainer/components/template-list/template-list.js": 47177,
	"./portainer/components/template-widget.js": 38119,
	"./portainer/components/theme/theme-settings.controller.js": 30839,
	"./portainer/components/theme/theme-settings.js": 30749,
	"./portainer/environments/azure-endpoint-config/azure-endpoint-config.js": 19376,
	"./portainer/feature-flags/feature-ids.js": 24268,
	"./portainer/filters/filters.js": 41066,
	"./portainer/filters/index.js": 1740,
	"./portainer/helpers/endpointHelper.js": 70589,
	"./portainer/helpers/env-vars.js": 93994,
	"./portainer/helpers/formHelper.js": 30398,
	"./portainer/helpers/genericHelper.js": 24003,
	"./portainer/helpers/networkHelper.js": 30556,
	"./portainer/helpers/pathHelper.js": 50433,
	"./portainer/helpers/resourceControlHelper.js": 43622,
	"./portainer/helpers/stackHelper.js": 13118,
	"./portainer/helpers/tagHelper.js": 91619,
	"./portainer/helpers/templateHelper.js": 69424,
	"./portainer/helpers/urlHelper.js": 79190,
	"./portainer/helpers/webhookHelper.js": 48328,
	"./portainer/interceptors/endpointStatusInterceptor.js": 89940,
	"./portainer/models/access.js": 93133,
	"./portainer/models/dockerhub.js": 74962,
	"./portainer/models/endpoint/formValues.js": 690,
	"./portainer/models/endpoint/models.js": 13494,
	"./portainer/models/gitlabRegistry.js": 62365,
	"./portainer/models/group.js": 79607,
	"./portainer/models/registry.js": 33180,
	"./portainer/models/registryRepository.js": 64088,
	"./portainer/models/registryTypes.js": 56414,
	"./portainer/models/resourceControl/resourceControlCreatePayload.js": 74392,
	"./portainer/models/resourceControl/resourceControlOwnershipParameters.js": 1870,
	"./portainer/models/schedule.js": 82653,
	"./portainer/models/settings.js": 55287,
	"./portainer/models/stack.js": 49036,
	"./portainer/models/status.js": 95154,
	"./portainer/models/tag.js": 26410,
	"./portainer/models/team.js": 58552,
	"./portainer/models/teamMembership.js": 3010,
	"./portainer/models/template.js": 55439,
	"./portainer/models/user.js": 90327,
	"./portainer/models/webhook.js": 74708,
	"./portainer/oauth/__module.js": 77274,
	"./portainer/oauth/components/oauth-providers-selector/index.js": 21869,
	"./portainer/oauth/components/oauth-providers-selector/oauth-provider-selector.controller.js": 14537,
	"./portainer/oauth/components/oauth-settings/index.js": 10453,
	"./portainer/oauth/components/oauth-settings/oauth-settings.controller.js": 30152,
	"./portainer/oauth/components/oauth-settings/providers.js": 67879,
	"./portainer/oauth/services/rest/oauth.js": 18152,
	"./portainer/rbac/components/access-viewer/access-viewer-datatable/index.js": 3589,
	"./portainer/rbac/components/access-viewer/access-viewer.controller.js": 79657,
	"./portainer/rbac/components/access-viewer/index.js": 87208,
	"./portainer/rbac/components/roles-datatable/index.js": 77181,
	"./portainer/rbac/components/roles-datatable/roles-datatable.controller.js": 15560,
	"./portainer/rbac/index.js": 35552,
	"./portainer/rbac/models/access.js": 82853,
	"./portainer/rbac/models/role.js": 61969,
	"./portainer/rbac/services/role.rest.js": 37838,
	"./portainer/rbac/services/role.service.js": 70055,
	"./portainer/rbac/views/roles/index.js": 93239,
	"./portainer/rbac/views/roles/roles.controller.js": 60090,
	"./portainer/rest/auth.js": 95599,
	"./portainer/rest/backup.js": 59987,
	"./portainer/rest/customTemplate.js": 92179,
	"./portainer/rest/endpoint.js": 50947,
	"./portainer/rest/gitlab.js": 48664,
	"./portainer/rest/group.js": 41019,
	"./portainer/rest/registry.js": 26911,
	"./portainer/rest/resourceControl.js": 9095,
	"./portainer/rest/settings.js": 26862,
	"./portainer/rest/ssl.js": 33729,
	"./portainer/rest/stack.js": 84006,
	"./portainer/rest/status.js": 1962,
	"./portainer/rest/support.js": 3985,
	"./portainer/rest/tag.js": 69586,
	"./portainer/rest/team.js": 51406,
	"./portainer/rest/teamMembership.js": 63027,
	"./portainer/rest/template.js": 35627,
	"./portainer/rest/transform/getEndpointsTotalCount.js": 28098,
	"./portainer/rest/transform/gitlabResponseGetLink.js": 40432,
	"./portainer/rest/user.js": 88211,
	"./portainer/rest/webhooks.js": 1587,
	"./portainer/services/allSettled.js": 67808,
	"./portainer/services/api/accessService.js": 84522,
	"./portainer/services/api/backupService.js": 10273,
	"./portainer/services/api/customTemplate.js": 85903,
	"./portainer/services/api/dockerhubService.js": 91520,
	"./portainer/services/api/endpointService.js": 53249,
	"./portainer/services/api/groupService.js": 50828,
	"./portainer/services/api/registryService.js": 94094,
	"./portainer/services/api/resourceControlService.js": 17293,
	"./portainer/services/api/settingsService.js": 91532,
	"./portainer/services/api/sslService.js": 39243,
	"./portainer/services/api/stackService.js": 54332,
	"./portainer/services/api/statusService.js": 97128,
	"./portainer/services/api/supportService.js": 10754,
	"./portainer/services/api/tagService.js": 44904,
	"./portainer/services/api/teamMembershipService.js": 87643,
	"./portainer/services/api/teamService.js": 75495,
	"./portainer/services/api/templateService.js": 66656,
	"./portainer/services/api/userService.js": 96664,
	"./portainer/services/api/webhookService.js": 16856,
	"./portainer/services/async.js": 52726,
	"./portainer/services/authentication.js": 38890,
	"./portainer/services/chartService.js": 49519,
	"./portainer/services/codeMirror.js": 91112,
	"./portainer/services/datatableService.js": 99679,
	"./portainer/services/endpointProvider.js": 65187,
	"./portainer/services/fileUpload.js": 21262,
	"./portainer/services/formValidator.js": 59197,
	"./portainer/services/localStorage.js": 11189,
	"./portainer/services/nameValidator.js": 16624,
	"./portainer/services/pagination.js": 40073,
	"./portainer/services/registryGitlabService.js": 44920,
	"./portainer/services/registryModalService.js": 56858,
	"./portainer/services/session-storage.js": 85280,
	"./portainer/services/stateManager.js": 37431,
	"./portainer/services/themeManager.js": 98869,
	"./portainer/settings/authentication/auth-method-constants.js": 52855,
	"./portainer/settings/authentication/auth-type-constants.js": 98376,
	"./portainer/settings/authentication/auto-user-provision-toggle/index.js": 50552,
	"./portainer/settings/authentication/index.js": 85847,
	"./portainer/settings/authentication/ldap/ad-settings/ad-settings.controller.js": 80612,
	"./portainer/settings/authentication/ldap/ad-settings/index.js": 66509,
	"./portainer/settings/authentication/ldap/index.js": 36320,
	"./portainer/settings/authentication/ldap/ldap-connectivity-check/index.js": 18436,
	"./portainer/settings/authentication/ldap/ldap-custom-admin-group/index.js": 88996,
	"./portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.controller.js": 53864,
	"./portainer/settings/authentication/ldap/ldap-custom-group-search/index.js": 8282,
	"./portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.controller.js": 30950,
	"./portainer/settings/authentication/ldap/ldap-custom-user-search/index.js": 1093,
	"./portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.controller.js": 39525,
	"./portainer/settings/authentication/ldap/ldap-group-search-item/index.js": 82592,
	"./portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.controller.js": 55028,
	"./portainer/settings/authentication/ldap/ldap-group-search/index.js": 24791,
	"./portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.controller.js": 92459,
	"./portainer/settings/authentication/ldap/ldap-groups-datatable/index.js": 59086,
	"./portainer/settings/authentication/ldap/ldap-settings-custom/index.js": 72928,
	"./portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.controller.js": 96551,
	"./portainer/settings/authentication/ldap/ldap-settings-dn-builder/index.js": 60000,
	"./portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.controller.js": 62680,
	"./portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/index.js": 36235,
	"./portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.controller.js": 91117,
	"./portainer/settings/authentication/ldap/ldap-settings-openldap/index.js": 25702,
	"./portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.controller.js": 58962,
	"./portainer/settings/authentication/ldap/ldap-settings-security/index.js": 31939,
	"./portainer/settings/authentication/ldap/ldap-settings-test-login/index.js": 75714,
	"./portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.controller.js": 90829,
	"./portainer/settings/authentication/ldap/ldap-settings.model.js": 54512,
	"./portainer/settings/authentication/ldap/ldap-settings/index.js": 39947,
	"./portainer/settings/authentication/ldap/ldap-settings/ldap-settings.controller.js": 37556,
	"./portainer/settings/authentication/ldap/ldap-user-search-item/index.js": 16811,
	"./portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.controller.js": 93669,
	"./portainer/settings/authentication/ldap/ldap-user-search/index.js": 97299,
	"./portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.controller.js": 34188,
	"./portainer/settings/authentication/ldap/ldap-users-datatable/index.js": 84259,
	"./portainer/settings/authentication/ldap/ldap.rest.js": 39314,
	"./portainer/settings/authentication/ldap/ldap.service.js": 46951,
	"./portainer/settings/authentication/save-auth-settings-button/index.js": 93467,
	"./portainer/settings/general/index.js": 6972,
	"./portainer/settings/general/ssl-certificate/index.js": 13655,
	"./portainer/settings/general/ssl-certificate/ssl-certificate.controller.js": 12617,
	"./portainer/settings/index.js": 52744,
	"./portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.controller.js": 48557,
	"./portainer/user-activity/activity-logs-view/activity-logs-datatable/index.js": 32654,
	"./portainer/user-activity/activity-logs-view/activity-logs-view.controller.js": 38427,
	"./portainer/user-activity/activity-logs-view/activity-logs-view.js": 85331,
	"./portainer/user-activity/activity-logs-view/index.js": 9800,
	"./portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.controller.js": 91651,
	"./portainer/user-activity/auth-logs-view/auth-logs-datatable/index.js": 66823,
	"./portainer/user-activity/auth-logs-view/auth-logs-view.controller.js": 93873,
	"./portainer/user-activity/auth-logs-view/auth-logs-view.js": 8364,
	"./portainer/user-activity/auth-logs-view/index.js": 45303,
	"./portainer/user-activity/index.js": 45347,
	"./portainer/views/account/accountController.js": 68325,
	"./portainer/views/account/create-user-access-token/create-user-access-token.controller.js": 5012,
	"./portainer/views/account/create-user-access-token/index.js": 33219,
	"./portainer/views/auth/authController.js": 87374,
	"./portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js": 46581,
	"./portainer/views/custom-templates/create-custom-template-view/index.js": 31268,
	"./portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js": 77999,
	"./portainer/views/custom-templates/custom-templates-view/index.js": 17598,
	"./portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js": 31097,
	"./portainer/views/custom-templates/edit-custom-template-view/index.js": 69659,
	"./portainer/views/devices/import/importDeviceController.js": 11937,
	"./portainer/views/devices/profiles/add/addProfileController.js": 35696,
	"./portainer/views/devices/profiles/add/index.js": 91067,
	"./portainer/views/devices/profiles/edit/editProfileController.js": 21199,
	"./portainer/views/devices/profiles/edit/index.js": 42041,
	"./portainer/views/endpoint-registries/registries.js": 36582,
	"./portainer/views/endpoint-registries/registriesController.js": 54886,
	"./portainer/views/endpoints/access/endpointAccessController.js": 16962,
	"./portainer/views/endpoints/edit/endpointController.js": 80418,
	"./portainer/views/endpoints/endpoints.js": 19538,
	"./portainer/views/endpoints/endpointsController.js": 81881,
	"./portainer/views/endpoints/helpers.js": 13853,
	"./portainer/views/endpoints/kvm/endpointKVMController.js": 58118,
	"./portainer/views/endpoints/kvm/index.js": 18467,
	"./portainer/views/groups/access/groupAccessController.js": 79405,
	"./portainer/views/groups/create/createGroupController.js": 7249,
	"./portainer/views/groups/edit/groupController.js": 9149,
	"./portainer/views/groups/groupsController.js": 60160,
	"./portainer/views/init/admin/initAdminController.js": 66246,
	"./portainer/views/init/endpoint/initEndpointController.js": 88611,
	"./portainer/views/logout/logoutController.js": 95580,
	"./portainer/views/main/mainController.js": 85274,
	"./portainer/views/registries/create/createRegistry.js": 38910,
	"./portainer/views/registries/create/createRegistryController.js": 83137,
	"./portainer/views/registries/edit/registry.js": 74927,
	"./portainer/views/registries/edit/registryController.js": 66146,
	"./portainer/views/registries/registriesController.js": 6009,
	"./portainer/views/settings/authentication/settingsAuthenticationController.js": 39066,
	"./portainer/views/settings/edge-compute/index.js": 43404,
	"./portainer/views/settings/edge-compute/settingsEdgeComputeController.js": 51861,
	"./portainer/views/settings/settingsController.js": 45459,
	"./portainer/views/stacks/create/createStackController.js": 58000,
	"./portainer/views/stacks/edit/stackController.js": 84671,
	"./portainer/views/stacks/stacksController.js": 78566,
	"./portainer/views/tags/tagsController.js": 20125,
	"./portainer/views/templates/templatesController.js": 76058,
	"./portainer/views/users/edit/userController.js": 21436,
	"./portainer/views/users/usersController.js": 79614,
	"./react/components/PageHeader/ContextHelp/docURLs.js": 48780,
	"./setup-tests/global-setup.js": 68724,
	"./vendors.js": 25518
};


function webpackContext(req) {
	var id = webpackContextResolve(req);
	return __webpack_require__(id);
}
function webpackContextResolve(req) {
	if(!__webpack_require__.o(map, req)) {
		var e = new Error("Cannot find module '" + req + "'");
		e.code = 'MODULE_NOT_FOUND';
		throw e;
	}
	return map[req];
}
webpackContext.keys = function webpackContextKeys() {
	return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 80081;

}),

46666:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgArrowRightLong = function SvgArrowRightLong(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M2.015 12H23m0 0-7-7m7 7-7 7\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgArrowRightLong);//# sourceURL=webpack-internal:///46666\n");

}),

44434:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgArrowsUpdown = function SvgArrowsUpdown(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M50 87.5v-75m0 75 17.678-17.678M50 87.5 32.322 69.822M50 12.5 32.322 30.178M50 12.5l17.678 17.678\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgArrowsUpdown);//# sourceURL=webpack-internal:///44434\n");

}),

25898:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgBomb = function SvgBomb(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M39.584 91.666c17.258 0 31.25-13.99 31.25-31.25 0-17.258-13.992-31.25-31.25-31.25-17.26 0-31.25 13.992-31.25 31.25 0 17.26 13.99 31.25 31.25 31.25Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M20.834 62.5c0-11.506 9.327-20.834 20.833-20.834M71.65 9.349V4.166M85.416 14.74l3.665-3.664m-3.822 31.093 3.665 3.664M57.83 14.74l-3.665-3.664M90.651 28.35h5.182m-32.83 8.648L75 25\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgBomb);//# sourceURL=webpack-internal:///25898\n");

}),

13725:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _rect, _path, _rect2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgChecked = function SvgChecked(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 17 16\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _rect || (_rect = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", {\n    x: 1.214,\n    y: 0.5,\n    width: 15,\n    height: 15,\n    rx: 7.5,\n    fill: \"#0086C9\"\n  })), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m12.047 5.5-4.583 4.583L5.381 8\",\n    stroke: \"#fff\",\n    strokeWidth: 1.667,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _rect2 || (_rect2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", {\n    x: 1.214,\n    y: 0.5,\n    width: 15,\n    height: 15,\n    rx: 7.5,\n    stroke: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgChecked);//# sourceURL=webpack-internal:///13725\n");

}),

22944:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgCircleNotch = function SvgCircleNotch(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M37.199 10.337C20.449 15.738 8.333 31.454 8.333 50c0 23.012 18.655 41.667 41.667 41.667S91.667 73.012 91.667 50c0-18.546-12.117-34.262-28.866-39.663\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgCircleNotch);//# sourceURL=webpack-internal:///22944\n");

}),

40817:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgClockRewind = function SvgClockRewind(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m22.7 13.5-2-2-2 2M21 12a9 9 0 1 1-1.245-4.57M12 7v5l3 2\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgClockRewind);//# sourceURL=webpack-internal:///40817\n");

}),

20431:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgCompress = function SvgCompress(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M87.769 12.231 66.935 33.065m0 0H87.77m-20.834 0V12.23m-54.639.065 10.417 10.417L33.13 33.13m0 0V12.296m0 20.834H12.296m75.108 54.274L66.571 66.571m0 0v20.833m0-20.833h20.833M12.635 87.365 33.47 66.53m0 0H12.635m20.834 0v20.834\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgCompress);//# sourceURL=webpack-internal:///20431\n");

}),

81470:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgCubes = function SvgCubes(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m11.7 13.533-4.734 2.63m0 0-4.732-2.63m4.732 2.63v5.289m5.012-3.03v-4.52m0 4.52c0 .19 0 .286-.028.371a.558.558 0 0 1-.12.203c-.06.066-.144.112-.31.205L7.4 21.49c-.159.088-.238.132-.321.149a.557.557 0 0 1-.225 0c-.083-.017-.162-.061-.32-.15l-4.12-2.288c-.167-.093-.25-.14-.311-.205a.557.557 0 0 1-.12-.203c-.028-.085-.028-.18-.028-.37v-4.52c0-.191 0-.287.028-.372a.557.557 0 0 1 .12-.202c.06-.066.144-.113.31-.205l4.12-2.29c.159-.087.238-.13.321-.148a.557.557 0 0 1 .225 0c.083.017.162.061.32.149l4.12 2.289c.167.092.25.139.311.205a.558.558 0 0 1 .12.202c.028.085.028.18.028.372m0 4.52c0 .19 0 .285.028.37a.556.556 0 0 0 .119.203c.06.066.144.112.31.205l4.121 2.289c.158.088.237.132.32.149.075.015.151.015.225 0 .084-.017.163-.061.32-.15l4.12-2.288c.168-.093.25-.14.312-.205a.558.558 0 0 0 .119-.203c.028-.085.028-.18.028-.37v-4.52c0-.191 0-.287-.028-.372a.558.558 0 0 0-.12-.202c-.06-.066-.143-.113-.31-.205l-4.12-2.29c-.159-.087-.237-.13-.321-.148a.558.558 0 0 0-.224 0c-.084.017-.163.061-.32.149l-4.121 2.289c-.167.092-.25.139-.311.205a.556.556 0 0 0-.12.202c-.027.085-.027.18-.027.372m4.755-8.695L12 7.838m0 0-4.733-2.63M12 7.838v5.29m9.721.405-4.732 2.63m0 0-4.733-2.63m4.733 2.63v5.289m.022-11.355v-4.52c0-.19 0-.285-.028-.37a.556.556 0 0 0-.12-.203c-.06-.066-.143-.112-.31-.205l-4.12-2.289c-.158-.088-.237-.132-.32-.149a.557.557 0 0 0-.225 0c-.084.017-.163.061-.32.15l-4.12 2.288c-.168.093-.251.14-.312.205a.557.557 0 0 0-.119.203c-.028.085-.028.18-.028.37v4.52c0 .191 0 .287.028.372a.557.557 0 0 0 .12.202c.06.066.143.113.31.205l4.12 2.29c.158.087.237.13.32.148.075.015.151.015.225 0 .084-.017.163-.061.32-.149l4.121-2.289c.167-.092.25-.139.31-.205a.557.557 0 0 0 .12-.202c.028-.085.028-.18.028-.372Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgCubes);//# sourceURL=webpack-internal:///81470\n");

}),

41994:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgCustom = function SvgCustom(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.778-6.306 14.084-14.083 14.084C6.6 33.453.295 27.143.295 19.365.295 11.586 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.059 25.043h-7.645c-.44 0-.847-.17-1.158-.481a1.625 1.625 0 0 1-.478-1.158V15.76c0-.435.171-.847.482-1.157.31-.311.722-.482 1.158-.482h3.822a.549.549 0 0 1 0 1.095h-3.822a.54.54 0 0 0-.388.16.54.54 0 0 0-.16.388v7.642a.54.54 0 0 0 .16.387.54.54 0 0 0 .388.16h7.641a.54.54 0 0 0 .387-.16.54.54 0 0 0 .16-.387v-3.823a.549.549 0 0 1 1.096 0v3.823c0 .436-.171.848-.482 1.158-.31.31-.721.482-1.157.482l-.004-.004Zm-5.458-3.275a.547.547 0 0 1-.53-.68l.544-2.184a.544.544 0 0 1 .143-.255l5.186-5.186c.645-.645 1.765-.645 2.41 0 .32.32.499.75.499 1.203 0 .454-.178.883-.5 1.204l-5.185 5.186a.546.546 0 0 1-.255.143l-2.183.548a.58.58 0 0 1-.133.017l.004.004Zm1.04-2.452-.29 1.154 1.154-.29 5.078-5.078a.607.607 0 0 0 .178-.432.607.607 0 0 0-.178-.433.628.628 0 0 0-.865 0l-5.078 5.079Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgCustom);//# sourceURL=webpack-internal:///41994\n");

}),

33723:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDataflow1 = function SvgDataflow1(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17 20h-.2c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C12 17.72 12 16.88 12 15.2V8.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C14.28 4 15.12 4 16.8 4h.2m0 16a2 2 0 1 0 4 0 2 2 0 0 0-4 0Zm0-16a2 2 0 1 0 4 0 2 2 0 0 0-4 0ZM7 12h10M7 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm10 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDataflow1);//# sourceURL=webpack-internal:///33723\n");

}),

57960:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDataflow2 = function SvgDataflow2(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M4 18v-.2c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C6.28 13 7.12 13 8.8 13h6.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C20 15.28 20 16.12 20 17.8v.2M4 18a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm16 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm0 0V8M6 8h12c.932 0 1.398 0 1.765-.152a2 2 0 0 0 1.083-1.083C21 6.398 21 5.932 21 5c0-.932 0-1.398-.152-1.765a2 2 0 0 0-1.083-1.083C19.398 2 18.932 2 18 2H6c-.932 0-1.398 0-1.765.152a2 2 0 0 0-1.083 1.083C3 3.602 3 4.068 3 5c0 .932 0 1.398.152 1.765a2 2 0 0 0 1.083 1.083C4.602 8 5.068 8 6 8Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDataflow2);//# sourceURL=webpack-internal:///57960\n");

}),

2154:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgExpand = function SvgExpand(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M66.667 33.333 87.5 12.5m0 0H66.667m20.833 0v20.833m-54.167 0L12.5 12.5m0 0v20.833m0-20.833h20.833m0 54.167L12.5 87.5m0 0h20.833m-20.833 0V66.667m54.167 0L87.5 87.5m0 0V66.667m0 20.833H66.667\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgExpand);//# sourceURL=webpack-internal:///2154\n");

}),

5320:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgFileCode = function SvgFileCode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M58.333 9.457v17.21c0 2.334 0 3.5.455 4.392a4.167 4.167 0 0 0 1.82 1.82c.892.455 2.059.455 4.392.455h17.21M58.334 72.917 68.75 62.5 58.333 52.084m-16.666 0L31.25 62.5l10.417 10.417m41.666-31.3v30.05c0 7 0 10.5-1.362 13.175a12.5 12.5 0 0 1-5.463 5.462c-2.674 1.363-6.174 1.363-13.175 1.363H36.667c-7.001 0-10.501 0-13.175-1.363a12.5 12.5 0 0 1-5.463-5.462c-1.362-2.674-1.362-6.174-1.362-13.175V28.333c0-7 0-10.5 1.362-13.174a12.5 12.5 0 0 1 5.463-5.463c2.674-1.362 6.174-1.362 13.175-1.362h13.382c3.057 0 4.586 0 6.025.345a12.5 12.5 0 0 1 3.613 1.496c1.261.773 2.342 1.854 4.504 4.016l13.284 13.285c2.162 2.162 3.243 3.242 4.016 4.504a12.498 12.498 0 0 1 1.497 3.613c.345 1.439.345 2.967.345 6.025Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgFileCode);//# sourceURL=webpack-internal:///5320\n");

}),

10938:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgFileSignature = function SvgFileSignature(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M58.333 9.457v17.21c0 2.334 0 3.5.455 4.392a4.167 4.167 0 0 0 1.82 1.82c.892.455 2.058.455 4.392.455h17.21M37.5 66.667 45.833 75l18.75-18.75m-6.25-47.916H36.667c-7.001 0-10.501 0-13.175 1.362a12.5 12.5 0 0 0-5.463 5.463c-1.362 2.673-1.362 6.174-1.362 13.175v43.333c0 7 0 10.5 1.362 13.175a12.5 12.5 0 0 0 5.463 5.462c2.674 1.363 6.174 1.363 13.175 1.363h26.666c7.001 0 10.501 0 13.175-1.363a12.5 12.5 0 0 0 5.463-5.462c1.362-2.674 1.362-6.174 1.362-13.175V33.333l-25-25Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgFileSignature);//# sourceURL=webpack-internal:///10938\n");

}),

8943:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgFileUpload = function SvgFileUpload(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    className: \"file-upload_svg__feather file-upload_svg__feather-book\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgFileUpload);//# sourceURL=webpack-internal:///8943\n");

}),

87264:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgFlask = function SvgFlask(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M37.5 25v18.755c0 2.296 0 3.444-.286 4.507a8.333 8.333 0 0 1-1.232 2.631c-.634.9-1.516 1.636-3.28 3.105L17.299 66.836c-1.764 1.47-2.646 2.204-3.28 3.105a8.333 8.333 0 0 0-1.232 2.63c-.286 1.064-.286 2.212-.286 4.508v1.255c0 4.667 0 7 .908 8.783a8.334 8.334 0 0 0 3.642 3.642c1.783.908 4.116.908 8.783.908h48.334c4.667 0 7 0 8.783-.908a8.334 8.334 0 0 0 3.642-3.642c.908-1.783.908-4.116.908-8.784V77.08c0-2.296 0-3.444-.286-4.507a8.333 8.333 0 0 0-1.232-2.631c-.634-.901-1.516-1.636-3.28-3.105L67.299 53.998c-1.764-1.47-2.646-2.204-3.28-3.105a8.335 8.335 0 0 1-1.232-2.63c-.286-1.064-.286-2.212-.286-4.508V25m-27.917 0h30.834c1.166 0 1.75 0 2.195-.227.392-.2.711-.518.91-.91.228-.446.228-1.03.228-2.196v-10c0-1.167 0-1.75-.227-2.196-.2-.392-.519-.71-.91-.91-.446-.227-1.03-.227-2.196-.227H34.583c-1.166 0-1.75 0-2.195.227-.392.2-.711.518-.91.91-.228.446-.228 1.03-.228 2.196v10c0 1.167 0 1.75.227 2.196.2.392.518.71.91.91.446.227 1.03.227 2.196.227ZM22.917 70.834h54.166c1.936 0 2.904 0 3.71.16a8.333 8.333 0 0 1 6.547 6.547c.16.805.16 1.773.16 3.71 0 1.935 0 2.903-.16 3.708a8.333 8.333 0 0 1-6.548 6.548c-.805.16-1.773.16-3.709.16H22.917c-1.936 0-2.904 0-3.71-.16a8.333 8.333 0 0 1-6.547-6.548c-.16-.805-.16-1.773-.16-3.709 0-1.936 0-2.904.16-3.709a8.333 8.333 0 0 1 6.548-6.547c.805-.16 1.773-.16 3.709-.16Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgFlask);//# sourceURL=webpack-internal:///87264\n");

}),

91079:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgGit = function SvgGit(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M27.363 17.908 15.537 5.66a2.121 2.121 0 0 0-3.075 0l-2.364 2.45 3.212 3.326c.255-.109.535-.17.829-.17 1.202 0 2.177 1.01 2.177 2.255 0 .304-.058.594-.164.859l3.075 3.185c.256-.11.535-.17.83-.17 1.202 0 2.176 1.01 2.176 2.255 0 1.245-.974 2.255-2.177 2.255-1.202 0-2.177-1.01-2.177-2.255 0-.304.058-.594.164-.859l-3.067-3.177v8.025a2.258 2.258 0 0 1 1.34 2.082c0 1.246-.975 2.255-2.178 2.255-1.202 0-2.177-1.01-2.177-2.255 0-.938.553-1.742 1.34-2.082v-8.035a2.258 2.258 0 0 1-1.34-2.083c0-.304.059-.594.164-.858L8.913 9.336.637 17.908c-.85.88-.85 2.304 0 3.184L12.463 33.34c.85.88 2.225.88 3.074 0l11.826-12.248c.85-.88.85-2.305 0-3.184Z\",\n    fill: \"#E15B39\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgGit);//# sourceURL=webpack-internal:///91079\n");

}),

3831:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgHacker = function SvgHacker(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M43.542 76.025c4.057-1.836 9.097-1.836 13.154 0m-17.007-6.086c5.137 4.023 5.137 10.545 0 14.569-5.137 4.023-13.466 4.023-18.603 0-5.137-4.024-5.137-10.546 0-14.57 5.137-4.022 13.466-4.022 18.603 0Zm39.463 0c5.137 4.023 5.137 10.545 0 14.569-5.137 4.023-13.466 4.023-18.603 0-5.137-4.024-5.137-10.546 0-14.57 5.137-4.022 13.466-4.022 18.603 0ZM28.714 40.747C15.866 42.067 8.27 45.065 8.27 47.982c0 4.276 18.683 7.743 41.729 7.743s41.73-3.467 41.73-7.743c0-2.51-6.697-5.406-16.676-6.82M28.854 40.24l8.519-25.635 8.47 5.987s5.948-2.493 9.317-3.95c4.767-2.063 11.72-4.167 11.72-4.167l3.991 13.882 3.99 13.883\",\n    stroke: \"#000\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgHacker);//# sourceURL=webpack-internal:///3831\n");

}),

53265:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgHeartbeat = function SvgHeartbeat(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M15.5 11.5h-1l-1.5 3-2-6-1.5 3h-1m3.493-6.364c-2-2.338-5.333-2.966-7.838-.826s-2.858 5.719-.89 8.25c1.485 1.912 5.706 5.751 7.683 7.515.363.324.545.486.758.55.184.055.39.055.575 0 .212-.064.394-.226.757-.55 1.977-1.764 6.198-5.603 7.684-7.515 1.967-2.531 1.658-6.132-.89-8.25-2.549-2.118-5.84-1.512-7.839.826Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgHeartbeat);//# sourceURL=webpack-internal:///53265\n");

}),

10424:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgLaptopCode = function SvgLaptopCode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 25 25\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M21.089 16.592v-8.8c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874c-.428-.218-.988-.218-2.108-.218h-11.6c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874c-.218.428-.218.988-.218 2.108v8.8m1.666 4h14.667c.62 0 .93 0 1.184-.068a2 2 0 0 0 1.414-1.415c.069-.254.069-.564.069-1.184 0-.31 0-.465-.034-.592a1 1 0 0 0-.708-.707c-.127-.034-.282-.034-.592-.034H3.422c-.31 0-.465 0-.592.034a1 1 0 0 0-.707.707c-.034.127-.034.282-.034.592 0 .62 0 .93.068 1.184a2 2 0 0 0 1.414 1.415c.254.068.564.068 1.184.068Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m14.089 13.582 2.5-2.5-2.5-2.5m-4 0-2.5 2.5 2.5 2.5\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgLaptopCode);//# sourceURL=webpack-internal:///10424\n");

}),

89643:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgLaptop = function SvgLaptop(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 25\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M21 16.592v-8.8c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874c-.428-.218-.988-.218-2.108-.218H6.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C3 6.112 3 6.672 3 7.792v8.8m1.667 4h14.666c.62 0 .93 0 1.185-.068a2 2 0 0 0 1.414-1.415c.068-.254.068-.564.068-1.184 0-.31 0-.465-.034-.592a1 1 0 0 0-.707-.707c-.127-.034-.282-.034-.592-.034H3.333c-.31 0-.465 0-.592.034a1 1 0 0 0-.707.707C2 17.46 2 17.615 2 17.925c0 .62 0 .93.068 1.184a2 2 0 0 0 1.414 1.415c.255.068.565.068 1.185.068Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgLaptop);//# sourceURL=webpack-internal:///89643\n");

}),

82942:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgLdap = function SvgLdap(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 79 44\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m45.322 11.32 9.313 15.984 9.317 15.982H26.693l9.313-15.982 9.316-15.985ZM64.157 38.703H79l-9.316-15.985L60.37 6.737 52.95 19.473l6.213 10.666 4.994 8.564ZM31.93 29.558l-3.985-6.84L18.63 6.737 9.316 22.718 0 38.703H26.6l2.615-4.487 2.716-4.659ZM33.295 27.224l.468-.801L40.421 15 31.78.175l-7.123 12.223 5.869 10.07 2.77 4.756Z\",\n    fill: \"#CB2026\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgLdap);//# sourceURL=webpack-internal:///82942\n");

}),

22435:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgMagicWand = function SvgMagicWand(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m54.167 58.334-12.5-12.5m20.876-31.25v-6.25m16.414 12.752 4.42-4.42m-4.42 37.5 4.42 4.42m-37.5-37.5-4.42-4.42M85.46 37.5h6.25M25.548 86.953l38.488-38.489c1.65-1.65 2.475-2.475 2.784-3.426a4.167 4.167 0 0 0 0-2.575c-.309-.952-1.134-1.777-2.784-3.427l-3.072-3.072c-1.65-1.65-2.475-2.475-3.426-2.784a4.167 4.167 0 0 0-2.575 0c-.952.31-1.777 1.134-3.427 2.784L13.047 74.453c-1.65 1.65-2.475 2.475-2.784 3.426a4.166 4.166 0 0 0 0 2.575c.31.952 1.134 1.777 2.784 3.427l3.072 3.072c1.65 1.65 2.476 2.475 3.427 2.784a4.167 4.167 0 0 0 2.575 0c.951-.31 1.776-1.134 3.427-2.784Z\",\n    stroke: \"#000\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgMagicWand);//# sourceURL=webpack-internal:///22435\n");

}),

98650:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgMagic = function SvgMagic(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m13 14-3-3m5.01-7.5V2m3.94 3.06L20.01 4m-1.06 9 1.06 1.06m-9-9L9.95 4m10.56 5h1.5M6.131 20.869l9.238-9.238c.396-.396.594-.594.668-.822a1 1 0 0 0 0-.618c-.074-.228-.272-.426-.668-.822l-.737-.738c-.397-.396-.595-.594-.823-.668a1 1 0 0 0-.618 0c-.228.074-.426.272-.822.668L3.13 17.87c-.396.396-.594.594-.668.822a1 1 0 0 0 0 .618c.074.228.272.426.668.822l.738.738c.396.396.594.594.822.668a1 1 0 0 0 .618 0c.228-.074.426-.272.822-.668Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgMagic);//# sourceURL=webpack-internal:///98650\n");

}),

83203:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgMemory = function SvgMemory(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.5 18.3v2.58m2.5-9.84v-3M5.5 18.3v2.58M10 18.3v2.58m0-2.58h5.2c1.68 0 4.658 0 5.3-.327a3 3 0 0 0 1.311-1.311c.243-.477.305-1.183.322-2.142M10 18.3H8.8c-1.68 0-4.52 0-5.162-.327a3 3 0 0 1-1.311-1.311c-.243-.477-.305-1.183-.321-2.142M19 18.3v2.58m-6.88-9.84v-3m-5.04 3v-3m-5.074 6.48C2 14.188 2 13.932 2 13.5V8.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C4.28 4 7.12 4 8.8 4h6.4c1.68 0 4.658 0 5.3.327a3 3 0 0 1 1.311 1.311c.327.642.327 1.482.327 3.162v4.7c0 .432 0 .688-.006 1.02m-20.126 0h20.127\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgMemory);//# sourceURL=webpack-internal:///83203\n");

}),

89830:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgOauth = function SvgOauth(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m22.975 15.318-2.522-7.789H3.773l-2.522 7.789s-2.98 7.886 3.98 12.735c6.34 4.42 6.882 4.956 6.882 4.956s.542-.538 6.882-4.956c6.96-4.849 3.98-12.735 3.98-12.735Z\",\n    fill: \"#F4552A\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m12.115 7.605 2.688 7.678 8.185.166-6.524 4.91 2.371 7.78-6.72-4.642-6.72 4.642 2.371-7.78-6.524-4.91 8.185-.166 2.688-7.678Z\",\n    fill: \"#fff\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgOauth);//# sourceURL=webpack-internal:///89830\n");

}),

50854:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgObjectGroup = function SvgObjectGroup(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M19 7v10M5 7v10M17 5H7m10 14H7M4.6 7h.8c.56 0 .84 0 1.054-.109a1 1 0 0 0 .437-.437C7 6.24 7 5.96 7 5.4v-.8c0-.56 0-.84-.109-1.054a1 1 0 0 0-.437-.437C6.24 3 5.96 3 5.4 3h-.8c-.56 0-.84 0-1.054.109a1 1 0 0 0-.437.437C3 3.76 3 4.04 3 4.6v.8c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437C3.76 7 4.04 7 4.6 7Zm0 14h.8c.56 0 .84 0 1.054-.109a1 1 0 0 0 .437-.437C7 20.24 7 19.96 7 19.4v-.8c0-.56 0-.84-.109-1.054a1 1 0 0 0-.437-.437C6.24 17 5.96 17 5.4 17h-.8c-.56 0-.84 0-1.054.109a1 1 0 0 0-.437.437C3 17.76 3 18.04 3 18.6v.8c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437C3.76 21 4.04 21 4.6 21Zm14-14h.8c.56 0 .84 0 1.054-.109a1 1 0 0 0 .437-.437C21 6.24 21 5.96 21 5.4v-.8c0-.56 0-.84-.109-1.054a1 1 0 0 0-.437-.437C20.24 3 19.96 3 19.4 3h-.8c-.56 0-.84 0-1.054.109a1 1 0 0 0-.437.437C17 3.76 17 4.04 17 4.6v.8c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437C17.76 7 18.04 7 18.6 7Zm0 14h.8c.56 0 .84 0 1.054-.109a1 1 0 0 0 .437-.437C21 20.24 21 19.96 21 19.4v-.8c0-.56 0-.84-.109-1.054a1 1 0 0 0-.437-.437C20.24 17 19.96 17 19.4 17h-.8c-.56 0-.84 0-1.054.109a1 1 0 0 0-.437.437C17 17.76 17 18.04 17 18.6v.8c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437C17.76 21 18.04 21 18.6 21Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgObjectGroup);//# sourceURL=webpack-internal:///50854\n");

}),

36217:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgPalette = function SvgPalette(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M2 12c0 5.523 4.477 10 10 10a3 3 0 0 0 3-3v-.5c0-.464 0-.697.026-.892a3 3 0 0 1 2.582-2.582c.195-.026.428-.026.892-.026h.5a3 3 0 0 0 3-3c0-5.523-4.477-10-10-10S2 6.477 2 12Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M7 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM16 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM10 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgPalette);//# sourceURL=webpack-internal:///36217\n");

}),

86020:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgPlaceholder = function SvgPlaceholder(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 752 752\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M552.21 372.31c-1.11-1.848-2.586-2.957-4.434-3.324l-36.203-9.235c-4.062-1.109-8.128 1.477-8.867 5.543l-8.129 32.88-31.395-7.762-1.476-.371c-1.848-.371-4.063 0-5.543.738-1.848 1.11-2.957 2.586-3.324 4.433l-8.13 32.88-32.878-8.13c-4.063-1.109-8.13 1.477-8.868 5.544l-8.863 32.508-32.879-8.13c-1.848-.37-4.062 0-5.543.739-1.848 1.11-2.957 2.586-3.324 4.434l-.738 2.957-8.496 34.723c-1.11 4.062 1.476 8.128 5.543 8.867l143.33 35.832c1.847.37 3.324.738 5.171.738 9.235 0 17.73-6.281 19.95-15.516l36.202-144.81c.368-1.848-.003-3.691-1.109-5.539zm-137.05 63.535 32.137 8.129c1.848.738 4.434.371 6.281-.738s3.324-3.325 3.324-5.543l6.282-25.488 20.688 27.336-10.344 41.375-65.754-16.625zm87.547 83.117c-.738 3.324-4.063 5.172-7.02 4.434l-136.31-33.984 5.172-20.316 113.04 28.445c.371 0 1.11.37 1.477.37h.371c.371 0 .738 0 1.477-.37h.37c.74 0 1.11-.371 1.477-.739 1.848-1.11 2.957-2.586 3.325-4.433l12.93-52.086c.37-2.215 0-4.434-1.11-6.281l-18.102-23.641 17.73 4.433c4.063 1.11 8.13-1.476 8.867-5.543l8.13-32.879 22.163 5.543zM351.62 434.37c4.063 0 7.387-3.324 7.387-7.387V393h33.617c4.062 0 7.386-3.324 7.386-7.386v-33.617h33.617c4.063 0 7.387-3.325 7.387-7.387v-33.984h30.293c4.063 0 7.387-3.324 7.387-7.387v-65.39a20.653 20.653 0 0 0-20.688-20.689h-235.31a20.653 20.653 0 0 0-20.688 20.688v215a20.653 20.653 0 0 0 20.688 20.688h87.55c4.063 0 7.388-3.324 7.388-7.387V434.75zm33.617-56.148H351.62c-4.063 0-7.387 3.324-7.387 7.387v33.984h-91.242v-22.535l28.812-21.797 25.121 14.406c2.957 1.476 6.281 1.11 8.867-1.11l55.043-53.195 14.406 11.453zm-82.379 80.16h-80.164c-3.324 0-5.91-2.586-5.91-5.91v-214.62c0-3.324 2.586-5.91 5.91-5.91h235.31c3.324 0 5.91 2.585 5.91 5.91v58.367h-29.922c-4.062 0-7.387 3.324-7.387 7.386v33.984h-29.55l-21.798-17.363c-2.957-2.214-7.019-2.214-9.605.372l-56.148 53.566-24.383-14.04c-2.586-1.476-5.91-1.476-8.129.372L241.16 387.46c-1.848 1.476-2.957 3.695-2.957 5.91v33.988c0 1.848.738 3.695 2.215 5.172 1.476 1.476 3.324 2.215 5.172 2.215h57.258z\",\n    fill: \"currentColor\",\n    stroke: \"currentColor\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M277 329.09c18.469 0 33.246-15.145 33.246-33.246 0-18.469-15.145-33.246-33.246-33.246-18.469 0-33.246 15.145-33.246 33.246-.371 18.102 14.777 33.246 33.246 33.246zm0-52.086c10.344 0 18.469 8.496 18.469 18.469 0 10.344-8.496 18.469-18.469 18.469-10.344 0-18.469-8.496-18.469-18.469-.371-10.34 8.125-18.469 18.469-18.469z\",\n    fill: \"currentColor\",\n    stroke: \"currentColor\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgPlaceholder);//# sourceURL=webpack-internal:///86020\n");

}),

70799:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgPlug = function SvgPlug(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M50 74.401c18.116 0 32.801-14.685 32.801-32.8V24.583H66.396M50 74.401c-18.115 0-32.8-14.685-32.8-32.8V24.583h49.196M50 74.401c0 10.15 0 21.389 16.396 21.389h5.363m-5.363-71.206V4.21M33.572 24.584V4.21\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgPlug);//# sourceURL=webpack-internal:///70799\n");

}),

5386:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgRestoreWindow = function SvgRestoreWindow(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M10.5 2.003c-.675.009-1.08.048-1.408.215a2 2 0 0 0-.874.874c-.167.328-.206.733-.215 1.408M19.5 2.003c.675.009 1.08.048 1.408.215a2 2 0 0 1 .874.874c.167.328.206.733.215 1.408m0 9c-.009.675-.048 1.08-.215 1.408a2 2 0 0 1-.874.874c-.328.167-.733.206-1.408.215M22 8v2m-8-8h2M5.2 22h7.6c1.12 0 1.68 0 2.108-.218a2 2 0 0 0 .874-.874C16 20.48 16 19.92 16 18.8v-7.6c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874C14.48 8 13.92 8 12.8 8H5.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C2 9.52 2 10.08 2 11.2v7.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C3.52 22 4.08 22 5.2 22Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgRestoreWindow);//# sourceURL=webpack-internal:///5386\n");

}),

29627:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgRestore = function SvgRestore(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M16 5.443v-.8c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874c-.428-.218-.988-.218-2.108-.218h-1.6c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C8 2.963 8 3.523 8 4.643v.8m-5 0h18m-2 0v11.2c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311c-.642.327-1.482.327-3.162.327H9.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.31C5 19.163 5 18.322 5 16.642v-11.2m7 11.062v-6m0 0 3 3m-3-3-3 3\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgRestore);//# sourceURL=webpack-internal:///29627\n");

}),

866:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgRocket = function SvgRocket(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m13 11-9.5 9.5M14.018 3.538a22.614 22.614 0 0 1 3.483 2.855 22.61 22.61 0 0 1 2.876 3.515M9.255 7.896 6.38 6.938a1 1 0 0 0-.962.185L2.56 9.541a1 1 0 0 0 .3 1.701l2.708.998m6.113 6.112.997 2.708a1 1 0 0 0 1.702.3l2.417-2.857a1 1 0 0 0 .186-.962l-.959-2.875M19.348 2.27l-4.906.817a2.443 2.443 0 0 0-1.383.741L6.446 10.9a4.652 4.652 0 0 0 6.576 6.575l7.07-6.613c.391-.367.652-.853.74-1.382l.818-4.907a2 2 0 0 0-2.302-2.301Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgRocket);//# sourceURL=webpack-internal:///866\n");

}),

48942:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgRoute = function SvgRoute(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M11.5 5h.434c3.048 0 4.571 0 5.15.547a2 2 0 0 1 .586 1.845c-.156.781-1.4 1.66-3.888 3.42l-4.064 2.876c-2.488 1.76-3.732 2.639-3.888 3.42a2 2 0 0 0 .586 1.845c.579.547 2.102.547 5.15.547h.934M8 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm14 14a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgRoute);//# sourceURL=webpack-internal:///48942\n");

}),

94754:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgShare = function SvgShare(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M20.791 12.607c.244-.209.366-.313.411-.438a.5.5 0 0 0 0-.338c-.045-.124-.167-.23-.41-.438L12.32 4.132c-.42-.36-.63-.54-.809-.545a.5.5 0 0 0-.4.184C11 3.91 11 4.186 11 4.74v4.296a9.666 9.666 0 0 0-8 9.516v.612a11.4 11.4 0 0 1 8-4.092v4.19c0 .553 0 .83.112.968a.5.5 0 0 0 .4.184c.178-.005.388-.185.809-.545l8.47-7.26Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgShare);//# sourceURL=webpack-internal:///94754\n");

}),

71530:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgSort = function SvgSort(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17 4v16m0 0-4-4m4 4 4-4M7 20V4m0 0L3 8m4-4 4 4\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgSort);//# sourceURL=webpack-internal:///71530\n");

}),

27788:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgTachometer = function SvgTachometer(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17.745 16a7.026 7.026 0 0 0 1.094-5.5M6.255 16a7 7 0 0 1 6.982-10.891M16.5 7.5 12 12m10 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-9 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgTachometer);//# sourceURL=webpack-internal:///27788\n");

}),

85398:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgTag2 = function SvgTag2(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M8 8h.01M2 5.2v4.475c0 .489 0 .733.055.963.05.204.13.4.24.579.123.201.296.374.642.72l7.669 7.669c1.188 1.188 1.782 1.782 2.467 2.004a3 3 0 0 0 1.854 0c.685-.222 1.28-.816 2.467-2.004l2.212-2.212c1.188-1.188 1.782-1.782 2.004-2.467a3 3 0 0 0 0-1.854c-.222-.685-.816-1.28-2.004-2.467l-7.669-7.669c-.346-.346-.519-.519-.72-.642a2.001 2.001 0 0 0-.579-.24C10.409 2 10.165 2 9.676 2H5.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C2 3.52 2 4.08 2 5.2Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgTag2);//# sourceURL=webpack-internal:///85398\n");

}),

45230:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgTags = function SvgTags(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m21 11-7.594-7.594c-.519-.519-.778-.778-1.081-.964a3.001 3.001 0 0 0-.867-.36C11.112 2 10.745 2 10.012 2H6m1.928 7.857h.01M3 8.7v1.975c0 .489 0 .733.055.963.05.204.13.4.24.579.123.201.296.374.642.72l7.8 7.8c.792.792 1.188 1.188 1.645 1.337a2 2 0 0 0 1.236 0c.457-.149.853-.545 1.645-1.337l2.474-2.474c.792-.792 1.188-1.188 1.337-1.645a2 2 0 0 0 0-1.236c-.149-.457-.545-.853-1.337-1.645l-7.3-7.3c-.346-.346-.519-.519-.72-.642a2.001 2.001 0 0 0-.579-.24c-.23-.055-.474-.055-.963-.055H6.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C3 7.02 3 7.58 3 8.7Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgTags);//# sourceURL=webpack-internal:///45230\n");

}),

1241:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgTemplate = function SvgTemplate(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.778-6.306 14.084-14.083 14.084C6.6 33.453.295 27.143.295 19.365.295 11.586 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M19.353 15.103a.611.611 0 0 0-.703-.703l-2.07.345a14.46 14.46 0 0 1 2.428 2.432l.345-2.074Zm-.79 3.496a13.128 13.128 0 0 0-1.555-1.87 13.13 13.13 0 0 0-1.85-1.542l-2.273 2.43a.546.546 0 0 1-.015.015l-1.694 1.81a2.218 2.218 0 0 0-.297 2.631l3.404-3.403a.6.6 0 1 1 .848.848l-3.39 3.39a2.218 2.218 0 0 0 2.57-.331l1.808-1.692a.626.626 0 0 1 .02-.02l2.424-2.266Zm-1.334 2.89 2.182-2.04a2.08 2.08 0 0 0 .63-1.178l.496-2.97a1.811 1.811 0 0 0-2.084-2.085l-2.972.495a2.08 2.08 0 0 0-1.176.63l-2.041 2.183-1.376-.459a1.205 1.205 0 0 0-1.16.223l-1.73 1.464a1.206 1.206 0 0 0 .361 2.052l1.102.406a3.42 3.42 0 0 0 .55 2.73L8.53 24.424a.6.6 0 1 0 .848.848l1.49-1.49a3.421 3.421 0 0 0 2.675.512l.406 1.1a1.206 1.206 0 0 0 2.052.362l1.464-1.73c.271-.321.356-.76.223-1.16l-.459-1.376Zm-.964.902-1.135 1.062a3.43 3.43 0 0 1-.479.375l.424 1.15.001.003.003.001m.004 0 .002-.002 1.464-1.73a.006.006 0 0 0 0-.005l-.284-.854m-6.34-3.29a3.43 3.43 0 0 1 .375-.478l1.062-1.135-.854-.285-.005.001-1.73 1.464-.003.002\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgTemplate);//# sourceURL=webpack-internal:///1241\n");

}),

57471:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgAuto = function SvgAuto(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M15.53 15.568a4.19 4.19 0 0 0-2.066-.06 4.16 4.16 0 0 0-1.838.933 4.093 4.093 0 0 0-1.153 1.695.64.64 0 0 1-.814.384.628.628 0 0 1-.388-.804 5.352 5.352 0 0 1 1.508-2.217 5.44 5.44 0 0 1 2.404-1.22 5.479 5.479 0 0 1 2.7.079c.877.25 1.675.715 2.32 1.351l1.384 1.285v-1.693c0-.348.285-.63.637-.63.352 0 .638.282.638.63v3.15c0 .348-.286.63-.638.63h-3.187a.634.634 0 0 1-.637-.63c0-.348.285-.63.637-.63h1.578l-1.292-1.2-.014-.014a4.153 4.153 0 0 0-1.78-1.039ZM7.9 20.551c0-.348.286-.63.638-.63h3.187c.352 0 .637.282.637.63 0 .348-.285.63-.637.63h-1.578l1.292 1.2.014.014a4.19 4.19 0 0 0 3.845 1.1 4.16 4.16 0 0 0 1.838-.934c.523-.46.92-1.043 1.153-1.695a.64.64 0 0 1 .814-.384.628.628 0 0 1 .388.804 5.352 5.352 0 0 1-1.508 2.216 5.44 5.44 0 0 1-2.404 1.22c-.893.2-1.822.173-2.701-.078a5.432 5.432 0 0 1-2.32-1.351l-1.383-1.286v1.694c0 .348-.285.63-.637.63a.634.634 0 0 1-.638-.63v-3.15Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgAuto);//# sourceURL=webpack-internal:///57471\n");

}),

96112:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDarkmode = function SvgDarkmode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M14.424 13.758a.624.624 0 0 1-.042.684 3.324 3.324 0 0 0 .329 4.361 3.42 3.42 0 0 0 4.413.325.644.644 0 0 1 .691-.042c.22.122.345.36.322.607a5.711 5.711 0 0 1-1.19 2.988 5.813 5.813 0 0 1-2.626 1.89 5.881 5.881 0 0 1-3.241.204 5.836 5.836 0 0 1-2.847-1.546 5.73 5.73 0 0 1-1.564-2.814 5.686 5.686 0 0 1 .206-3.204 5.753 5.753 0 0 1 1.913-2.595 5.855 5.855 0 0 1 3.022-1.176.64.64 0 0 1 .614.318Zm-1.746 1.231c-.396.154-.77.364-1.11.624a4.491 4.491 0 0 0-1.494 2.026 4.44 4.44 0 0 0-.161 2.502 4.475 4.475 0 0 0 1.221 2.197 4.556 4.556 0 0 0 2.223 1.207c.842.186 1.72.13 2.531-.159a4.539 4.539 0 0 0 2.05-1.476c.263-.336.475-.706.632-1.097a4.715 4.715 0 0 1-1.809.22 4.69 4.69 0 0 1-2.952-1.339 4.588 4.588 0 0 1-1.353-2.918 4.562 4.562 0 0 1 .222-1.787Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDarkmode);//# sourceURL=webpack-internal:///96112\n");

}),

56342:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgHighcontrastmode = function SvgHighcontrastmode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M8.722 19.186a10.574 10.574 0 0 0 1.391 1.844c1.026 1.081 2.451 2.076 4.21 2.076 1.76 0 3.185-.995 4.21-2.076a10.571 10.571 0 0 0 1.392-1.844 10.57 10.57 0 0 0-1.391-1.844c-1.026-1.081-2.451-2.076-4.21-2.076-1.76 0-3.185.995-4.21 2.076a10.573 10.573 0 0 0-1.392 1.844Zm11.931 0 .57-.282-.001-.002-.002-.004-.007-.013a4.228 4.228 0 0 0-.111-.204 11.842 11.842 0 0 0-1.638-2.202c-1.133-1.193-2.872-2.473-5.14-2.473-2.27 0-4.008 1.28-5.14 2.474a11.846 11.846 0 0 0-1.639 2.201 7.223 7.223 0 0 0-.111.204l-.007.013-.002.004v.001s-.001.001.569.283l-.57-.282a.624.624 0 0 0 0 .564l.57-.282-.57.282v.002l.003.004.007.013a4.443 4.443 0 0 0 .111.203 11.84 11.84 0 0 0 1.638 2.202c1.133 1.194 2.872 2.474 5.14 2.474 2.27 0 4.008-1.28 5.14-2.474a11.836 11.836 0 0 0 1.639-2.202 7.552 7.552 0 0 0 .111-.203l.007-.013.002-.004v-.001s.001-.001-.569-.283Zm0 0 .57.282a.624.624 0 0 0 0-.564l-.57.282Zm-6.33-1.076c-.6 0-1.088.482-1.088 1.076 0 .594.487 1.076 1.088 1.076.602 0 1.09-.482 1.09-1.076 0-.595-.488-1.076-1.09-1.076Zm-2.363 1.076c0-1.29 1.058-2.336 2.363-2.336 1.306 0 2.364 1.046 2.364 2.336 0 1.29-1.058 2.336-2.364 2.336-1.305 0-2.363-1.046-2.363-2.336Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgHighcontrastmode);//# sourceURL=webpack-internal:///56342\n");

}),

65313:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgLightmode = function SvgLightmode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M14.322 11.612c.388 0 .702.31.702.693v1.251a.697.697 0 0 1-.701.693.697.697 0 0 1-.702-.693v-1.25c0-.384.314-.694.701-.694ZM8.904 13.83a.707.707 0 0 1 .992 0l.898.889c.274.27.274.709 0 .98a.707.707 0 0 1-.991 0l-.899-.889a.687.687 0 0 1 0-.98Zm10.839 0c.273.27.273.71 0 .98l-.899.889a.707.707 0 0 1-.991 0 .687.687 0 0 1 0-.98l.898-.889a.707.707 0 0 1 .992 0Zm-5.42 2.922c-1.36 0-2.463 1.09-2.463 2.435s1.103 2.435 2.463 2.435 2.464-1.09 2.464-2.435-1.103-2.435-2.464-2.435Zm-3.865 2.435c0-2.11 1.73-3.82 3.865-3.82 2.135 0 3.866 1.71 3.866 3.82s-1.73 3.82-3.865 3.82c-2.135 0-3.866-1.71-3.866-3.82Zm-3.797 0c0-.383.314-.693.701-.693h1.266c.387 0 .7.31.7.693a.697.697 0 0 1-.7.693H7.36a.697.697 0 0 1-.7-.693Zm12.657 0c0-.383.314-.693.701-.693h1.266c.387 0 .7.31.7.693a.697.697 0 0 1-.7.693h-1.266a.697.697 0 0 1-.7-.693Zm-8.524 3.488c.274.27.274.71 0 .98l-.898.889a.707.707 0 0 1-.992 0 .687.687 0 0 1 0-.98l.899-.889a.707.707 0 0 1 .991 0Zm7.059 0a.707.707 0 0 1 .991 0l.899.889c.273.27.273.709 0 .98a.707.707 0 0 1-.992 0l-.898-.889a.687.687 0 0 1 0-.98Zm-3.53 1.449c.388 0 .702.31.702.693v1.25a.697.697 0 0 1-.701.694.697.697 0 0 1-.702-.693v-1.251c0-.383.314-.693.701-.693Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgLightmode);//# sourceURL=webpack-internal:///65313\n");

}),

26620:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgTools = function SvgTools(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m6 6 4.5 4.5M6 6H3L2 3l1-1 3 1v3Zm13.259-3.259-2.628 2.628c-.396.396-.594.594-.668.822a1 1 0 0 0 0 .618c.074.228.272.426.668.822l.238.238c.396.396.594.594.822.668a1 1 0 0 0 .618 0c.228-.074.426-.272.822-.668L21.59 5.41a5.5 5.5 0 0 1-6.16 7.485c-.485-.096-.729-.144-.876-.13a.836.836 0 0 0-.373.114c-.13.07-.261.201-.523.463L6.5 20.5a2.121 2.121 0 0 1-3-3l7.157-7.157c.262-.262.393-.393.463-.524a.836.836 0 0 0 .113-.372c.015-.148-.033-.39-.129-.877a5.5 5.5 0 0 1 8.155-5.83ZM12 15l5.5 5.5a2.121 2.121 0 0 0 3-3l-4.525-4.525a5.475 5.475 0 0 1-.934-.17c-.39-.107-.816-.03-1.101.255L12 15Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgTools);//# sourceURL=webpack-internal:///26620\n");

}),

74061:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgUpload = function SvgUpload(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 37 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.882 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C7.1 33.453.795 27.143.795 19.365.795 11.587 7.1 5.28 14.882 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12.796 13.281a5.599 5.599 0 0 1 5.491 3.745h.344a3.725 3.725 0 0 1 1.78 6.995.6.6 0 1 1-.574-1.053 2.524 2.524 0 0 0-1.207-4.742h-.787a.6.6 0 0 1-.58-.45 4.4 4.4 0 1 0-7.558 4.015.6.6 0 1 1-.899.795 5.6 5.6 0 0 1 3.99-9.305Zm1.66 5.796a.6.6 0 0 1 .849 0l2.5 2.5a.6.6 0 1 1-.849.848l-1.475-1.476v4.177a.6.6 0 0 1-1.2 0v-4.177l-1.476 1.476a.6.6 0 0 1-.849-.848l2.5-2.5Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgUpload);//# sourceURL=webpack-internal:///74061\n");

}),

19864:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgUrl = function SvgUrl(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.778-6.306 14.084-14.083 14.084C6.6 33.453.295 27.143.295 19.365.295 11.586 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M8.762 18.765h2.548a10.162 10.162 0 0 1 1.706-4.885 5.655 5.655 0 0 0-4.254 4.885Zm5.618-4.722a8.963 8.963 0 0 0-1.866 4.722h3.733a8.963 8.963 0 0 0-1.867-4.722Zm1.867 5.922a8.963 8.963 0 0 1-1.867 4.721 8.963 8.963 0 0 1-1.866-4.721h3.733Zm-4.937 0H8.762a5.655 5.655 0 0 0 4.254 4.884 10.162 10.162 0 0 1-1.706-4.884Zm4.435 4.884a10.163 10.163 0 0 0 1.706-4.884h2.548a5.655 5.655 0 0 1-4.254 4.884Zm4.254-6.084H17.45a10.163 10.163 0 0 0-1.706-4.885 5.654 5.654 0 0 1 4.254 4.885Zm-12.469.6a6.85 6.85 0 1 1 13.7 0 6.85 6.85 0 0 1-13.7 0Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgUrl);//# sourceURL=webpack-internal:///19864\n");

}),

96570:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgUserCircle = function SvgUserCircle(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M5.316 19.438A4.001 4.001 0 0 1 9 17h6a4.001 4.001 0 0 1 3.684 2.438M16 9.5a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm6 2.5c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgUserCircle);//# sourceURL=webpack-internal:///96570\n");

}),

94699:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgUserLock = function SvgUserLock(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 100 100\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M70.833 87.5v-8.333A16.667 16.667 0 0 0 54.167 62.5H20.833A16.667 16.667 0 0 0 4.167 79.167V87.5M37.5 45.833c9.205 0 16.667-7.462 16.667-16.666 0-9.205-7.462-16.667-16.667-16.667-9.205 0-16.667 7.462-16.667 16.667 0 9.204 7.462 16.666 16.667 16.666ZM88.542 35.417v-7.292a7.292 7.292 0 0 0-14.584 0v7.292m-.625 16.666h15.834c2.333 0 3.5 0 4.391-.454a4.167 4.167 0 0 0 1.821-1.82c.454-.892.454-2.059.454-4.392v-3.334c0-2.333 0-3.5-.454-4.391a4.167 4.167 0 0 0-1.82-1.821c-.892-.454-2.059-.454-4.392-.454H73.333c-2.333 0-3.5 0-4.391.454a4.167 4.167 0 0 0-1.821 1.82c-.454.892-.454 2.059-.454 4.392v3.334c0 2.333 0 3.5.454 4.391a4.167 4.167 0 0 0 1.82 1.821c.892.454 2.059.454 4.392.454Z\",\n    stroke: \"currentColor\",\n    strokeWidth: 8.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgUserLock);//# sourceURL=webpack-internal:///94699\n");

}),

22880:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _style, _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgAws = function SvgAws(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    id: \"aws_svg__Layer_1\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    x: 0,\n    y: 0,\n    viewBox: \"0 0 304 182\",\n    style: {\n      enableBackground: \"new 0 0 304 182\"\n    },\n    xmlSpace: \"preserve\",\n    width: \"1em\",\n    height: \"1em\"\n  }, props), _style || (_style = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"style\", null, \".aws_svg__st1{fill-rule:evenodd;clip-rule:evenodd;fill:#f90}\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M86.4 66.4c0 3.7.4 6.7 1.1 8.9.8 2.2 1.8 4.6 3.2 7.2.5.8.7 1.6.7 2.3 0 1-.6 2-1.9 3L83.2 92c-.9.6-1.8.9-2.6.9-1 0-2-.5-3-1.4-1.4-1.5-2.6-3.1-3.6-4.7-1-1.7-2-3.6-3.1-5.9-7.8 9.2-17.6 13.8-29.4 13.8-8.4 0-15.1-2.4-20-7.2-4.9-4.8-7.4-11.2-7.4-19.2 0-8.5 3-15.4 9.1-20.6 6.1-5.2 14.2-7.8 24.5-7.8 3.4 0 6.9.3 10.6.8 3.7.5 7.5 1.3 11.5 2.2v-7.3c0-7.6-1.6-12.9-4.7-16-3.2-3.1-8.6-4.6-16.3-4.6-3.5 0-7.1.4-10.8 1.3-3.7.9-7.3 2-10.8 3.4-1.6.7-2.8 1.1-3.5 1.3-.7.2-1.2.3-1.6.3-1.4 0-2.1-1-2.1-3.1v-4.9c0-1.6.2-2.8.7-3.5.5-.7 1.4-1.4 2.8-2.1 3.5-1.8 7.7-3.3 12.6-4.5C41 1.9 46.2 1.3 51.7 1.3c11.9 0 20.6 2.7 26.2 8.1 5.5 5.4 8.3 13.6 8.3 24.6v32.4zM45.8 81.6c3.3 0 6.7-.6 10.3-1.8 3.6-1.2 6.8-3.4 9.5-6.4 1.6-1.9 2.8-4 3.4-6.4.6-2.4 1-5.3 1-8.7v-4.2c-2.9-.7-6-1.3-9.2-1.7-3.2-.4-6.3-.6-9.4-.6-6.7 0-11.6 1.3-14.9 4-3.3 2.7-4.9 6.5-4.9 11.5 0 4.7 1.2 8.2 3.7 10.6 2.4 2.5 5.9 3.7 10.5 3.7zm80.3 10.8c-1.8 0-3-.3-3.8-1-.8-.6-1.5-2-2.1-3.9L96.7 10.2c-.6-2-.9-3.3-.9-4 0-1.6.8-2.5 2.4-2.5h9.8c1.9 0 3.2.3 3.9 1 .8.6 1.4 2 2 3.9l16.8 66.2 15.6-66.2c.5-2 1.1-3.3 1.9-3.9.8-.6 2.2-1 4-1h8c1.9 0 3.2.3 4 1 .8.6 1.5 2 1.9 3.9l15.8 67 17.3-67c.6-2 1.3-3.3 2-3.9.8-.6 2.1-1 3.9-1h9.3c1.6 0 2.5.8 2.5 2.5 0 .5-.1 1-.2 1.6-.1.6-.3 1.4-.7 2.5l-24.1 77.3c-.6 2-1.3 3.3-2.1 3.9-.8.6-2.1 1-3.8 1h-8.6c-1.9 0-3.2-.3-4-1-.8-.7-1.5-2-1.9-4L156 23l-15.4 64.4c-.5 2-1.1 3.3-1.9 4-.8.7-2.2 1-4 1h-8.6zm128.5 2.7c-5.2 0-10.4-.6-15.4-1.8-5-1.2-8.9-2.5-11.5-4-1.6-.9-2.7-1.9-3.1-2.8-.4-.9-.6-1.9-.6-2.8v-5.1c0-2.1.8-3.1 2.3-3.1.6 0 1.2.1 1.8.3.6.2 1.5.6 2.5 1 3.4 1.5 7.1 2.7 11 3.5 4 .8 7.9 1.2 11.9 1.2 6.3 0 11.2-1.1 14.6-3.3 3.4-2.2 5.2-5.4 5.2-9.5 0-2.8-.9-5.1-2.7-7-1.8-1.9-5.2-3.6-10.1-5.2L246 52c-7.3-2.3-12.7-5.7-16-10.2-3.3-4.4-5-9.3-5-14.5 0-4.2.9-7.9 2.7-11.1 1.8-3.2 4.2-6 7.2-8.2 3-2.3 6.4-4 10.4-5.2 4-1.2 8.2-1.7 12.6-1.7 2.2 0 4.5.1 6.7.4 2.3.3 4.4.7 6.5 1.1 2 .5 3.9 1 5.7 1.6 1.8.6 3.2 1.2 4.2 1.8 1.4.8 2.4 1.6 3 2.5.6.8.9 1.9.9 3.3v4.7c0 2.1-.8 3.2-2.3 3.2-.8 0-2.1-.4-3.8-1.2-5.7-2.6-12.1-3.9-19.2-3.9-5.7 0-10.2.9-13.3 2.8-3.1 1.9-4.7 4.8-4.7 8.9 0 2.8 1 5.2 3 7.1 2 1.9 5.7 3.8 11 5.5l14.2 4.5c7.2 2.3 12.4 5.5 15.5 9.6 3.1 4.1 4.6 8.8 4.6 14 0 4.3-.9 8.2-2.6 11.6-1.8 3.4-4.2 6.4-7.3 8.8-3.1 2.5-6.8 4.3-11.1 5.6-4.5 1.4-9.2 2.1-14.3 2.1z\",\n    style: {\n      fill: \"#252f3e\"\n    }\n  }), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    className: \"aws_svg__st1\",\n    d: \"M273.5 143.7c-32.9 24.3-80.7 37.2-121.8 37.2-57.6 0-109.5-21.3-148.7-56.7-3.1-2.8-.3-6.6 3.4-4.4 42.4 24.6 94.7 39.5 148.8 39.5 36.5 0 76.6-7.6 113.5-23.2 5.5-2.5 10.2 3.6 4.8 7.6z\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    className: \"aws_svg__st1\",\n    d: \"M287.2 128.1c-4.2-5.4-27.8-2.6-38.5-1.3-3.2.4-3.7-2.4-.8-4.5 18.8-13.2 49.7-9.4 53.3-5 3.6 4.5-1 35.4-18.6 50.2-2.7 2.3-5.3 1.1-4.1-1.9 4-9.9 12.9-32.2 8.7-37.5z\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgAws);//# sourceURL=webpack-internal:///22880\n");

}),

23669:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgAzure = function SvgAzure(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M8.34 7.955h7.401L8.058 31.222a1.2 1.2 0 0 1-.43.595c-.2.147-.442.226-.689.226H1.18a1.16 1.16 0 0 1-.538-.133 1.191 1.191 0 0 1-.628-.893 1.233 1.233 0 0 1 .049-.564l7.16-21.677c.078-.24.228-.447.43-.594.2-.147.441-.226.688-.226v-.001Z\",\n    fill: \"url(#azure_svg__a)\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M19.096 23.562H7.358a.536.536 0 0 0-.506.35.565.565 0 0 0 .135.61l7.543 7.194c.22.21.508.326.809.326h6.646l-2.89-8.482v.002Z\",\n    fill: \"#0078D4\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M8.34 7.955c-.25 0-.493.08-.695.23-.202.15-.351.363-.426.606L.07 30.435a1.224 1.224 0 0 0 .146 1.1c.11.157.254.287.422.375.168.089.354.135.543.134h5.91c.22-.04.425-.139.595-.287.17-.148.3-.34.373-.555l1.426-4.293 5.091 4.854c.213.18.481.28.758.282h6.622l-2.905-8.482-8.465.002 5.181-15.61H8.34Z\",\n    fill: \"url(#azure_svg__b)\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17.794 8.775a1.205 1.205 0 0 0-.43-.594c-.2-.147-.44-.226-.687-.226h-8.25c.248 0 .487.08.688.226.2.147.35.355.43.594l7.159 21.68a1.222 1.222 0 0 1-.58 1.456c-.166.087-.35.133-.537.133h8.249a1.159 1.159 0 0 0 .957-.502 1.231 1.231 0 0 0 .16-1.088l-7.16-21.68Z\",\n    fill: \"url(#azure_svg__c)\"\n  })), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__a\",\n    x1: 11.038,\n    y1: 9.741,\n    x2: 3.044,\n    y2: 32.844,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopColor: \"#114A8B\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#0669BC\"\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__b\",\n    x1: 13.438,\n    y1: 20.556,\n    x2: 11.652,\n    y2: 21.147,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopOpacity: 0.3\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.07,\n    stopOpacity: 0.2\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.32,\n    stopOpacity: 0.1\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.62,\n    stopOpacity: 0.05\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopOpacity: 0\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__c\",\n    x1: 12.516,\n    y1: 9.042,\n    x2: 21.281,\n    y2: 31.892,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopColor: \"#3CCBF4\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#2892DF\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgAzure);//# sourceURL=webpack-internal:///23669\n");

}),

67905:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgCivo = function SvgCivo(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 711.364 238.193\",\n    xmlSpace: \"preserve\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    fill: \"#239DFF\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M273.539.081h-29.424c-5.424 0-8.981 4.179-8.981 9.423v219.13c0 5.245 3.557 9.447 8.981 9.447h29.424c5.424 0 9.595-4.202 9.595-9.447V9.504c0-5.244-4.171-9.423-9.595-9.423M181.662 173.122c-2.671-5.859-10.327-7.473-15.027-3.072-12.446 11.658-29.136 18.819-47.538 18.819-48.218 0-85.012-48.909-63.477-99.824 6.365-15.049 18.442-27.092 33.495-33.447 29.421-12.421 58.048-5.345 77.037 12.095 4.749 4.361 12.365 2.814 15.04-3.054l12.744-27.956c2.039-4.474.631-9.721-3.292-12.685C160.789 1.437 120.037-7.42 77.562 7.052 43.472 18.666 16.89 46.154 6.065 80.503c-25.894 82.163 34.749 157.69 113.032 157.69 27.245 0 52.286-9.214 72.327-24.633 3.786-2.913 4.973-8.113 2.991-12.462l-12.753-27.976zM705.299 80.503c-10.825-34.349-37.407-61.837-71.497-73.451-24.128-8.221-47.698-8.906-69.033-3.835-35.585 7.946-61.358 24.817-84.01 73.453l-45.455 98.598L358.15 5.667a9.498 9.498 0 0 0-8.626-5.56L315.818.054c-6.917-.011-11.524 7.142-8.653 13.436l100.064 218.79c1.542 3.383 4.917 5.67 8.634 5.671l1.637.131h37.841c.761 0 1.522-.157 2.244-.403 2.604-.887 4.798-2.745 5.938-5.311 0 0 50.098-114.027 50.681-115.402 15.244-35.949 24.495-50.922 48.691-61.206 18.307-7.78 39.955-8.727 60.885.753 14.57 6.599 26.028 18.657 32.122 33.443a80.065 80.065 0 0 1 6.122 28.142c.545 38.992-30.891 70.773-69.758 70.773-18.402 0-35.092-7.162-47.538-18.819-4.7-4.402-12.356-2.788-15.027 3.071L516.947 201.1c-1.981 4.348-.795 9.547 2.993 12.461 20.04 15.418 45.081 24.633 72.326 24.633 78.284-.001 138.926-75.528 113.033-157.691\"\n  }))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgCivo);//# sourceURL=webpack-internal:///67905\n");

}),

67865:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDigitalocean = function SvgDigitalocean(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    height: \"1em\",\n    width: \"1em\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 -3.954 53.927 53.954\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    fill: \"#0080ff\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M24.915 50v-9.661c10.226 0 18.164-10.141 14.237-20.904a14.438 14.438 0 0 0-8.615-8.616C19.774 6.921 9.633 14.83 9.633 25.056H0C0 8.758 15.763-3.954 32.853 1.384 40.311 3.73 46.271 9.661 48.588 17.12 53.927 34.237 41.243 50 24.915 50\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M15.339 40.367h9.604v-9.604H15.34zm-7.401 7.401h7.4v-7.4h-7.4zm-6.187-7.4h6.187V34.18H1.751z\"\n  }))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDigitalocean);//# sourceURL=webpack-internal:///67865\n");

}),

97642:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDockerCompose = function SvgDockerCompose(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#docker-compose_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M26.923 21.727c-2.571 0-2.82 2.047-2.82 2.047l1.671-.474s1.248-.65 2.347.574c1.198 1.248.55 3.37 0 4.17-.774 1.247-3.843 1.397-4.044 1.347-1.348-2.87-4.469-2.996-4.469-2.996l3.37-3.095s3.52-3.42 3.52-6.615c0-3.195-3.695-6.64-3.695-6.64s-1.523-1.198-1.523-2.22c0-1.723 3.47-2.197 5.417-3.22 1.947-1.023.45-3.844-.324-4.294-1.522-.649-2.371.525-2.371.525L22.354 4.98l-1.198.474s-.95-.05-1.723.924c-.774.973-.15 3.12-.15 3.12s-1.298-.673-3.494-.673c-7.189 0-7.838 5.99-7.838 7.04 0 1.047.574 3.144 1.398 4.143.823.998 2.645 3.095 2.645 4.417 0 2.097-3.295 3.37-4.992 3.37-2.321 0-3.22-1.423-3.22-2.396 0-1.398.924-2.921 1.473-3.944.549-1.023-.35-2.322-.35-2.322l-1.198.55-2.421-1.374s.03-2.178-.068-2.228c-.45.1-.98.78-.98 1.88 0 1.5 1.596 1.739 2.436 2.061 1.136.438 1.132 1.508.384 2.53-.748 1.024-1.298 3.246-1.298 4.344 0 2.196 2.846 3.22 4.767 3.22 2.97 0 4.992-1.548 4.992-1.548s.274 1.723.274 2.571c0 .849-.773 1.648-2.096 1.648s-2.371-.598-2.371-.598-2.696-1.748-3.82-1.748c-1.971 0-2.67 2.022-2.67 2.472 0 .45.324 1.472.598 1.847.275.375 1.698.95 2.073.849.374-.1.524-.924.45-1.198-.076-.275-1.323-1.048-1.323-1.423s.216-.7.89-.7c.673 0 1.46.593 2.682 1.742.89.837 3.164 1.844 4.59 1.778.948-.043 2.758-.477 3.145-1.971.221-.857-.1-3.37.124-2.72.225.648.765 1.809 2.357 2.873.548.365 3.103 1.067 4.706.472 1.998-.375 3.096-3.145 3.12-3.17 2.123 0 3.546-.8 5.018-1.573 1.473-.774 1.448-3.42 1.448-4.843 0-1.847-2.72-3.144-3.794-3.144l.003-.004Zm-13.18 8.488s-.499-.749-.499-1.548c0-.8.175-1.522 1.473-2.022-.026.026-1.182 1.133-.974 3.57Zm5.318 2.47c-1.947 0-3.02-1.922-3.02-3.17 0-1.247.649-2.096.649-2.096s.03.632.03.757c0 .124.341 1.24 1.115 2.039.774.799 3.896.973 3.822 1.048-.5.998-1.923 1.423-2.596 1.423Zm2.597-3.862a4.908 4.908 0 0 1-2.13-1.292c1.498-.093 2.228 1.33 2.13 1.292Z\",\n    fill: \"#B8C9DA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M11.512 13.05c.876-.953 1.107-2.166.516-2.71-.298-.274-.75-.323-1.237-.184-1.135.804-1.831 1.85-2.257 2.835.01.322.11.605.323.8.59.543 1.78.212 2.656-.74l-.001-.002ZM14.802 11.476c.67-.386 1.015-1.043.77-1.466-.244-.424-.986-.454-1.656-.067-.67.386-1.014 1.043-.77 1.467.244.423.986.453 1.656.066ZM8.914 34.851c.24-.44-.133-1.103-.831-1.48s-1.455-.324-1.694.116c-.095.174-.09.383-.012.595.427.412 1.206.806 2.012 1.11.235-.047.426-.158.524-.34h.001ZM15.145 27.415c-.326-.193-.763-.036-1.102.348a6.483 6.483 0 0 0-.353 1.824c.06.103.136.19.233.247.424.251 1.04-.088 1.377-.755.337-.668.268-1.413-.155-1.665ZM15.311 30.244c-.234.463-.185.978.108 1.152.286.17.698-.05.935-.492a3.355 3.355 0 0 1-.37-1.232c-.244.034-.507.244-.673.572Z\",\n    fill: \"#99B3D1\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M21.593 28.782A4.824 4.824 0 0 1 20 27.968c.153.592.424 1.969-.003 2.975.857.171 1.634.239 1.594.28-.034.067-.082.126-.124.189.16-.135.67-.62.649-1.338-.015-.508-.237-.978-.527-1.345.015.038.016.058.003.053h.001ZM23.6 19.116c-.587.849-1.834 2.122-1.834 2.122s-2.572 1.498-3.545 3.47c0 0 1.29-.788 3.543-.392l1.15-1.055s3.52-3.42 3.52-6.615c0-1.597-.924-3.258-1.848-4.518-.024.666-.101 1.497-.324 2.047.026.45.4 3.294-.662 4.942ZM4.61 22.497c.204-.396.423-.695.6-1.01.738-1.304-.367-2.396-.367-2.396l-1.198.549-1.51-.856c-.099.242-.203.516-.237.683-.01.05.005.119.039.196.38.12.552.322.815.414.596.21.992.829.77 1.562.285.323.724.616 1.088.857v.001Z\",\n    fill: \"#8597A9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17.942 25.473s.078-1.054.988-2.101c.91-1.048 1.385-1.329 2.32-2.144.937-.814 2.434-2.041 2.774-4.21.23-1.299.127-2.813-.548-3.895-.674-1.082-2.31-3.108-5.443-3.832-3.132-.725-5.566.287-5.566.287s-4.063 1.464-4.372 6.117c-.07 1.34.264 2.144.264 2.144s.435 1.37 1.043 2.124c.607.753 1.318 1.631 1.318 1.631s1.303 1.327 1.303 2.878c0 .618-.242 1.199-.64 1.61-.395.41-1.551 1.977-4.547 1.977-1.82 0-3.29-1.158-3.29-2.47 0-1.076.342-1.996.756-2.7.415-.705 1.118-1.562 1.118-2.384 0-.553-.562-1.334-.562-1.334l.11-.103s.568.652.568 1.425c0 .478-.088.772-.203 1.01-.115.237-1.439 2.269-1.439 3.708 0 .804.512 2.38 2.94 2.38 1.8 0 2.754-.547 3.87-1.375.635-.49 1.112-1.157 1.112-1.769 0-.61-.2-1.123-.633-1.728a17.442 17.442 0 0 0-1.303-1.642c-.575-.65-2.287-2.183-2.287-5.547 0-1.593 1.398-7.001 8.43-7.001 1.547 0 8.667 1.316 8.667 7.437 0 1.78-.983 4.029-2.497 5.277-1.515 1.248-3.727 2.691-4.254 4.23h.003Z\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M19.585 26.438s-.559.158-.42.098c.212-.092.843-.539 1.204-.905.716-.728 5.784-4.99 5.784-8.49 0-3.252-2.208-5.332-2.208-5.332s-.326-.278-1.286-1.41c-.96-1.13-1.232-1.487-1.341-1.87-.207-.355-.2-1.491.513-1.988.712-.498.853-.449.853-.449l.018.17s-.994.426-1.286 1.332c-.06.298-.12.91.592 1.619l1.937 1.928s2.728 2.261 2.728 6.002c0 1.152-.669 2.998-1.752 4.228-1.083 1.229-3.566 3.887-5.335 5.067ZM19.082 9.328s-.616-1.32-.277-2.542c.336-1.03 1.29-1.346 2.423-1.474.177.036.198.12.198.12s-1.675.142-2.282 1.742c-.191.58.047 1.788.256 2.237.04.067-.318-.083-.318-.083ZM14.625 19.985c-.67-.52-1.672-.315-2.158.3-.54.686-.485 1.682.182 2.17.504.368 1.698.287 2.158-.3.605-.774.471-1.664-.182-2.17Zm-.01 2.018c-.409.522-1.463.58-1.92.266-.492-.338-.65-1.325-.165-1.933a1.43 1.43 0 0 1 1.016-.537c-.06.073-.096.126-.096.225 0 .238.201.432.452.432.25 0 .452-.157.452-.396 0-.02-.004-.04-.007-.058.036.023.072.04.106.068.575.46.702 1.243.164 1.933h-.002Z\",\n    fill: \"#121313\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.452 20.07c-.034-.027-.07-.045-.106-.068.003.02.007.038.007.058a.442.442 0 0 1-.452.432.442.442 0 0 1-.452-.432c0-.1.037-.19.097-.262a1.431 1.431 0 0 0-1.016.537c-.486.607-.328 1.594.163 1.933.458.315 1.512.256 1.921-.267.54-.688.412-1.472-.163-1.932Z\",\n    fill: \"#fff\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17.796 20.463c-.67-.519-1.672-.315-2.158.3-.54.686-.486 1.682.182 2.17.504.368 1.698.287 2.158-.3.605-.773.471-1.664-.182-2.17Zm-.01 2.018c-.409.523-1.463.581-1.92.267-.492-.338-.65-1.325-.165-1.933.263-.33.638-.51 1.016-.538-.06.073-.096.126-.096.225 0 .24.201.433.452.433.25 0 .452-.157.452-.397a.31.31 0 0 0-.007-.058c.035.024.072.04.106.069.575.46.702 1.243.164 1.932h-.002Z\",\n    fill: \"#121313\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M17.623 20.549c-.034-.027-.07-.046-.106-.069.003.02.007.038.007.058a.442.442 0 0 1-.452.433.442.442 0 0 1-.453-.433c0-.099.037-.189.097-.262a1.43 1.43 0 0 0-1.016.538c-.485.606-.327 1.593.164 1.933.458.314 1.512.256 1.921-.267.54-.688.412-1.473-.163-1.933v.002Z\",\n    fill: \"#fff\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m1.188 18.105-.14-2.05s-.063-.258.24-.357l2.954-.97s.508-.108.92.031c.412.14 1.716.688 1.716.688s.318.106.318.45c0 .343-.023 1.655-.023 1.655s.002.517-.208.634c-.21.116-3.046 1.558-3.046 1.558s-.47.11-.761-.081c-.292-.192-1.683-1.01-1.683-1.01s-.286-.165-.286-.548h-.001Z\",\n    fill: \"#151516\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m1.29 16.3.095 1.761s.007.265.424.52 1.557.9 1.557.9.122.067.122-.237V17.58s.077-.36-.122-.437c-.2-.076-1.909-.93-1.909-.93s-.167-.15-.167.087v.001Z\",\n    fill: \"#0F5983\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M3.679 19.122v-1.586s-.043-.308.268-.42c.312-.113 2.653-1.103 2.653-1.103s.278-.13.278.188v1.348s-.005.26-.23.393-2.68 1.413-2.68 1.413-.288.091-.288-.234l-.001.001Z\",\n    fill: \"#29B4FA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m1.632 16.003 1.824.935s.193.119.544-.028l2.548-1.062s.243-.135.019-.209c-.224-.073-1.699-.663-1.699-.663s-.363-.085-.646 0c-.282.086-2.452.788-2.452.788s-.409.097-.139.239h.001Z\",\n    fill: \"#72CCFA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M3.252 19.219a.093.093 0 0 1-.035-.007l-.043-.017c-.056-.022-.1-.1-.103-.181l-.048-1.647c-.002-.054.016-.098.048-.121a.085.085 0 0 1 .083-.01l.044.018c.056.022.1.1.102.18l.049 1.648c.001.054-.016.098-.049.12a.088.088 0 0 1-.05.017h.002Zm.002-.098-.018.046.018-.046Zm-.131-1.79v.035l.048 1.646c.001.048.027.087.04.093l.041.016v-.035l-.048-1.646c-.002-.048-.027-.087-.04-.093l-.041-.016ZM2.874 18.996a.091.091 0 0 1-.035-.007l-.043-.017c-.057-.022-.1-.099-.103-.18l-.048-1.648c-.002-.054.016-.098.048-.12a.087.087 0 0 1 .084-.01l.044.017c.057.022.1.1.103.181l.048 1.647c.001.054-.016.098-.048.121a.085.085 0 0 1-.05.016Zm.002-.098-.018.047.018-.047Zm-.131-1.79v.035l.048 1.647c.002.048.027.086.04.092l.041.016v-.034l-.048-1.647c-.002-.047-.027-.086-.04-.092l-.041-.016ZM2.479 18.791a.093.093 0 0 1-.035-.007l-.044-.017c-.056-.022-.1-.1-.102-.181l-.049-1.647c-.001-.054.016-.098.049-.121a.088.088 0 0 1 .084-.01l.044.018c.056.022.1.1.102.181l.049 1.647c0 .054-.017.098-.049.121a.088.088 0 0 1-.05.016Zm0-.098-.017.046.019-.046H2.48Zm-.13-1.79s-.002.015 0 .034l.048 1.646c0 .048.026.087.04.093l.04.016s.002-.015 0-.035l-.048-1.646c-.001-.049-.027-.087-.04-.093l-.04-.016v.001ZM2.083 18.528a.083.083 0 0 1-.034-.007l-.044-.017c-.056-.022-.1-.098-.102-.178l-.047-1.615c-.002-.053.016-.096.048-.119a.09.09 0 0 1 .084-.01l.044.018c.056.022.1.098.103.179l.047 1.615c.001.053-.016.096-.047.12a.087.087 0 0 1-.05.015h-.002Zm0-.098-.016.046.018-.046h-.001Zm-.13-1.755v.032l.048 1.616c.001.046.026.084.039.089l.042.016v-.032l-.048-1.616c0-.046-.026-.084-.04-.089l-.04-.016ZM1.689 18.308a.112.112 0 0 1-.033-.006l-.044-.016c-.057-.02-.1-.097-.103-.175l-.046-1.592c-.001-.052.016-.094.047-.117a.09.09 0 0 1 .084-.01l.044.017c.057.02.1.097.103.176l.046 1.59c.001.052-.016.095-.047.118a.088.088 0 0 1-.051.016v-.001Zm.001-.098-.017.046.017-.046Zm-.128-1.726s-.002.013-.001.03l.046 1.592c.001.045.027.082.04.087l.04.016s.002-.014 0-.031l-.045-1.59c-.001-.046-.027-.082-.04-.088l-.041-.015.001-.001Z\",\n    fill: \"#05446D\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M27.797 23.567c-.609-.427-.915-.528-1.476-.528-.562 0-.783.43-.783.43s.655-.257 1.057-.257c.403 0 1.997.824 1.997 2.519 0 2.537-2.072 3.484-3.76 3.484-.318 0-.62-.012-.906-.032l.138.384c.25.028.493.044.715.044 2.015 0 3.077-1.054 3.51-1.6.432-.546.627-1.53.627-2.26 0-.73-.511-1.755-1.119-2.182v-.002ZM21.721 29.055l-.14-.308c-.953-.318-1.617-.754-2.077-1.172.01.031.031.078.082.14a.7.7 0 0 1 .126.303c.202.194.395.356.545.446.383.205.898.41 1.464.59v.002ZM18.556 26.265c-.054.097.007.281.134.503l.088-.057c-.163-.267-.222-.446-.222-.446Z\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.745 26.62s-1.283 1.112-1.283 2.863c0 1.752.746 2.79.944 3.006.199.215 1.856 2.289 5.3 2.289 1.246 0 4.606-1.044 4.606-4.302 0-1.91-1.685-4.07-4.915-4.07-.889.041-1.468.728-1.468 1.233 0 .758.448 1.236 1.01 1.236.502 0 .832-.223.832-.817 0-.3-.243-.47-.305-.51-.06-.041.244.324.174.657-.07.332-.225.575-.684.575-.314 0-.946-.424-.824-1.117.084-.423.468-.928 1.242-1.02 1.36-.161 4.58.842 4.58 3.807 0 2.085-1.918 4.2-4.249 4.2-2.33 0-3.637-1.044-3.637-1.044s-2.234-1.82-2.234-4.1c0-1.07.141-1.893.9-2.872\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M16.676 27.48s-.603.685-.603 1.879c0 1.193.87 3.106 2.775 3.106 1.257 0 2.966-.943 2.966-2.306 0-1.244-1.009-2.608-2.348-2.608-.03-.031.039-.07.123-.07.084 0 .914.007 1.677.666.762.658.972 1.305.972 1.984 0 .68-.16 1.305-.966 1.91-.804.606-1.34.862-2.424.862-1.082 0-2.037-.968-2.037-.968s-.926-.861-.926-2.396c0-.556.445-2.015.792-2.059h-.001Z\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.415 30.296c-.693-.39-1.641-1.062-1.765-3.53 0 0-.51 2.51 1.336 3.827.705.527 1.494.8 3.409.908l.232-.325c-1.15-.157-2.377-.428-3.21-.88h-.002ZM30.925 26.408c0-1.16.041-4.812-4.253-4.812-1.461 0-2.69 1.295-2.69 2.25.075 0 .168-.087.168-.087s.101-.787.742-1.279c.644-.495.95-.643 1.78-.643.829 0 3.821.469 3.821 4.191 0 1.987-.957 3.526-2.393 4.219-1.176.567-2.323.96-4.002 1.026l-.082.285c3.882-.018 6.91-2.177 6.91-5.15h-.001Z\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M1.154 16.142s-.531-.054-.834.496c-.302.55-.438 1.272-.196 1.943.243.671.742.9 1.254 1.08.512.18 2.163.665 2.163 1.57 0 .461-.7 1.583-1.057 2.134-.358.55-.969 2.015-.969 3.688 0 1.494 1.623 3.405 4.815 3.405 1.6 0 3.144-.46 5.008-1.509.225-.159.075-.561.075-.561s-2.11 1.577-5.094 1.577c-2.077 0-4.392-1.162-4.392-2.97 0-1.808.341-2.886.753-3.606.412-.72.977-1.48.977-2.172 0-.691-.672-1.34-1.172-1.544-.5-.204-1.33-.403-1.711-.665-.38-.262-.456-.932-.456-1.17 0-.24-.017-1.04.521-1.507.126-.083.315-.19.315-.19v.001Z\",\n    fill: \"#090D0F\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.986 25.233s-.326-.15-.865-.15c-.76 0-2.956 1.023-2.956 2.494 0 1.472 1.408 4.966-1.54 4.966-1.795 0-3.427-1.22-3.427-1.22s-1.388-1.07-2.743-1.07S.6 31.415.6 33.023c0 1.61 1.425 2.857 2.37 2.857.946 0 1.098-.688 1.098-.688s.236-.587-.122-.896c-.357-.31-1.204-.736-1.204-1.365 0-.628.714-.596.714-.596s.653-.04 1.387.596c.735.637 3.005 3.15 5.795 3.15 1.956 0 2.72-.841 3.055-1.329.334-.488.962-1.395.385-3.087-.64-1.877-1.737-3.677.66-5.03 0 .013-1.07.232-1.583 1.461-.305.774.042 1.925.259 2.784.216.859.678 2.42-.065 3.4-.566.747-1.373 1.312-2.689 1.312s-2.54-.564-2.54-.564-1.031-.377-1.876-1.088c-.844-.71-1.514-1.266-1.514-1.266s-.603-.485-1.345-.485c-.743 0-.924.505-.924.717 0 .212.11.672.429.9.32.229.588.435.712.585.125.15.244.443.081.7-.162.255-.27.41-.68.41-.41 0-.789-.244-1.062-.462-.274-.218-.75-.785-.87-1.259-.122-.474-.102-.756-.102-.756s.042-.642.33-1.116c.287-.474.957-1.278 2.157-1.278.489 0 1.017.175 1.798.645.78.47 1.788 1.112 1.788 1.112s.946.637 2.525.637c1.03 0 1.716-.38 2.127-.953.412-.573.314-1.603.064-3.066-.25-1.464-.414-1.933.436-2.837.792-.843 1.904-1.108 2.793-.935h-.002Z\",\n    fill: \"#101111\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m15.683 34.62.07 1.566s-.056.399.416.697c.473.299 3.518 2.317 3.518 2.317s.356.238.857-.061c.5-.299 2.348-1.413 2.348-1.413s.226-.142.251-.517c.026-.376.088-1.567.088-1.567s.031-.156-.247-.344c-.278-.188-4.065-1.85-4.065-1.85s-.375-.164-.782-.028c-.407.136-2.065.719-2.065.719s-.404.187-.391.48h.002Z\",\n    fill: \"#0E1011\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m16.254 34.515 3.683 1.967s.223.154.568 0 1.9-.988 1.9-.988.255-.083-.11-.253c-.366-.168-3.474-1.648-3.474-1.648s-.168-.137-.493-.044c-.326.094-2.037.673-2.037.673s-.412.092-.037.293Z\",\n    fill: \"#72CCFA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m15.889 34.73.107 1.43s-.02.263.403.49c.424.225 3.472 2.299 3.472 2.299s.23.107.23-.282c0-.388-.025-1.511-.025-1.511s.034-.266-.186-.392l-3.766-2.121s-.235-.132-.235.086Z\",\n    fill: \"#29B4FA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m20.334 38.667-.019-1.618s-.047-.23.196-.351c.245-.123 2.247-1.104 2.247-1.104s.18-.11.178.173c0 .284-.043 1.444-.043 1.444s-.03.177-.187.276l-2.143 1.323s-.23.154-.23-.142Z\",\n    fill: \"#0F5983\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M20.662 38.552a.099.099 0 0 1-.059-.019c-.031-.021-.048-.06-.048-.106l.002-1.5c0-.077.048-.152.113-.174l.05-.018a.11.11 0 0 1 .098.011c.03.022.048.061.048.106l-.002 1.5c0 .078-.049.153-.113.175l-.052.018a.11.11 0 0 1-.038.007Zm.1-1.725-.06.018c-.022.007-.047.045-.047.082l-.002 1.5c0 .015.004.025.007.027l.058-.019c.022-.008.048-.043.048-.081l.002-1.5c0-.016-.005-.025-.007-.027ZM21.152 38.196a.105.105 0 0 1-.061-.02.122.122 0 0 1-.046-.1l.007-1.37c0-.07.05-.142.114-.163l.052-.016a.109.109 0 0 1 .098.014.12.12 0 0 1 .046.098l-.007 1.37c0 .071-.05.143-.114.164l-.052.016a.139.139 0 0 1-.037.005v.002Zm.106-1.576-.062.018c-.022.007-.046.038-.046.07l-.007 1.37c0 .012.003.017.006.018l.062-.017c.022-.007.046-.038.046-.07l.007-1.37c0-.012-.003-.017-.006-.019ZM21.617 37.867a.102.102 0 0 1-.064-.02.11.11 0 0 1-.042-.094l.01-1.277c0-.068.052-.136.116-.155l.051-.017a.11.11 0 0 1 .1.015c.028.021.043.055.043.093l-.01 1.276a.172.172 0 0 1-.115.156l-.052.015a.127.127 0 0 1-.036.006l-.001.002Zm.107-1.468-.008.001-.05.016a.073.073 0 0 0-.047.063l-.01 1.276c0 .008.002.013.003.014h.013l.052-.015a.071.071 0 0 0 .046-.062l.01-1.277c0-.007 0-.011-.003-.014h-.005V36.4ZM22.079 37.606a.104.104 0 0 1-.064-.02.11.11 0 0 1-.042-.094l.01-1.276c0-.068.052-.136.115-.156l.052-.015a.114.114 0 0 1 .1.015.11.11 0 0 1 .042.093l-.01 1.277a.172.172 0 0 1-.116.156l-.051.015a.128.128 0 0 1-.036.005Zm.107-1.468s-.005 0-.008.002l-.052.015a.071.071 0 0 0-.046.062l-.01 1.276c0 .008.002.013.003.014h.013l.052-.016c.024-.007.045-.037.046-.062l.01-1.277c0-.008-.002-.012-.003-.014h-.005ZM22.517 37.368a.105.105 0 0 1-.064-.021.112.112 0 0 1-.042-.09l.012-1.235a.17.17 0 0 1 .116-.152l.052-.015a.113.113 0 0 1 .1.016c.027.02.043.053.042.09l-.012 1.236c0 .068-.05.133-.116.152l-.052.015a.126.126 0 0 1-.036.005v-.001Zm.106-1.421h-.004l-.052.015c-.023.007-.045.035-.045.059l-.012 1.235c.005.013.01.013.016.01l.052-.015a.072.072 0 0 0 .047-.059l.011-1.235c-.003-.009-.007-.011-.011-.011l-.002.001Z\",\n    fill: \"#05446D\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m26.434 23.134-2.906.688s-.415.01-.399.573c.016.563.084 1.738.084 1.738s.09.523.594.703c.506.18 2.19.925 2.19.925s.216.177.535.062c.321-.117 2.06-.803 2.06-.803s.4-.866.058-1.936c-.344-1.069-1.198-1.951-2.216-1.951v.001Z\",\n    fill: \"#0E1011\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M26.393 27.334V25.5s-.029-.267.182-.338c.211-.07 1.497-.52 1.497-.52s.17-.117.286.091c.115.208.233.612.233 1.03 0 .416-.107.86-.107.86s-.049.163-.19.216c-.143.053-1.706.662-1.706.662s-.194.126-.194-.167h-.001Z\",\n    fill: \"#29B4FA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M26.213 25.537v1.701s.038.283-.093.232a316.13 316.13 0 0 1-2.387-1.063s-.222-.145-.24-.518c-.019-.374-.097-1.472-.097-1.472s-.016-.218.149-.133c.165.083 2.261.865 2.384.906.124.042.284.17.284.348Z\",\n    fill: \"#0F5983\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m23.634 24.12 2.262.8s.217.204.71.023a61.772 61.772 0 0 1 1.404-.483s.205-.046.086-.196c-.118-.15-.403-.57-1.246-.963-.199-.083-.474-.004-.67.049-.196.053-2.496.598-2.496.598s-.232.108-.05.172Z\",\n    fill: \"#72CCFA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.993 3.577s.26-2.1.302-2.34c.043-.238.22-.387.647-.439.393-.048 2.573-.333 2.573-.333s.498-.127 1.034.16c.535.287 3.027 1.632 3.216 1.76.19.13.361.16.285.777a62.834 62.834 0 0 1-.296 1.984s.052.321-.344.433c-.395.112-3.171.827-3.171.827s-.354.135-.877-.164c-.522-.298-3.059-1.903-3.187-1.99-.128-.086-.25-.25-.18-.675h-.002Z\",\n    fill: \"#121313\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M26.793 4.271s.674-.355.674-1.293c0-.787-.564-2.747-2.032-2.747-1.216 0-1.55.75-1.55.75l-.179-.152S24.18 0 25.436 0c1.257 0 2.342 1.678 2.342 3.042 0 1.054-1.057 1.739-1.057 1.739l.074-.51-.002.001Z\",\n    fill: \"#090D0F\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m19.237 3.717.255-2.254s-.013-.27.174-.15c.186.118 3.172 1.948 3.172 1.948s.216.163.14.59c-.074.425-.223 1.98-.223 1.98s.018.224-.23.088c-.249-.136-3.19-1.876-3.19-1.876s-.127-.078-.098-.326Z\",\n    fill: \"#29B4FA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m22.999 5.98.24-2.374s.048-.2.24-.227c.19-.028 3.228-.571 3.228-.571s.204-.014.15.314l-.338 1.98s-.075.219-.275.305c-.2.087-2.962.723-2.962.723s-.297.109-.286-.15H23Z\",\n    fill: \"#0F5983\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m19.976 1.162 3.052 1.894s.145.156.623.076c.477-.08 2.809-.497 2.809-.497s.148 0 .084-.066C26.479 2.504 23.39.857 23.39.857s-.26-.19-.8-.14c-.54.048-2.58.287-2.58.287s-.22.045-.035.16l.001-.002Z\",\n    fill: \"#72CCFA\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M25.869 27.127a.108.108 0 0 1-.033-.004l-.048-.015c-.061-.02-.11-.092-.114-.17l-.075-1.52c-.003-.048.014-.09.044-.113a.1.1 0 0 1 .09-.015l.048.015c.061.02.11.093.114.17l.075 1.521c.003.047-.014.089-.044.112a.097.097 0 0 1-.058.02Zm-.003-.099h.003s.004-.009.004-.029l-.075-1.52c-.002-.041-.028-.076-.046-.081l-.048-.015s-.007.008-.007.027l.075 1.521c.002.042.029.075.046.081l.048.015v.001ZM25.372 26.87a.099.099 0 0 1-.031-.004l-.049-.014c-.062-.019-.112-.088-.115-.162l-.07-1.42a.126.126 0 0 1 .043-.106.102.102 0 0 1 .091-.017l.049.014c.062.019.112.088.115.162l.07 1.42a.126.126 0 0 1-.043.107.095.095 0 0 1-.06.02Zm-.158-1.628s-.008.007-.008.023l.069 1.42c.001.034.025.067.045.072l.048.015h.004s.004-.008.004-.023l-.069-1.42c-.001-.034-.025-.066-.045-.072l-.048-.014v-.001ZM24.886 26.68a.096.096 0 0 1-.03-.005l-.05-.015c-.062-.018-.111-.087-.114-.161l-.07-1.42a.125.125 0 0 1 .043-.107.102.102 0 0 1 .091-.016l.049.015c.062.018.111.088.115.161l.069 1.421a.123.123 0 0 1-.043.106.095.095 0 0 1-.06.021Zm-.003-.1h.003s.006 0 .005-.022l-.07-1.42c0-.034-.025-.067-.044-.072l-.049-.015s-.008.007-.008.023l.07 1.42c0 .034.025.066.044.072l.049.014ZM24.404 26.475a.096.096 0 0 1-.031-.005l-.049-.014c-.062-.018-.112-.087-.115-.161l-.07-1.42a.125.125 0 0 1 .044-.107.102.102 0 0 1 .09-.016l.05.014c.061.018.11.087.114.161l.07 1.42a.126.126 0 0 1-.043.107.095.095 0 0 1-.06.02Zm-.158-1.629s-.008.007-.008.023l.07 1.421c0 .034.024.066.044.072l.049.014h.003s.005-.007.003-.024l-.069-1.42c0-.034-.025-.066-.045-.072l-.048-.014h.001ZM23.913 26.265a.085.085 0 0 1-.03-.005l-.048-.014c-.062-.017-.112-.085-.115-.158l-.068-1.381a.122.122 0 0 1 .041-.104.105.105 0 0 1 .092-.017l.049.014c.062.017.112.085.115.158l.068 1.381a.121.121 0 0 1-.041.104.098.098 0 0 1-.061.02l-.002.002Zm-.155-1.584s-.01.008-.008.021l.068 1.382c0 .032.025.063.043.068l.049.014h.005s.004-.007.003-.021l-.068-1.382c-.001-.032-.024-.063-.044-.068l-.048-.014ZM23.496 5.818h-.083a.162.162 0 0 1-.116-.056.17.17 0 0 1-.037-.132l.265-1.933a.198.198 0 0 1 .189-.168h.078a.162.162 0 0 1 .115.055.17.17 0 0 1 .037.134L23.68 5.65a.194.194 0 0 1-.185.168v-.001Zm.215-2.191c-.041 0-.081.038-.087.083l-.264 1.933a.073.073 0 0 0 .014.056c.01.013.025.019.042.02h.08c.043 0 .083-.036.089-.082l.264-1.933a.073.073 0 0 0-.014-.056.057.057 0 0 0-.043-.02h-.08v-.001ZM24.158 5.691h-.004l-.078-.002a.15.15 0 0 1-.116-.055.17.17 0 0 1-.036-.132l.264-1.933a.193.193 0 0 1 .185-.168h.004l.078.002c.045 0 .086.02.114.054a.17.17 0 0 1 .037.133l-.264 1.933a.193.193 0 0 1-.185.168Zm-.001-.098c.042 0 .083-.038.088-.083l.264-1.933a.069.069 0 0 0-.013-.055.058.058 0 0 0-.043-.02l-.078-.002h-.002c-.041 0-.082.038-.087.083l-.264 1.933a.069.069 0 0 0 .014.055c.01.013.025.018.042.02l.079.002ZM24.821 5.554h-.083a.162.162 0 0 1-.115-.056.171.171 0 0 1-.037-.133l.264-1.933a.193.193 0 0 1 .185-.169h.084a.162.162 0 0 1 .115.056.17.17 0 0 1 .037.134l-.264 1.932a.193.193 0 0 1-.186.169Zm.216-2.191c-.042 0-.082.038-.088.083l-.264 1.932a.073.073 0 0 0 .014.057c.01.013.025.018.042.02h.081c.042 0 .082-.036.088-.082l.264-1.933a.073.073 0 0 0-.014-.057.057.057 0 0 0-.043-.02h-.08ZM25.431 5.404h-.083a.162.162 0 0 1-.115-.056.17.17 0 0 1-.037-.132l.264-1.933a.194.194 0 0 1 .186-.168h.082a.162.162 0 0 1 .115.055.17.17 0 0 1 .037.133l-.264 1.932a.192.192 0 0 1-.185.169Zm.216-2.191c-.041 0-.082.038-.088.083l-.264 1.933a.072.072 0 0 0 .014.056c.01.013.025.018.043.02h.08c.04 0 .081-.036.087-.081l.264-1.933a.073.073 0 0 0-.014-.056.058.058 0 0 0-.042-.02h-.08v-.002ZM26.082 5.282h-.081a.162.162 0 0 1-.116-.056.17.17 0 0 1-.037-.132l.265-1.933a.194.194 0 0 1 .185-.169h.082a.162.162 0 0 1 .115.056.17.17 0 0 1 .037.132l-.264 1.933a.194.194 0 0 1-.186.169Zm.216-2.191c-.041 0-.082.038-.087.083l-.264 1.932a.073.073 0 0 0 .013.057c.01.012.026.018.043.02h.08c.041 0 .081-.036.087-.082l.264-1.933a.073.073 0 0 0-.014-.057.058.058 0 0 0-.042-.02h-.08Z\",\n    fill: \"#05446D\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"docker-compose_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    d: \"M0 0h30.925v39.29H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDockerCompose);//# sourceURL=webpack-internal:///97642\n");

}),

94822:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDocker = function SvgDocker(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M35.492 15.925c-.1-.085-.997-.782-2.925-.782a9.03 9.03 0 0 0-1.513.137c-.366-2.6-2.477-3.856-2.56-3.924l-.515-.306-.333.493a7.35 7.35 0 0 0-.913 2.175c-.35 1.478-.134 2.87.598 4.06-.881.509-2.31.628-2.61.645H1.116c-.615 0-1.114.51-1.114 1.138a17.526 17.526 0 0 0 1.03 6.2c.815 2.175 2.028 3.788 3.591 4.774 1.762 1.104 4.638 1.732 7.88 1.732 1.462 0 2.925-.136 4.371-.408a17.806 17.806 0 0 0 5.719-2.123 15.735 15.735 0 0 0 3.89-3.26c1.878-2.158 2.992-4.57 3.807-6.71h.332c2.045 0 3.308-.833 4.007-1.546a4.53 4.53 0 0 0 1.063-1.597l.15-.442-.349-.255v-.001Z\",\n    fill: \"#0091E2\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M3.31 17.725h3.157c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289H3.31a.283.283 0 0 0-.283.289v2.887c.017.17.134.29.283.29ZM7.666 17.725h3.158c.15 0 .282-.119.282-.29V14.55a.283.283 0 0 0-.282-.289H7.666a.283.283 0 0 0-.283.289v2.887c.016.17.133.29.283.29ZM12.104 17.725h3.158c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289h-3.158a.283.283 0 0 0-.283.289v2.887c0 .17.117.29.283.29ZM16.475 17.725h3.159c.15 0 .282-.119.282-.29V14.55a.283.283 0 0 0-.282-.289h-3.159a.283.283 0 0 0-.283.289v2.887c0 .17.134.29.283.29ZM7.666 13.597h3.158c.15 0 .282-.136.282-.289v-2.887a.284.284 0 0 0-.282-.29H7.666a.284.284 0 0 0-.283.29v2.887c.016.153.133.29.283.29ZM12.104 13.597h3.158c.15 0 .283-.136.283-.289v-2.887a.284.284 0 0 0-.283-.29h-3.158a.283.283 0 0 0-.283.29v2.887c0 .153.117.29.283.29ZM16.475 13.597h3.159c.15 0 .282-.136.282-.289v-2.887a.295.295 0 0 0-.282-.29h-3.159a.283.283 0 0 0-.283.29v2.887c0 .153.134.29.283.29ZM16.475 9.453h3.159c.15 0 .282-.119.282-.29V6.277a.295.295 0 0 0-.282-.289h-3.159a.284.284 0 0 0-.283.29v2.887c0 .153.134.289.283.289ZM20.883 17.725h3.158c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289h-3.158a.283.283 0 0 0-.283.289v2.887c.016.17.133.29.283.29Z\",\n    fill: \"#0091E2\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDocker);//# sourceURL=webpack-internal:///94822\n");

}),

60218:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgEcr = function SvgEcr(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#ecr_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.345 33.243c7.37 0 13.346-5.976 13.346-13.347 0-7.372-5.975-13.348-13.346-13.348C5.975 6.548 0 12.524 0 19.896c0 7.371 5.975 13.347 13.345 13.347Z\",\n    fill: \"#9F552B\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.345 32.412c7.37 0 13.346-5.976 13.346-13.348 0-7.371-5.975-13.347-13.346-13.347C5.975 5.717 0 11.693 0 19.064c0 7.372 5.975 13.348 13.345 13.348Z\",\n    fill: \"#F58536\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.246 12.69a2.163 2.163 0 0 1-2.161-2.162c0-1.192.969-2.16 2.16-2.16 1.193 0 2.162.968 2.162 2.16a2.163 2.163 0 0 1-2.161 2.162Zm0-2.985a.824.824 0 1 0 0 1.647.824.824 0 0 0 0-1.647ZM13.246 20.617a1.553 1.553 0 0 1 0-3.104 1.553 1.553 0 0 1 0 3.104Zm0-2.149a.597.597 0 1 0 .002 1.195.597.597 0 0 0-.002-1.195Z\",\n    fill: \"#fff\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M12.379 17.274a1.961 1.961 0 0 1 1.731 0h.027l.601-4.617a2.588 2.588 0 0 1-2.979.008l.557 4.609h.063ZM11.188 19.064c0-.279.055-.544.157-.787l-3.997 1.2-2.402 3.568.656.619 2.839-2.695 3.628-.217a2.057 2.057 0 0 1-.88-1.686v-.002ZM19.123 19.475l-3.976-1.192a2.054 2.054 0 0 1-.728 2.469l3.61.216 2.84 2.694.655-.62-2.401-3.567Z\",\n    fill: \"#fff\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M10.432 23.56h-.738v5.015h.738V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M19.087 23.024H7.604v6.16h11.483v-6.16Z\",\n    fill: \"#fff\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M9.03 23.56h-.778v5.015h.778V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M8.934 23.656v4.823h-.587v-4.823h.587Zm.096-.095h-.778v5.014h.778V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M10.598 23.56H9.82v5.015h.778V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M10.502 23.656v4.823h-.586v-4.823h.586Zm.096-.095H9.82v5.014h.778V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M12.166 23.56h-.777v5.015h.777V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M12.07 23.656v4.823h-.586v-4.823h.587Zm.096-.095h-.777v5.014h.777V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.734 23.56h-.778v5.015h.778V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.638 23.656v4.823h-.586v-4.823h.586Zm.096-.095h-.778v5.014h.778V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M15.302 23.56h-.778v5.015h.778V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M15.207 23.656v4.823h-.587v-4.823h.587Zm.095-.095h-.778v5.014h.778V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M16.87 23.56h-.777v5.015h.777V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M16.775 23.656v4.823h-.587v-4.823h.587Zm.095-.095h-.777v5.014h.777V23.56Z\",\n    fill: \"#FFAA71\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.439 23.56h-.778v5.015h.778V23.56Z\",\n    fill: \"#FBBD90\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.343 23.656v4.823h-.586v-4.823h.586Zm.096-.095h-.778v5.014h.778V23.56Z\",\n    fill: \"#FFAA71\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"ecr_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    transform: \"translate(0 5.717)\",\n    d: \"M0 0h26.691v27.526H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgEcr);//# sourceURL=webpack-internal:///60218\n");

}),

31352:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgGithub = function SvgGithub(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 1024 1024\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M512 0C229.12 0 0 229.12 0 512c0 226.56 146.56 417.92 350.08 485.76 25.6 4.48 35.2-10.88 35.2-24.32 0-12.16-.64-52.48-.64-95.36-128.64 23.68-161.92-31.36-172.16-60.16-5.76-14.72-30.72-60.16-52.48-72.32-17.92-9.6-43.52-33.28-.64-33.92 40.32-.64 69.12 37.12 78.72 52.48 46.08 77.44 119.68 55.68 149.12 42.24 4.48-33.28 17.92-55.68 32.64-68.48-113.92-12.8-232.96-56.96-232.96-252.8 0-55.68 19.84-101.76 52.48-137.6-5.12-12.8-23.04-65.28 5.12-135.68 0 0 42.88-13.44 140.8 52.48 40.96-11.52 84.48-17.28 128-17.28 43.52 0 87.04 5.76 128 17.28 97.92-66.56 140.8-52.48 140.8-52.48 28.16 70.4 10.24 122.88 5.12 135.68 32.64 35.84 52.48 81.28 52.48 137.6 0 196.48-119.68 240-233.6 252.8 18.56 16 34.56 46.72 34.56 94.72 0 68.48-.64 123.52-.64 140.8 0 13.44 9.6 29.44 35.2 24.32C877.44 929.92 1024 737.92 1024 512 1024 229.12 794.88 0 512 0Z\",\n    fill: \"#1B1F23\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgGithub);//# sourceURL=webpack-internal:///31352\n");

}),

79309:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4, _path5, _path6, _path7;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgGitlab = function SvgGitlab(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m13.8 32.71 5.08-15.638H8.719l5.081 15.638Z\",\n    fill: \"#E24329\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.8 32.71 8.718 17.072H1.597L13.799 32.71Z\",\n    fill: \"#FC6D26\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M1.596 17.072.052 21.824c-.141.434.013.909.382 1.176l13.365 9.71L1.596 17.072Z\",\n    fill: \"#FCA326\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M1.597 17.072h7.121l-3.06-9.418a.526.526 0 0 0-1 0l-3.061 9.418Z\",\n    fill: \"#E24329\"\n  })), _path5 || (_path5 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m13.8 32.71 5.082-15.638h7.122L13.8 32.71Z\",\n    fill: \"#FC6D26\"\n  })), _path6 || (_path6 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m26.004 17.072 1.544 4.752c.14.434-.014.909-.382 1.176L13.8 32.71l12.203-15.638Z\",\n    fill: \"#FCA326\"\n  })), _path7 || (_path7 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M26.002 17.072h-7.121l3.06-9.418a.526.526 0 0 1 1 0l3.061 9.418Z\",\n    fill: \"#E24329\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgGitlab);//# sourceURL=webpack-internal:///79309\n");

}),

31821:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgGoogle = function SvgGoogle(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    viewBox: \"0 0 24 24\",\n    width: \"1em\",\n    height: \"1em\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#4285F4\",\n    d: \"M23.745 12.27c0-.79-.07-1.54-.19-2.27h-11.3v4.51h6.47c-.29 1.48-1.14 2.73-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82Z\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#34A853\",\n    d: \"M12.255 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96h-3.98v3.09C3.515 21.3 7.565 24 12.255 24Z\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#FBBC05\",\n    d: \"M5.525 14.29c-.25-.72-.38-1.49-.38-2.29s.14-1.57.38-2.29V6.62h-3.98a11.86 11.86 0 0 0 0 10.76l3.98-3.09Z\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#EA4335\",\n    d: \"M12.255 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C18.205 1.19 15.495 0 12.255 0c-4.69 0-8.74 2.7-10.71 6.62l3.98 3.09c.95-2.85 3.6-4.96 6.73-4.96Z\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgGoogle);//# sourceURL=webpack-internal:///31821\n");

}),

8810:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgGooglecloud = function SvgGooglecloud(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 256 206\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    preserveAspectRatio: \"xMidYMid\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m170.252 56.819 22.253-22.253 1.483-9.37C153.437-11.677 88.976-7.496 52.42 33.92 42.267 45.423 34.734 59.764 30.717 74.573l7.97-1.123 44.505-7.34 3.436-3.513c19.797-21.742 53.27-24.667 76.128-6.168l7.496.39Z\",\n    fill: \"#EA4335\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M224.205 73.918a100.249 100.249 0 0 0-30.217-48.722l-31.232 31.232a55.515 55.515 0 0 1 20.379 44.037v5.544c15.35 0 27.797 12.445 27.797 27.796 0 15.352-12.446 27.485-27.797 27.485h-55.671l-5.466 5.934v33.34l5.466 5.231h55.67c39.93.311 72.553-31.494 72.864-71.424a72.303 72.303 0 0 0-31.793-60.453\",\n    fill: \"#4285F4\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M71.87 205.796h55.593V161.29H71.87a27.275 27.275 0 0 1-11.399-2.498l-7.887 2.42-22.409 22.253-1.952 7.574c12.567 9.489 27.9 14.825 43.647 14.757\",\n    fill: \"#34A853\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M71.87 61.425C31.94 61.664-.237 94.228.001 134.159a72.301 72.301 0 0 0 28.222 56.88l32.248-32.246c-13.99-6.322-20.208-22.786-13.887-36.776 6.32-13.99 22.786-20.208 36.775-13.888a27.796 27.796 0 0 1 13.887 13.888l32.248-32.248A72.224 72.224 0 0 0 71.87 61.425\",\n    fill: \"#FBBC05\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgGooglecloud);//# sourceURL=webpack-internal:///8810\n");

}),

82732:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgHelm = function SvgHelm(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#helm_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M2.034 12.08h19.932M4.059 7.913A9.317 9.317 0 0 1 5.437 6.11m0 0a9.253 9.253 0 0 1 6.635-2.792c2.561 0 4.88 1.037 6.559 2.714M5.437 6.11 3.87 4.542M5.437 6.11l.009.008m13.185-.086a9.32 9.32 0 0 1 1.455 1.881M18.63 6.032l1.556-1.557M18.63 6.032l-.007.006m-6.63-4.993v2.273m7.975 12.751a9.315 9.315 0 0 1-1.378 1.803m0 0a9.253 9.253 0 0 1-6.635 2.792 9.252 9.252 0 0 1-6.559-2.713m13.194-.079 1.567 1.568m-1.567-1.568-.009-.008m-13.185.087a9.318 9.318 0 0 1-1.455-1.882m1.455 1.882-1.556 1.556m1.556-1.556.007-.007m6.63 4.993v-2.273\",\n    stroke: \"currentColor\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"helm_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    transform: \"rotate(90 12 12)\",\n    d: \"M0 0h24v24H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgHelm);//# sourceURL=webpack-internal:///82732\n");

}),

83673:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgInternal = function SvgInternal(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M14.38 14.085c-3.026 0-5.479 2.425-5.479 5.416 0 2.991 2.453 5.416 5.48 5.416 3.026 0 5.479-2.425 5.479-5.416 0-2.991-2.453-5.416-5.48-5.416Zm-6.563 5.416c0-3.583 2.939-6.487 6.563-6.487 3.625 0 6.564 2.904 6.564 6.487s-2.939 6.487-6.563 6.487c-3.625 0-6.564-2.904-6.564-6.487Zm6.563-2.916c.3 0 .542.24.542.535v3.468l1.484-1.466a.546.546 0 0 1 .766 0 .531.531 0 0 1 0 .758l-2.408 2.38a.547.547 0 0 1-.767 0l-2.408-2.38a.531.531 0 0 1 0-.758.546.546 0 0 1 .766 0l1.484 1.466V17.12c0-.296.242-.535.541-.535Z\",\n    fill: \"#0086C9\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgInternal);//# sourceURL=webpack-internal:///83673\n");

}),

74808:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgKubernetes = function SvgKubernetes(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.849 32.493c-1.69 0-3.381-.014-5.07.007-.769.008-1.361-.264-1.843-.869C4.798 28.95 2.648 26.28.498 23.606c-.431-.536-.6-1.107-.436-1.809.79-3.376 1.55-6.76 2.322-10.142.154-.678.546-1.143 1.18-1.444a1799.08 1799.08 0 0 0 9.357-4.484c.652-.315 1.273-.295 1.92.015 3.096 1.493 6.195 2.983 9.3 4.457.658.312 1.057.789 1.217 1.488.77 3.383 1.536 6.766 2.32 10.145.15.648.014 1.196-.39 1.699-2.172 2.708-4.345 5.416-6.51 8.13-.467.587-1.055.843-1.794.837-1.71-.013-3.422-.004-5.133-.004l-.003-.001Zm-.435-21.608c.03.872-.075 1.005-.876 1.163-1.42.28-2.704.863-3.745 1.885-.392.386-.723.304-1.072.055-.27-.191-.487-.456-.73-.685-.166-.155-.322-.335-.512-.454-.28-.174-.572-.149-.776.132-.185.253-.139.526.07.743.143.147.326.257.5.371.259.174.537.321.787.509.507.381.554.64.253 1.185a7.636 7.636 0 0 0-.955 4.038c.027.783-.202 1.03-.988 1.12-.352.04-.707.061-1.056.12-.395.067-.675.287-.59.728.082.426.427.49.78.404.383-.095.748-.255 1.125-.371.772-.237 1.032-.112 1.356.626a7.471 7.471 0 0 0 2.582 3.164c.495.351.575.652.289 1.204-.134.257-.308.497-.461.746-.098.16-.2.318-.286.484-.172.332-.098.622.208.819.341.219.635.049.787-.25.206-.406.325-.855.49-1.282.264-.686.54-.823 1.218-.633a7.583 7.583 0 0 0 4.134.007c.672-.187.92-.075 1.186.588.155.387.252.798.425 1.177.155.343.416.621.837.398.391-.208.406-.559.205-.914-.196-.345-.434-.666-.63-1.01-.383-.679-.328-.91.29-1.364a7.518 7.518 0 0 0 2.56-3.26c.253-.615.494-.737 1.143-.545.399.118.781.293 1.183.394.359.091.729.078.868-.372.112-.366-.134-.667-.63-.749-.39-.065-.789-.074-1.18-.134-.624-.097-.852-.372-.826-.99.063-1.48-.252-2.866-.98-4.156-.277-.494-.233-.788.224-1.147.262-.205.56-.36.838-.543.172-.115.357-.223.5-.37.21-.216.254-.484.07-.743-.188-.266-.468-.29-.726-.162-.198.099-.36.279-.527.434-.228.214-.432.456-.67.657-.474.4-.76.392-1.21-.008a7.752 7.752 0 0 0-3.83-1.862c-.582-.107-.759-.297-.735-.898.016-.416.092-.83.129-1.245.045-.486-.227-.88-.594-.879-.367.002-.638.395-.59.882.034.332.09.661.139.993h-.003.002Z\",\n    fill: \"#326CE4\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.413 10.885c-.046-.332-.104-.66-.138-.993-.049-.487.222-.88.59-.882.367-.001.639.393.594.879-.04.417-.115.83-.13 1.246-.022.6.153.79.735.897a7.741 7.741 0 0 1 3.83 1.862c.45.4.736.409 1.21.008.239-.2.443-.443.67-.657.167-.155.33-.336.527-.434.258-.128.54-.104.727.162.183.259.139.526-.071.742-.143.148-.327.255-.5.37-.277.185-.576.34-.838.544-.457.359-.501.654-.223 1.147.727 1.29 1.042 2.677.98 4.156-.027.617.202.892.825.99.392.06.79.07 1.18.134.497.083.744.383.63.75-.139.45-.509.462-.868.371-.401-.1-.785-.275-1.182-.394-.65-.192-.89-.07-1.144.545a7.518 7.518 0 0 1-2.56 3.26c-.618.453-.674.684-.29 1.363.196.345.433.666.63 1.01.202.357.187.707-.204.915-.421.223-.682-.056-.838-.398-.172-.377-.269-.79-.425-1.177-.267-.663-.513-.775-1.185-.588a7.576 7.576 0 0 1-4.134-.007c-.68-.189-.955-.051-1.218.633-.165.428-.285.877-.49 1.283-.15.298-.446.468-.787.249-.306-.196-.379-.487-.208-.819.086-.166.186-.324.285-.484.153-.25.326-.487.461-.746.287-.552.207-.853-.288-1.204a7.472 7.472 0 0 1-2.583-3.164c-.323-.739-.584-.862-1.356-.626-.377.116-.742.275-1.124.372-.353.087-.697.022-.78-.405-.086-.441.195-.66.59-.727.347-.06.703-.081 1.056-.121.787-.088 1.015-.337.987-1.12a7.637 7.637 0 0 1 .955-4.038c.301-.545.255-.804-.253-1.185-.25-.188-.528-.335-.787-.508-.173-.115-.356-.224-.5-.372-.208-.217-.255-.49-.07-.743.206-.28.498-.306.776-.132.19.12.346.297.513.454.243.23.46.494.73.685.349.249.679.331 1.072-.055 1.039-1.022 2.322-1.606 3.745-1.885.8-.157.905-.291.876-1.163h.002-.002Zm-.328 3.414h.034c0-.166-.009-.335.002-.5.015-.23-.07-.284-.293-.24a6.313 6.313 0 0 0-2.9 1.38c-.235.196-.189.307.038.462.67.46 1.324.944 1.994 1.404.605.416.977.232 1.025-.501.042-.667.067-1.336.1-2.005Zm-5.206 5.033c-.005.516.219.708.673.576.697-.202 1.399-.394 2.091-.61.635-.197.732-.591.248-1.049-.589-.558-1.217-1.076-1.802-1.641-.31-.301-.423-.151-.566.139a6.455 6.455 0 0 0-.644 2.584v.001Zm5.968 6.131c.545.015 1.074-.082 1.6-.213.215-.054.353-.088.198-.358-.444-.778-.85-1.578-1.31-2.347-.256-.43-.687-.426-.94.006-.454.773-.867 1.568-1.305 2.35-.114.204-.067.278.158.335.527.132 1.054.236 1.6.227v.001h-.001Zm6.009-6.113c-.049-.84-.229-1.711-.63-2.53-.162-.333-.346-.446-.66-.15-.562.526-1.152 1.026-1.713 1.555-.504.474-.399.87.278 1.074.696.212 1.396.407 2.094.608.64.185.643.184.63-.557Zm-3.068 1.703c-.902.04-1.014.21-.709.964.29.717.598 1.426.879 2.146.095.244.172.364.432.168.886-.67 1.565-1.5 1.992-2.53.053-.127.15-.297-.091-.34-.861-.146-1.725-.28-2.504-.408Zm-2.17-6.828h.02c.035.686.068 1.372.107 2.06.042.739.408.934 1.008.523.65-.447 1.272-.935 1.936-1.36.354-.229.275-.355.01-.572a6.244 6.244 0 0 0-2.725-1.294c-.358-.074-.392.048-.36.332.01.103 0 .207 0 .312h.004v-.001Zm-2.771 7.327c-.098-.212-.086-.491-.453-.478-.923.034-1.823.235-2.733.361-.32.044-.386.183-.26.46a6.1 6.1 0 0 0 1.935 2.412c.22.164.333.167.438-.128.19-.528.428-1.04.642-1.56.143-.345.28-.694.43-1.065v-.002Zm2.051-2.89c-.64-.002-1.016.252-1.03.696-.019.532.499 1.13.988 1.14.465.01.997-.554 1-1.06.003-.47-.372-.776-.958-.778v.002Z\",\n    fill: \"#FDFDFE\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M13.086 14.3c-.032.667-.057 1.336-.1 2.004-.048.734-.42.917-1.024.501-.67-.46-1.324-.945-1.994-1.404-.227-.156-.272-.266-.039-.463a6.32 6.32 0 0 1 2.901-1.38c.224-.043.308.012.293.24-.011.166-.003.335-.003.502h-.034v-.001ZM7.88 19.332c.038-.86.233-1.747.645-2.584.143-.29.256-.441.567-.139.583.565 1.213 1.08 1.802 1.641.483.46.386.853-.248 1.05-.693.215-1.394.406-2.091.61-.454.131-.678-.06-.673-.577l-.001-.001ZM13.85 25.462c-.545.01-1.073-.096-1.6-.228-.225-.057-.27-.131-.157-.335.437-.781.85-1.578 1.304-2.35.253-.432.685-.437.941-.006.459.768.866 1.569 1.31 2.347.154.269.014.303-.198.357-.527.133-1.055.23-1.601.214ZM19.856 19.35c.013.74.01.744-.63.557-.697-.202-1.398-.397-2.094-.608-.676-.205-.781-.598-.278-1.074.562-.529 1.15-1.029 1.713-1.556.315-.294.498-.183.66.15.402.82.58 1.692.63 2.531ZM16.79 21.052c.778.126 1.642.262 2.504.41.24.04.143.21.091.339-.428 1.03-1.106 1.862-1.992 2.53-.26.196-.337.075-.432-.169-.28-.72-.588-1.43-.878-2.145-.306-.754-.193-.924.708-.964v-.001ZM14.62 14.224c0-.105.01-.21-.002-.313-.03-.283.003-.404.361-.33 1.02.21 1.919.638 2.724 1.293.266.217.346.343-.01.571-.663.427-1.285.914-1.936 1.36-.599.412-.966.217-1.008-.523-.038-.686-.07-1.373-.106-2.06h-.024v.002ZM11.846 21.55c-.15.372-.287.72-.43 1.066-.214.52-.45 1.03-.641 1.56-.105.294-.22.293-.439.128A6.113 6.113 0 0 1 8.4 21.892c-.126-.278-.06-.417.261-.46.91-.125 1.81-.328 2.733-.362.368-.014.355.267.453.479v.001ZM13.899 18.66c.585.001.961.305.959.777-.004.507-.535 1.07-1 1.06-.489-.011-1.007-.608-.99-1.14.015-.443.393-.699 1.032-.696l-.002-.002h.001Z\",\n    fill: \"#326CE4\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgKubernetes);//# sourceURL=webpack-internal:///74808\n");

}),

20863:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgLinode = function SvgLinode(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 32 32\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m9.545 14.42-1.2-8.258L3.37 3.074l1.612 7.8 4.562 3.556zm1.38 9.443-.852-5.823-4.356-3.63 1.17 5.648 4.038 3.804zm-3.383-.64.862 4.165L12 31.205 11.386 27l-3.842-3.78zm11.644-1.806-1.837-1.402.014.33a.19.19 0 0 1-.084.166l-1.386.934 1.507 1.23c.02.02.03.027.035.036l.022.042c.008.027.01.037.01.048l.064 1.45 1.7 1.423-.036-4.26zm6.3-4.507-.36 4.153-1.2-.828.13-2.118c0-.024-.002-.033-.003-.04-.006-.032-.012-.046-.02-.06s-.02-.028-.032-.04a.23.23 0 0 0-.032-.028l-2.56-1.69.037-1.856 4.03 2.51\",\n    fill: \"#123d10\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m16.59 11.116-.335-7.84-7.53 2.894 1.23 8.4 6.635-3.453zm.4 9.135-.246-5.78-6.27 3.57.88 6.01 5.638-3.798zm.127 2.93-5.333 3.816.648 4.422 4.872-3.88-.186-4.357zm2.465-1.762.036 4.275 3.8-3.032.253-4.17-4.1 2.926zm9.48-6.782-.534 3.955-2.998 2.4.352-4.068 3.18-2.276\",\n    fill: \"#33b652\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m17.472 22.812-.008-.042a.21.21 0 0 0-.019-.044c-.015-.024-.023-.032-.03-.04l-1.52-1.24 1.386-.934a.19.19 0 0 0 .084-.166l-.014-.33 1.837 1.402.036 4.26-1.7-1.423-.062-1.44zm-7.398-4.772.852 5.823-4.038-3.804-1.17-5.648 4.356 3.63zm6.904 2.212L11.34 24.05l-.88-6.01 6.27-3.57.246 5.78zm-.725-16.975.335 7.84-6.635 3.453-1.23-8.4 7.53-2.894zM8.335 6.16l1.2 8.258-4.562-3.556-1.612-7.8L8.335 6.16zm.07 21.225-.862-4.165L11.386 27l.615 4.203-3.596-3.817zm8.885.152-4.872 3.88-.648-4.422 5.333-3.816.186 4.357zm6.116-4.876-3.8 3.032-.036-4.275 4.1-2.926-.253 4.17zm.53-2.428.13-2.118c0-.024-.002-.033-.003-.04-.006-.032-.012-.046-.02-.06s-.02-.028-.032-.04a.23.23 0 0 0-.032-.028l-2.56-1.69.037-1.856 4.03 2.51-.36 4.153-1.2-.828zm1.58.747.352-4.068 3.18-2.276-.534 3.955-2.998 2.4zm3.97-6.77-.006-.03a.176.176 0 0 0-.01-.03.23.23 0 0 0-.027-.045c-.02-.023-.03-.03-.04-.038l-4.368-2.42a.182.182 0 0 0-.192.008l-3.674 2.246c-.006 0-.01.01-.016.013s-.013.01-.02.015l-.016.02c-.005.008-.01.01-.014.018s-.008.017-.01.026-.006.013-.008.02-.003.02-.004.03l-.042 1.97-1.494-.987a.186.186 0 0 0-.205 0l-2.15 1.314-.093-2.186-.007-.042a.118.118 0 0 0-.007-.02.19.19 0 0 0-.011-.024c-.004-.008-.008-.013-.013-.02l-.015-.02c-.005-.007-.012-.01-.02-.016l-2.25-1.514 2.094-1.1a.192.192 0 0 0 .103-.178l-.352-8.228a.313.313 0 0 0-.005-.03c-.006-.03-.013-.045-.022-.06s-.022-.03-.032-.04c-.017-.017-.022-.02-.028-.024-.017-.008-.02-.008-.022-.015L10.873.115a.19.19 0 0 0-.14-.011L3.036 2.502l-.05.028-.04.037-.014.023c-.004.008-.01.015-.013.024l-.01.03c-.006.03-.005.04-.005.05l.001.027 1.718 8.302c.01.044.034.084.07.112l2.33 1.817-1.685.802c-.02.008-.022.015-.026.016l-.027.023c-.022.024-.028.036-.034.047a.14.14 0 0 0-.02.062.24.24 0 0 0 .002.055l1.292 6.25a.19.19 0 0 0 .056.1l1.622 1.528-1.075.658c-.014.008-.026.02-.038.03a.282.282 0 0 0-.032.045.22.22 0 0 0-.021.065.171.171 0 0 0 .003.055l1 4.842a.195.195 0 0 0 .048.092l4.048 4.298c.006.008.013.01.02.017.02.017.033.024.047.03.027.008.05.013.072.013s.038 0 .056-.01.022-.008.027-.015c.008 0 .014-.01.02-.014l5.223-4.157a.195.195 0 0 0 .072-.157l-.122-2.85 1.74 1.464c.02.015.03.023.04.028s.02.008.025.015c.02.008.038.01.057.01s.037-.008.056-.01c.017-.008.022-.008.026-.015.01-.008.017-.01.026-.017l4.186-3.337a.192.192 0 0 0 .072-.138l.127-2.09 1.27.884c.012.008.015.015.02.015.007.008.015.008.023.01.033.015.05.015.067.015s.038 0 .056-.01.02-.008.026-.015c.01-.008.02-.012.03-.018l3.415-2.722a.183.183 0 0 0 .07-.124l.604-4.47.001-.037\",\n    fill: \"#231f20\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgLinode);//# sourceURL=webpack-internal:///20863\n");

}),

80257:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgMicrosoft = function SvgMicrosoft(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M11.246 7.461H0v11.247h11.246V7.46Z\",\n    fill: \"#F35325\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M23.703 7.461H12.457v11.247h11.246V7.46Z\",\n    fill: \"#81BC06\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M11.246 19.919H0v11.246h11.246V19.92Z\",\n    fill: \"#05A6F0\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M23.703 19.919H12.457v11.246h11.246V19.92Z\",\n    fill: \"#FFBA08\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgMicrosoft);//# sourceURL=webpack-internal:///80257\n");

}),

90828:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgNomad = function SvgNomad(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M12.273 6.172 0 13.328v14.316L12.265 34.8l12.273-7.156V13.328L12.273 6.172Zm5.476 15.75L14.48 23.83l-3.95-2.183v4.563l-3.711 2.38v-9.535l2.948-1.822 4.086 2.175V14.75l3.896-2.367v9.54Z\",\n    fill: \"#00CA8E\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgNomad);//# sourceURL=webpack-internal:///90828\n");

}),

70003:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgOpenldap = function SvgOpenldap(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 744.09 1052.4\",\n    width: \"1em\",\n    height: \"1em\"\n  }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"openldap_svg__e\",\n    y2: 129.23,\n    gradientUnits: \"userSpaceOnUse\",\n    x2: 89.429,\n    gradientTransform: \"translate(244.83 -81.693) scale(1.9236)\",\n    y1: 129.23,\n    x1: 80.916\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#60c\"\n    },\n    offset: 0\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#60c\",\n      stopOpacity: 0\n    },\n    offset: 1\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"openldap_svg__d\",\n    y2: 129.23,\n    gradientUnits: \"userSpaceOnUse\",\n    x2: 89.429,\n    gradientTransform: \"translate(216.56 -73.967) scale(1.9236)\",\n    y1: 129.23,\n    x1: 80.916\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#60c\"\n    },\n    offset: 0\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#60c\",\n      stopOpacity: 0\n    },\n    offset: 1\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"openldap_svg__b\",\n    y2: 465.09,\n    gradientUnits: \"userSpaceOnUse\",\n    x2: 77.015,\n    gradientTransform: \"translate(267.18 -40.495) scale(1.9236)\",\n    y1: 384.81,\n    x1: 8.535\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#6d5744\"\n    },\n    offset: 0\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#6d5744\",\n      stopOpacity: 0\n    },\n    offset: 1\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"openldap_svg__a\",\n    y2: 197.66,\n    gradientUnits: \"userSpaceOnUse\",\n    x2: 100.23,\n    gradientTransform: \"translate(267.18 -40.495) scale(1.9236)\",\n    y1: 163.64,\n    x1: -41.915\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#6d5744\"\n    },\n    offset: 0\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#6d5744\",\n      stopOpacity: 0\n    },\n    offset: 1\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"openldap_svg__c\",\n    y2: 202.05,\n    gradientUnits: \"userSpaceOnUse\",\n    x2: 416.51,\n    y1: 220.22,\n    x1: 420.17\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#212121\"\n    },\n    offset: 0\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    style: {\n      stopColor: \"#212121\",\n      stopOpacity: 0\n    },\n    offset: 1\n  }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M416.93 357.28c-13.927 2.158-29.996 7.106-40.074 15.502 4.966 23.732 26.302-3.863 41.709 1.114 19.575-1.994 11.267-20.953-1.636-16.616zM405.02 320.44c-14.087-.44-30.791 1.47-42.241 7.87.518 24.24 26.564 1.039 40.793 8.764 19.608 1.639 14.927-18.525 1.447-16.634zM445.25 394.59c-13.87 2.5-29.812 7.842-39.68 16.484 5.548 23.602 26.199-4.51 41.724.087 19.52-2.475 10.748-21.224-2.044-16.57zM469.88 440.79c-14.484-5.122-45.334 19.408-19.277 22.574 8.32-8.557 21.103-5.338 32.541-7.27 13.791-10.401-3.588-17.608-13.264-15.303zM511.36 603.7c-19.378 6.19.023 20.385 12.165 15.99 8.792.11 17.767-.418 26.333.712 14.807-8.3-3.011-20.33-13.628-16.702h-24.87zM543.52 678c-16.558-7.786-30.682 18.894-7.972 16.243 11.17-3.076 30.464 6.068 35.019-8.248-1.659-13.088-18.785-5.98-27.047-7.995zM510.94 752.36c-23.064 11.227 20.121 24.639 19.417 29.155 5.015 8.059 5.422 11.558 9.593 13.687 18.953 4.068 9.72-18.678.806-25.048-8.268-8.393-17.81-15.759-29.816-17.794zM536.13 790.23l.06.24zM458.58 832.25c-21.038 7.37 4.813 20.578 14.908 23.685-2.962 12.592 14.925 29.912 18.094 9.738 1.794-20.17-15.98-29.587-33.002-33.423z\",\n    style: {\n      stroke: \"#816647\",\n      strokeWidth: 2.5007,\n      fill: \"#ff9\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    style: {\n      stroke: \"#015a01\"\n    }\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M155.98 488.01a31.122 36.497 0 1 1-1.22-64.48\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.9,\n      fill: \"#6c3\"\n    },\n    transform: \"translate(-39.643 -60.964) scale(1.9236)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M135.8 445.27a33.986 36.899 0 1 1 9.737 39.546\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.88405,\n      fill: \"#6c3\"\n    },\n    transform: \"rotate(-10.219 -127.089 1148.416) scale(1.95832)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M167.9 478.33a43.697 33.986 0 1 1 38.346 11.559\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.84894,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(1.86568 .99923 -1.08995 1.6453 463.551 -138.373)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M205.36 406.05a50.381 30.214 0 1 1 75.368 24.902\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.86545,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(1.82128 .74478 -.71166 1.9061 206.257 -166.5)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M221.38 425.53a50.381 28.411 0 1 1 67.773.438\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.82037,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(1.99535 .47632 -.45534 2.12327 90.042 -217.313)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M206.04 409.53a50.381 28.411 0 1 1 86.24 14.733\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.77966,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(2.0465 0 0 2.4093 -88.464 -261.585)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M225.39 392a46.972 26.895 0 1 1 62.784-15.176\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.806,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(2.1562 0 0 2.1396 -89.484 -106.989)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M157.51 375.64c4.938-9.01 1.653-17.354-7.625-24.469 6.077-17.646-8.654-60.144-35.031-91.812-1.38-1.658-3.293-2.985-5.625-4-6.188-22.424-26.148-28.54-43.875-23.594-23.792 6.64-44.719 13.087-44.719 29.25 0 8.436 5.46 16.034 14.188 21.375-.31.68-.594 1.362-.844 2.063-6.48 27.8 16.103 65.353 26.031 76.75.145.166.293.308.438.468-5.575 13.415 6.61 27.527 29.75 32.97\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.9,\n      fill: \"#6c3\"\n    },\n    transform: \"translate(215.33 -72.118) scale(1.9236)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M165.1 192.18a35.714 25.423 0 1 1 60.364-7.458\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.75961,\n      fill: \"#6c3\"\n    },\n    transform: \"rotate(-7.122 141.565 1368.623) scale(2.27916)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M165.18 192.64a35.714 26.026 0 1 1 58.892-5.404\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.75961,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(2.279 0 0 2.279 -132.014 -86.976)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M178.08 200.01a35.714 26.582 0 1 1 43.239-9.101\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.75961,\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(2.279 0 0 2.279 -127.205 -135.85)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M194.64 164.22a50.528 44.244 0 1 1 42.772 22.373\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 0.9,\n      fill: \"#6c3\"\n    },\n    transform: \"rotate(-25.365 260.383 483.741) scale(1.9236)\"\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M345.16 123.48c-18.445 2.416-36.231 9.639-51.157 20.739 3.67 10.439 8.552 19.439 7.764 31.245 6.17 3.425 6.974.76 8.707 8.67-5.472 1.348 12.146 3.992 16.65 3.197 12.842-6.387 1.965-24.003 5.472-35.177-1.157-12.639 4.178-18.613 12.564-28.674zm-11.662 17.072c-1.079 1.83 2.06.045 0 0zm-54.47 17.26c-14.103 14.686-23.007 34.328-24.586 54.643 5.548 6.701 10.064 14.055 23.745 12.744 12.83-.612 25.13 13.586 38.054 3.77.558-10.675-11.82-20.203-21.377-24.201-10.807-5.478-9.337-17.826-11.324-24.49-4.484-7.632-1.208-4.536-4.03-14.411-.42-2.662-.528-5.365-.481-8.056zm-39.194 77.006c-12.088 13.667-14.622 34.874-6.492 51.157-8.447 11.861-13.275 28.947-6.387 42.527 8.684 9.376 15.535 18.781 23.923 27.836 5.148 4.231 29.949 1.327 22.899-9.392 3.62-9.74 11.573-4.67 20.46-5.546-.882-6.944-13.13-21.402-3.727-21.28-5.308-.467-10.441.912-16.634-.663-2.316 1.179-11.748 3.965-16.789 7.156-2.813-4.37-9.528-9.026-14.006-13.285 6.329-6.942 12.568-11.394 18.635-22.362-1.418-11.027 1.41-23.937-4.952-34.526-4.39-7.982-9.538-16.258-16.93-21.62zm21.04 29.576c-2.579 2.068 2.648 1.222 0 0zm33.063 1.262c-7.962 8.595-13.598-.637-22.603 6.853-7.391 6.563-7.957 18.171.767 23.49 4.06 2.449 8.14 13.005 11.977 4.824 3.508-.209 6.1-.73 12.383-6.252 8.126-2.643 16.85-9.205 7.935-11.722-1.73 2.567-1.673-1.994-4.267-3.908-2.254 2.354-1.054-11.239-6.192-13.285zm9.678 15.15c-4.602 4.341 3.15 1.218 0 0zm-11.963 20.438c6.236 3.03 17.23-.028 4.42.286-1.482.204-2.946-.174-4.42-.286zm12.203.481c-.595 3.29 1.896.633 0 0zm-56.026 14.908c-.85.904 1.544.19 0 0zm43.703 3.487c-2.573 1.483 1.96-.001 0 0zm.421.12c-.561.637 1.28.297 0 0zm-13.646 20.92c-1.301.21.812 1.138 0 0zm3.907.42c-3.404 3.408 4.722.294 0 0zm-38.713 20.139c-16.799 2.284-10.957 31.496 2.805 33.354 5.64 9.286 19.757 13.694 24.547 24.655 12.72 4.112 22.56-7.895 20.44-20.018 8.73 1.284 22.706-6.826 20.378-18.335-11.926-.224-22.746-2.603-33.62 2.757-15.887 2.693-25.953-11.899-34.549-22.415zm45.025 14.968c-2.295 3.054 1.946 1.48 0 0zm-.781 1.503c-1.04-3.208-2.889 3.588 0 0zm2.645-1.503c-3.15 1.919 5.565.92 0 0zm.842 1.683c-1.517 1.519 3.67.686 0 0zm22.362 4.268c-2.081 2.173 2.8 3.946 0 0zm1.923 42.44c-1.06 2.522 4.023 2.282 0 0zm-60.835.481c-3.129 19.345 11.046 36.912 26.69 46.468-7.272 14.968 24.864 4.591 22.53-7.431-3.52-4.406-3.597-8.426-6.66-12.226 10.34.225 18.674-.723 29.335-7.574 10.545-.483-9.431-19.033-14.573-17.474-7.491 6.703-18.908 3.173-26.725 11.463-8.885-6.562-19.78-11.221-30.598-13.225zm50.616 27.232c-2.016.842 3.15 1.795 0 0zm-.781 8.236c-5.884 2.548 3.093 1.194 0 0z\",\n    style: {\n      fill: \"url(#openldap_svg__a)\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M376.06 624.62c-5.876 3.042-21.757 3.705-21.12 7.535 6.706 3.036-9.727 2.31-3.046-1.524-6.055 3.63-4.387-1.105-6.973 4.509-4.344-.588-1.79-8.583-9.235-2.745-12.237 6.275-3.708 20.152 2.654 27.602 2.665 6.133 15.762-6.604 17.04 4.539 8.022-2.48 15.796-2.173 24.888-5.53 7.495-.574 12.594 10.91 15.569 5.95 7.221-1.065 4.553 7.088 9.323.252 5.226-7.084 10.894-21.606 4.856-21.06-2.713-2.06-4.296-9.432.008-2.996 4.307-2.722.144-4.5 6.852-4.492 4.604-4.489-10.706 2.535-3.846-2.481-8.94.797 7.612-4.563-4.702-3.546-8.26-1.493-26.336 1.196-28.377-1.918 6.607-4.343-4.686 1.95-3.89-4.095zm-30.177 6.853c-.382-2.596-2.783-.59 0 0zm38.413-5.35c-5.547 4.11 3.66 3.36 0 0zm-35.167 3.246c-5.571 2.012 3.462 2.668 0 0zm-4.508 2.044c-3.596 1.388 5.346 4.043 0 0zm-1.684.54c-.852 1.16.955 2.003 0 0zm69.792 10.28c-3.374 1.08 2.565 1.766 0 0zm.782 12.444 4.93 12.444c-1.211-4.275-1.661-9.11-4.93-12.444zm-65.764 27.592c-5.276 5.044-13.384 8.078-14.41 16.23-5.04 9.286.73 20.869 9.09 22.718 4.203 9.595 17.532 7.67 22.512 16.336 10.903 2.65 26.672.473 27.793-13.261 6.018-16.31 13.062 9.716 22.882 9.772 4.928-1.522 7.334-2.06 10.615 1.278 3.227-2.624 8.773-1.22 12.59-5.944 2.41-1.37 5.576-10.131-1.49-13.02-6.048-4.783-11.199-22.286-19.283-11.598-2.185-3.091-10.746-6.59-9.8-.397-5.938 4.84-10.636.017-5.796-4.921-11.975 1.757-23.053-.588-34.994-.398-5.478 1.504-14.347 1.281-6.786-4.471-3.455-4.987-10.878-6.38-12.924-12.323zm17.794 13.105c-10.605 2.308 7.362 2.827 0 0zm51.157 4.809c-1.854 2.246 4.144 1.687 0 0zm2.164 1.323c-2.217 4.01 3.012.564 0 0zm-77.066 20.859c-2.942 1.253 1.563 2.385 0 0zm102.19 2.284c.7 2.992 4.89 1.724 0 0zm-125.94 6.672c-8.115 5.513-20.707 9.841-24.887 18.094 5.362 7.538 9.86 15.711 12.55 23.686 3.711 1.483 12.27 11.936 10.233 7.152-2.548-3.394 10.374 6.403 2.557 2.03-3.485 5.547 6.905 14.76 12.921 6.704 3.367-2.554 11.628-6.886 5.261.043-6.153 14.272 11.76 23.915 21.881 23.324-1.587 5.039 13.156 3.343 10.16-3.787 9.783 6.205 10.034-12.581 12.15-18.922 1.04-4.433 2.08-8.866 3.118-13.3-1.89 2.532-9.142.334-9.002 1.835-4.931-4.11-13.488 3.44-16.666-.151-6.938-1.54-9.062-7.517-9.739-12.985-8.094.567-3.698.62-1.576-4.514-5.869-.315-13.837-1.76-12.14-7.101-11.402-4.656-2.209-15.071-10.819-21.29-1.93-.648-3.984-.769-6.003-.82zm-44.965 12.864c-8.59-.995-7.514 5.968-13.225 2.946-10.15 5.745-20.136-2.751-30.925-1.387-29.137.253-51.071 29.092-55.872 56.42-7.326 13.756 5.339-.477 13.637-2.2-2.174-12.195 15.58-25.188 15.597-13.978-2.572 4.957.562 35.905 9.372 42.415 5.65 7.411 15.864 7.438 16.829-3.37 2.964-7.94 10.06-14.312 13.028-18.147-6.703 3.544-3.79-6.904-7.88-9.219 6.738-6.241-3.49-25.475.967-30.577 1.888.822 19.213-10.243 18.074 3.77 1.16 3.555-8.118 5.14-2.024 8.433-7.658 4.665 3.455 5.39-3.427 9.498 3.253 5.399 6.01 9.833 2.165 15.028 5.35 2.88-.846 4.956 2.464 9.859 1.778 3.928 6.245.778 1.383 5.41-1.361 8.392 12.419 11.331 9.277 18.591 8.517 3.138 17.255 14.93 21.647 1.175 4.39-6.642 8.989-13.158 13.44-19.766-3.415 1.673-6.978-2.014-10.4-3.306 3.183-7.442-7.567-10.669-4.388-18.695 2.026-5.576-2.942-14.986 1.397-15.442-3.634-2.89 2.346.649-.435-4.335 3.824-1.818-1.302-7.133 5.59-7.094-4.774-7.513 7.287-4.69 3.06-10.753-6.328-3.212 11.084-14.42-1.016-12.034-3.592-.464-14.71-3.287-18.334-3.242zm68.409 12.564c-5.594.816-1.062 2.671 0 0zm-106.58 10.76c-3.124 2.508 2.53 1.994 0 0zm-.18 2.165c-2.707.23 3.602 2.232 0 0zm116.32 1.983c-.612 2.06 1.536.488 0 0zm-33.123 9.258c-1.11 1.048.899.708 0 0zm-75.743 29.816c.207 1.666-.16.54 0 0zm1.322.06c.487 1.064-.19.145 0 0zm112.77 2.164c-3.791 1.324 3.067 2.71 0 0z\",\n    style: {\n      fill: \"url(#openldap_svg__b)\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    style: {\n      stroke: \"#015a01\"\n    }\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M117.95 147.91c2.062 13.147-6.643 16.932-10.971 15.996\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 1,\n      fill: \"#6c3\"\n    },\n    transform: \"translate(215.33 -72.118) scale(1.9236)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M247.45 144.66a14.908 15.413 0 0 1-28.87 1.41\",\n    style: {\n      stroke: \"#015a01\",\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(2.0679 0 0 1.9236 -85.252 -62.905)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M254.4 122.14a13.756 14.188 0 0 1-9.596 26.558\",\n    style: {\n      stroke: \"#015a01\",\n      fill: \"#6c3\"\n    },\n    transform: \"matrix(1.69038 0 0 1.9236 8.062 -62.905)\"\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M427.42 204.03a13.577 11.915 0 1 1-20.903 3.651\",\n    style: {\n      stroke: \"#333\",\n      strokeWidth: 1.431,\n      fill: \"url(#openldap_svg__c)\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M280.54 469.64c8.633 3.94 25.105 2 46.417-3.57M257.12 414.7c8.633 3.94 28.892 5.786 50.204.217M241.99 350.59c12.42 7.726 15.901 10.802 32.109 11.815\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 1.7313,\n      fill: \"none\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    style: {\n      opacity: 0.45,\n      stroke: \"#015a01\"\n    }\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M238.76 154.03a10.902 13.628 0 1 1-21.804 0 10.902 13.628 0 1 1 21.804 0z\",\n    style: {\n      opacity: 0.33,\n      stroke: \"#015a01\",\n      fill: \"#060\"\n    },\n    transform: \"matrix(1.91312 -1.0905 1.23997 1.6825 -284.739 205.84)\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M-2.467 124.52c-10.397 7.867 3.174 25.794 15.402 20.06 11.488-7.465-3.201-26.94-15.402-20.06z\",\n    style: {\n      opacity: 0.33,\n      stroke: \"#015a01\",\n      fill: \"#060\"\n    },\n    transform: \"translate(336.93 -40.977) scale(1.9236)\"\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M403.28 150.64c-7.692.501-14.793 4.685-15.089 13.586a20.49 20.49 0 0 0 .48 3.306c-3.317-3.523-7.434-6.313-11.36-7.815-11.25-6.31-32.094-3.901-32.642 12.083 1.272 20.2 29.984 34.111 46.288 21.701 4.544-4.377 5.481-9.502 4.268-14.487 8.648 8.688 23.31 12.136 32.942 4.569 10.541-10.48-1.254-25.962-11.782-30.117-3.642-2.109-8.49-3.126-13.105-2.825z\",\n    style: {\n      opacity: 0.5696,\n      stroke: \"#015a01\",\n      strokeWidth: 1.9236,\n      fill: \"#015a01\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M352.96 116.34c1.938-.888 4.249.037 5.182 2.073 0 0 3.183 13.713 11.456 25.004 2.145 6.463-6.445 8.713-8.763 4.015 0 0-.968-10.617-11.456-25.004s.648-4.744 3.581-6.088z\",\n    style: {\n      stroke: \"#424242\",\n      strokeWidth: 1.9236,\n      fill: \"#474747\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M362.23 112.63a11.734 11.734 0 1 1-23.468 0 11.734 11.734 0 1 1 23.468 0z\",\n    style: {\n      stroke: \"#3c3c3c\",\n      strokeWidth: 2.843,\n      fill: \"#474747\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M392.01 189.01c-3.48 7.067-14.963 8.53-25.649 3.27-10.687-5.262-16.529-15.256-13.05-22.323 3.48-7.067 12.924-3.34 25.649-3.269 11.911.067 16.529 15.255 13.05 22.322zM428.77 179.39c-2.932 6.147-12.61 7.42-21.616 2.844s-13.93-13.27-10.998-19.416c2.932-6.147 10.386-3.713 21.616-2.844 10.072.78 13.93 13.269 10.998 19.416z\",\n    style: {\n      stroke: \"#015a01\",\n      strokeWidth: 1.9236,\n      fill: \"#eee\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M386.95 174.62a6.554 6.292 0 1 1-13.107 0 6.554 6.292 0 1 1 13.107 0z\",\n    style: {\n      stroke: \"url(#openldap_svg__d)\",\n      strokeWidth: 3.2702,\n      fill: \"#212121\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M420.28 260.08c-66.519-.144-41.52 15.048-88.371 22.3-26.994 12.355 2.254 36.023-28.249 57.531-12.191 24.257 25.422 32.975 14.127 56.988 1.094 17.721 28.212 17.044 15.87 35.106.077 27.295 34.615 32.862 24.995 61.134 5.822 58.494 26.558 115.42 56.87 165.61 24.209 15.049 1.4 44.842 26.58 58.256-15.417 16.017-2.308 41.461-16.414 58.695-15.858 27.915-52.033 71.541-86.055 70.198-32.5 6.163-62.672-8.101-85.514 18.724-21.068 27.152 26.849 29.08 43.943 22.231 17.663-15.932 35.21-5.876 56.135-3.462 21.996 1.56 46.031-3.354 62.056-19.468 25.603.823 58.065-11.778 61.136-40.697 25.458-6.112 48.466-32.949 36.241-59.636 7.342-17.164 35.37-42.277 20.025-68.406 16.566-22.139-13.544-40.219-11.646-57.89 1.52-24.036-27.484-32.739-16.422-57.827-5.88-56.776-34.65-108.99-69.858-152.93-17.715-10.826-17.772-37.67-38.852-46.975-1.577-13.237-.082-35.222-15.13-46.08 12.85-21.035-11.481-49.556 20.581-57.405 9.32-6.825 11.765-6.15 17.952-15.995z\",\n    style: {\n      opacity: 0.16,\n      strokeOpacity: 0.45631,\n      stroke: \"#015a01\",\n      strokeWidth: 1.9236,\n      fill: \"#2f5a01\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m364.39 291.24-33.123 5.23c17.189-1.058 41.41 10.702 52.138 2.144 2.808-7.652-14.418-4.55-19.015-7.374zm18.755 37.451c-2.226.221-5.16.953-5.951.18-15.9.467-38.753 1.689-50.255 5.951l31.379 7.996c9.785-5.765 36.092 1.65 26.45-11.301 2.09-2.727.603-3.047-1.623-2.826zm15.269 47.37c-23.53 1.418-46.945 4.234-70.513 5.17 18.484 2.734 36.866 6.798 55.605 3.547 8.85-2.878 26.726 3.882 14.908-8.717zm30.418 42.621c-17.609 2.141-22.028.732-40.577 1.082-12.172-.35-44.69.348-44.244 2.946 15.711 2.07 31.36 6.102 47.189 2.464 8.774-3.204 54.756 6.425 37.631-6.492zm27.472 33.664c-30.006 4.477-61.241 1.051-90.411 10.881l33.363 3.907c16.451-8.86 54.588-1.713 59.693-10.94zM497 602.56c-7.134-.107-15.756 1.445-21.4.36-22.649.075-44.368 7.02-66.305 11.783 15.165.922 30.594 7.281 45.446 1.623 15.954-6.58 41.892-5.303 52.539-10.82-2.28-2.21-5.999-2.882-10.279-2.946zm13.526 44.965c-14.177-.298-32.495 2.867-43.582.902l-33.002 5.23c31.72-.05 63.44.025 95.16 0-3.034-4.524-10.069-5.953-18.575-6.132zm-6.913 48.692c-4.496-.07-8.982.188-13.526 1.022l-32.522 8.175c21.543-3.55 43.01 2.847 64.562-1.202 11.962 2.216 20.66-8.78 3.907-6.793-7.5-.175-14.929-1.085-22.422-1.202zM465.2 757.773l-29.576 7.995c23.849 2.836 47.753 6.214 71.656 1.503 9.744-1.574 4.567-13.92-3.667-5.59-12.552 1.862-25.699-3.404-38.413-3.908zm-33.063 63.961-33.123 5.23c26.419-2.515 51.986 6.292 78.328 4.689 5.416-14.802-36.343-7.572-45.206-9.919zm-38.773 30.297c-10.945.795-21.774 3.134-32.642 4.81 19.66-1.443 39.974 13.754 57.409 7.573 8.563.63 33.329-2.739 11.842-4.929-12.15-2.623-23.995-7.708-36.61-7.454z\",\n    style: {\n      opacity: 0.22,\n      fill: \"#816647\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M304.45 326.16c-10.886 1.967-8.4 22.052 3.066 22.302 8.465 2.325 15.632 3.845 26.342.932 11.164-8.74-4.137-14.974-12.453-12.714-16.156 1.402-6.886-8.034-16.955-10.52zm5.951 53.08c-15.564 5.843-1.743 25.357 11.602 21.821 10.833.873 16.443-4.823 22.422-7.514 13.366-13.213-9.2-14.904-16.952-6.011-12.514 4.096-8.06-5.899-17.072-8.296zm50.736 40.877c-10.278-.312-16.719 10.516-26.51 10.099-15.413-2.714-11.509 17.881 2.164 13.285 10.433 1.739 13.941-8.465 23.925-9.317 8.076-.63 9.6-13.53.421-14.067zm19.717 50.916c-7.237 2.817-15.739 11.599-24.045 7.213-17.483-12.77-11.249 18.608-.901 14.127 9.028 2.152 20.787-3.388 25.428-6.792 3.646.512 11.826-13.3-.482-14.547zm-4.629 17.373c-1.757 1.064 1.7-.61 0 0zm48.632 150.16c-16.235 5.22 1.896 25.317 13.465 25.067 10.318.826 21.684.346 28.734-8.176 9.25-23.358-30.97 7.123-37.196-14.127l-1.45-1.515-3.553-1.25zm7.334 67.027c-12.786 3.28-2.84 22.219 3.727 28.433 9.873 6.706 22.122 6.794 33.616 5.38 11.174-8.715-4.149-14.989-12.453-12.714-8 1.03-16.762-3.311-17.255-12.143-1.53-3.684-2.48-8.882-7.634-8.957zm12.864 32.822-.6-.3zm-60.354 65.344c-11.482 3.658-6.54 21.416-.12 28.373 4.485 5.22 7.873 12.227 12.203 15.208 5.716 3.355 9.67 8.453 16.776 5.416 9.556-6.93-8.199-14.998-5.835-13.892-5.885-2.69-9.886-12.655-15.028-18.034-3.525-5.64 2.14-16.518-7.995-17.072zm11.963 43.462c-2.054-2.264-.507-.136 0 0zm-91.313-6.312c-10.66 4.691-10.693 19.058-10.219 29.212-1.488 10.106 2.839 20.308 12.804 24.048 16.495 8.538 9.815-16.676 2.104-14.427-4.5-4.573.282-13.545-1.622-19.356-.478-6.55 10.803-17.505-3.067-19.477zm-75.623 3.246c-8.979 2.724-15.863 14.021-15.509 26.03-2.008 9.592 3.418 22.026 10.4 23.864 15.634 10.556 16.95-11.274 2.886-14.668-.48-9.208-.568-19.474 8.14-25.047 3.09-4.211-.8-10.666-5.916-10.179zm172.17 6.372c.434.02.033.146 0 0zm-92.816 5.59c.286-.058-.476.461 0 0z\",\n    style: {\n      stroke: \"#816647\",\n      strokeWidth: 2.5007,\n      fill: \"#ff9\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M403.43 108.33c2.104.342 3.508 2.397 3.148 4.608 0 0-4.995 13.162-4.414 27.147-1.818 6.562-10.206 3.646-9.514-1.547 0 0 5.11-9.356 4.414-27.147-.695-17.79 3.182-3.579 6.366-3.061z\",\n    style: {\n      stroke: \"#424242\",\n      strokeWidth: 1.9236,\n      fill: \"#474747\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M413.2 110.41a11.734 11.734 0 1 1-19.49-13.077 11.734 11.734 0 1 1 19.49 13.077z\",\n    style: {\n      stroke: \"#3c3c3c\",\n      strokeWidth: 2.843,\n      fill: \"#474747\"\n    }\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M415.23 166.9a6.554 6.292 0 1 1-13.107 0 6.554 6.292 0 1 1 13.107 0z\",\n    style: {\n      stroke: \"url(#openldap_svg__e)\",\n      strokeWidth: 3.2702,\n      fill: \"#212121\"\n    }\n  }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgOpenldap);//# sourceURL=webpack-internal:///70003\n");

}),

36470:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4, _path5;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgProget = function SvgProget(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M23.586 13.035 13.46 7.381a2.24 2.24 0 0 0-2.192 0L1.144 13.035A2.255 2.255 0 0 0 0 15.036v11.198a2.255 2.255 0 0 0 1.144 1.961l10.125 5.654a2.24 2.24 0 0 0 2.192 0l10.125-5.693a2.248 2.248 0 0 0 1.151-1.962V15.036a2.246 2.246 0 0 0-1.151-2Z\",\n    fill: \"#282B3A\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m16.01 18.213-3.375-1.89a.564.564 0 0 0-.548 0l-3.367 1.89a.556.556 0 0 0-.294.492v3.733a.556.556 0 0 0 .294.492l3.367 1.89a.564.564 0 0 0 .548 0l3.375-1.842a.564.564 0 0 0 .285-.493v-3.732a.564.564 0 0 0-.285-.54Z\",\n    fill: \"#3FA9F5\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M6.742 23.772v-5.313l-3.375-1.834v8.338a1.136 1.136 0 0 0 .58.985l7.576 4.232v-3.772l-4.78-2.636Z\",\n    fill: \"#1696F0\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M12.911 10.843a1.12 1.12 0 0 0-1.096 0l-7.647 4.273 3.399 1.874 4.764-2.676 4.741 2.628 3.336-1.906-7.497-4.193Z\",\n    fill: \"#37BBF7\"\n  })), _path5 || (_path5 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.026 18.372v5.4l-4.764 2.668v3.772l7.576-4.232a1.129 1.129 0 0 0 .571-.985V16.45l-3.383 1.922Z\",\n    fill: \"#79BFF2\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgProget);//# sourceURL=webpack-internal:///36470\n");

}),

25830:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgQuay = function SvgQuay(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"m21.696 7.1 6.024 12.901L21.696 32.9H16.57l6.021-12.899L16.571 7.1h5.125Z\",\n    fill: \"#40B4E5\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"m16.57 32.9-6.024-12.899L16.57 7.1h5.126l-6.021 12.901 6.02 12.899H16.57Z\",\n    fill: \"#003764\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M13.859 12.905 11.15 7.1H6.024l5.273 11.296 2.562-5.492ZM11.297 21.604 6.024 32.9h5.126l2.709-5.804-2.562-5.492Z\",\n    fill: \"#40B4E5\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M6.024 32.9 0 20.001 6.024 7.1h5.126L5.126 20.001 11.15 32.9H6.024Z\",\n    fill: \"#003764\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgQuay);//# sourceURL=webpack-internal:///25830\n");

}),

64032:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgAgent = function SvgAgent(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#agent_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m15.005 13.25-6.25 7.5h5.625l-.625 5 6.25-7.5H14.38l.625-5Z\",\n    stroke: \"#0086C9\",\n    strokeWidth: 1.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"agent_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    transform: \"translate(6.88 12)\",\n    d: \"M0 0h15v15H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgAgent);//# sourceURL=webpack-internal:///64032\n");

}),

17982:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgApi = function SvgApi(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M9.328 23.154v-.126c0-1.061 0-1.592.206-1.997.182-.356.472-.646.828-.828.405-.206.936-.206 1.997-.206h4.042c1.061 0 1.592 0 1.997.206.357.182.646.472.828.828.207.405.207.936.207 1.997v.126m-10.105 0a1.263 1.263 0 1 0 0 2.527 1.263 1.263 0 0 0 0-2.527Zm10.105 0a1.263 1.263 0 1 0 0 2.527 1.263 1.263 0 0 0 0-2.527Zm-5.053 0a1.263 1.263 0 1 0 0 2.527 1.263 1.263 0 0 0 0-2.527Zm0 0V16.84m-3.79 0h7.58c.588 0 .882 0 1.114-.096.31-.129.556-.374.684-.684.096-.232.096-.526.096-1.115s0-.883-.096-1.115a1.263 1.263 0 0 0-.684-.684c-.232-.096-.526-.096-1.114-.096h-7.58c-.588 0-.882 0-1.114.097-.31.128-.556.374-.684.683-.096.232-.096.526-.096 1.115s0 .883.096 1.115c.128.31.374.555.684.684.232.096.526.096 1.115.096Z\",\n    stroke: \"#0086C9\",\n    strokeWidth: 1.15,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgApi);//# sourceURL=webpack-internal:///17982\n");

}),

66321:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgEdgeAgent = function SvgEdgeAgent(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#edge-agent_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M18.13 18.25h-.788a5 5 0 1 0-4.837 6.25h5.625a3.125 3.125 0 0 0 0-6.25Z\",\n    stroke: \"#0086C9\",\n    strokeWidth: 1.333,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"edge-agent_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    transform: \"translate(6.88 12)\",\n    d: \"M0 0h15v15H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgEdgeAgent);//# sourceURL=webpack-internal:///66321\n");

}),

58980:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgImport = function SvgImport(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 37 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.882 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C7.1 33.453.795 27.143.795 19.365.795 11.587 7.1 5.28 14.882 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#import_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"m17.38 22-2.5-2.5m0 0-2.5 2.5m2.5-2.5v5.626m5.244-1.631a3.125 3.125 0 0 0-1.494-5.87h-.787a5 5 0 1 0-8.588 4.563\",\n    stroke: \"#0086C9\",\n    strokeWidth: 1.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"import_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    transform: \"translate(7.38 12)\",\n    d: \"M0 0h15v15H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgImport);//# sourceURL=webpack-internal:///58980\n");

}),

63907:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgSocket = function SvgSocket(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 36 40\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.382 5.28c7.777 0 14.083 6.306 14.083 14.085 0 7.779-6.306 14.085-14.083 14.085C6.6 33.453.295 27.143.295 19.365.295 11.587 6.6 5.28 14.382 5.28Z\",\n    fill: \"#E0F2FE\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M14.38 23.503c2.6 0 4.708-2.108 4.708-4.709v-2.442h-2.355m-2.353 7.15a4.708 4.708 0 0 1-4.708-4.708v-2.442h7.061m-2.353 7.15c0 1.457 0 3.07 2.353 3.07h1.046m-1.046-10.22v-2.925m-4.711 2.925v-2.925\",\n    stroke: \"#0086C9\",\n    strokeWidth: 1.33,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgSocket);//# sourceURL=webpack-internal:///63907\n");

}),

43941:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgIconSubscription = function SvgIconSubscription(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 22 20\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M20.864 8.083H1.697m8.625 8.625h7.475c1.074 0 1.61 0 2.02-.209.361-.183.654-.476.838-.837.21-.41.21-.947.21-2.02V6.358c0-1.073 0-1.61-.21-2.02a1.917 1.917 0 0 0-.837-.837c-.41-.21-.947-.21-2.02-.21h-1.726m-5.75 13.417 1.917 1.917m-1.917-1.917 1.917-1.916m-5.75 1.916H4.764c-1.073 0-1.61 0-2.02-.209a1.916 1.916 0 0 1-.838-.837c-.209-.41-.209-.947-.209-2.02V6.358c0-1.073 0-1.61.21-2.02.183-.36.476-.654.837-.837.41-.21.947-.21 2.02-.21h7.475m0 0-1.917 1.917m1.917-1.916-1.917-1.917\",\n    stroke: \"#344054\",\n    strokeWidth: 1.8,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgIconSubscription);//# sourceURL=webpack-internal:///43941\n");

}),

88419:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgSortArrowDown = function SvgSortArrowDown(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 8 12\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M4.473.727a.593.593 0 1 0-1.186 0h1.186ZM3.88 11.274l-.406.432c.233.22.599.214.826-.013l-.42-.42Zm3.056-2.218a.593.593 0 1 0-.839-.839l.84.84Zm-5.45-.851a.593.593 0 1 0-.814.864l.813-.864Zm1.8-7.478v10.547h1.187V.727H3.287Zm2.811 7.49-2.636 2.637.839.84 2.636-2.638-.839-.839Zm-1.81 2.625L1.485 8.205l-.813.864 2.802 2.637.813-.864Z\",\n    fill: \"#D0D5DD\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgSortArrowDown);//# sourceURL=webpack-internal:///88419\n");

}),

54291:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgSortArrowUp = function SvgSortArrowUp(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 8 12\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M3.526 11.273a.593.593 0 0 0 1.187 0H3.526ZM4.12.727l.406-.432A.593.593 0 0 0 3.7.307l.42.42ZM1.063 2.944a.593.593 0 1 0 .84.839l-.84-.84Zm5.451.851a.593.593 0 1 0 .814-.864l-.814.864Zm-1.801 7.478V.727H3.526v10.546h1.187Zm-2.81-7.49 2.636-2.637L3.7.307 1.063 2.944l.84.839Zm1.81-2.624 2.801 2.636.814-.864L4.526.295l-.813.864Z\",\n    fill: \"#D0D5DD\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgSortArrowUp);//# sourceURL=webpack-internal:///54291\n");

}),

34647:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3, _path4, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgAzure = function SvgAzure(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 105 95\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M40.041 11.192h21.975l-22.81 69.066a3.565 3.565 0 0 1-1.278 1.763 3.455 3.455 0 0 1-2.043.672h-17.1a3.444 3.444 0 0 1-1.599-.394 3.538 3.538 0 0 1-1.245-1.095 3.603 3.603 0 0 1-.618-1.556 3.658 3.658 0 0 1 .144-1.673l21.255-64.346c.235-.71.68-1.326 1.278-1.763a3.455 3.455 0 0 1 2.043-.671l-.002-.003Z\",\n    fill: \"url(#azure_svg__a)\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M71.975 57.518H37.13c-.325 0-.64.098-.909.284a1.637 1.637 0 0 0-.592.758c-.12.308-.145.646-.074.967.072.323.237.616.474.84L58.42 81.725c.65.622 1.51.967 2.401.967h19.73l-8.576-25.178v.005Z\",\n    fill: \"#0078D4\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M40.042 11.193a3.44 3.44 0 0 0-2.062.682 3.54 3.54 0 0 0-1.265 1.8l-21.22 64.244a3.63 3.63 0 0 0 .434 3.265c.325.469.754.852 1.252 1.115.499.263 1.052.4 1.613.398h17.542a3.705 3.705 0 0 0 1.77-.854 3.816 3.816 0 0 0 1.107-1.647l4.232-12.742L58.56 81.861a3.529 3.529 0 0 0 2.25.838H80.47l-8.623-25.177-25.133.007 15.384-46.337H40.042Z\",\n    fill: \"url(#azure_svg__b)\"\n  })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M68.109 13.625a3.579 3.579 0 0 0-1.275-1.76 3.448 3.448 0 0 0-2.04-.673h-24.49c.733 0 1.445.236 2.04.672a3.577 3.577 0 0 1 1.275 1.761l21.255 64.352c.178.537.228 1.11.144 1.673a3.602 3.602 0 0 1-.617 1.556c-.325.46-.75.836-1.246 1.095a3.437 3.437 0 0 1-1.598.394h24.49c.555 0 1.104-.135 1.598-.394a3.512 3.512 0 0 0 1.243-1.095c.325-.46.536-.995.618-1.556a3.658 3.658 0 0 0-.144-1.673L68.109 13.625Z\",\n    fill: \"url(#azure_svg__c)\"\n  })), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__a\",\n    x1: 48.052,\n    y1: 16.492,\n    x2: 24.328,\n    y2: 85.073,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopColor: \"#114A8B\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#0669BC\"\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__b\",\n    x1: 55.179,\n    y1: 48.598,\n    x2: 49.877,\n    y2: 50.351,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopOpacity: 0.3\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.07,\n    stopOpacity: 0.2\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.32,\n    stopOpacity: 0.1\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 0.62,\n    stopOpacity: 0.05\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopOpacity: 0\n  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"linearGradient\", {\n    id: \"azure_svg__c\",\n    x1: 52.44,\n    y1: 14.419,\n    x2: 78.457,\n    y2: 82.248,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    stopColor: \"#3CCBF4\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#2892DF\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgAzure);//# sourceURL=webpack-internal:///34647\n");

}),

23969:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgDocker = function SvgDocker(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 105 95\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M102.014 39.337c-.27-.229-2.695-2.11-7.902-2.11-1.347 0-2.74.138-4.085.369-.989-7.02-6.69-10.416-6.914-10.598l-1.393-.826-.898 1.33a19.85 19.85 0 0 0-2.469 5.874c-.942 3.993-.36 7.754 1.617 10.966-2.381 1.376-6.242 1.697-7.05 1.744H9.16c-1.66 0-3.009 1.376-3.009 3.074a47.34 47.34 0 0 0 2.783 16.747c2.2 5.874 5.477 10.232 9.699 12.894 4.76 2.983 12.527 4.68 21.282 4.68 3.951 0 7.902-.369 11.81-1.103a48.094 48.094 0 0 0 15.446-5.734 42.497 42.497 0 0 0 10.507-8.809c5.073-5.826 8.082-12.341 10.283-18.123h.898c5.524 0 8.935-2.248 10.821-4.174 1.257-1.194 2.201-2.662 2.873-4.314l.404-1.193-.942-.69-.002-.004Z\",\n    fill: \"#0091E2\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M15.086 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c.044.458.36.78.764.78ZM26.851 44.2h8.53c.405 0 .763-.32.763-.78v-7.8a.764.764 0 0 0-.763-.778h-8.53a.765.765 0 0 0-.764.779v7.799c.044.458.36.78.764.78ZM38.842 44.2h8.53c.404 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.765-.778h-8.53a.765.765 0 0 0-.764.779v7.799c0 .458.314.78.764.78ZM50.647 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c0 .458.36.78.764.78ZM26.851 33.05h8.53c.405 0 .763-.367.763-.78v-7.799c0-.413-.314-.781-.763-.781h-8.53a.766.766 0 0 0-.764.781v7.799c.044.413.36.78.764.78ZM38.842 33.05h8.53c.404 0 .765-.367.765-.78v-7.799a.766.766 0 0 0-.765-.781h-8.53a.766.766 0 0 0-.764.781v7.799c0 .413.314.78.764.78ZM50.647 33.05h8.53c.405 0 .765-.367.765-.78v-7.799c0-.413-.36-.781-.764-.781h-8.53a.766.766 0 0 0-.765.781v7.799c0 .413.36.78.764.78ZM50.647 21.856h8.53c.405 0 .765-.32.765-.78v-7.8c0-.413-.36-.78-.764-.78h-8.53a.766.766 0 0 0-.765.78v7.8c0 .412.36.78.764.78ZM62.551 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c.044.458.36.78.764.78Z\",\n    fill: \"#0091E2\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgDocker);//# sourceURL=webpack-internal:///23969\n");

}),

43215:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgKubernetes = function SvgKubernetes(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 105 95\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M52.958 88.267c-5.243 0-10.485-.044-15.724.02-2.383.026-4.221-.819-5.716-2.694-6.63-8.317-13.299-16.6-19.966-24.89-1.337-1.661-1.862-3.43-1.352-5.608 2.448-10.471 4.806-20.967 7.202-31.456.479-2.1 1.694-3.543 3.661-4.476 9.69-4.605 19.357-9.246 29.019-13.907 2.022-.977 3.947-.917 5.954.046 9.602 4.63 19.211 9.251 28.844 13.822 2.037.968 3.276 2.447 3.77 4.616 2.39 10.491 4.765 20.985 7.198 31.463.466 2.01.044 3.707-1.213 5.268-6.734 8.399-13.473 16.796-20.186 25.215-1.449 1.82-3.272 2.614-5.565 2.594-5.305-.04-10.614-.01-15.92-.01l-.008-.005.002.002ZM51.61 21.251c.094 2.704-.234 3.12-2.717 3.607-4.407.867-8.387 2.678-11.614 5.846-1.217 1.198-2.242.944-3.326.17-.835-.592-1.509-1.413-2.263-2.122-.515-.483-.998-1.038-1.589-1.41-.865-.537-1.772-.46-2.406.411-.575.784-.43 1.631.218 2.303.444.457 1.01.797 1.548 1.152.804.538 1.668.995 2.441 1.577 1.574 1.183 1.718 1.986.785 3.677-2.153 3.894-3.117 8.067-2.962 12.521.086 2.428-.625 3.197-3.062 3.473-1.093.125-2.192.191-3.276.376-1.224.206-2.095.886-1.83 2.256.254 1.32 1.325 1.522 2.422 1.254 1.185-.297 2.317-.793 3.486-1.153 2.394-.733 3.202-.346 4.206 1.943 1.757 4.024 4.435 7.284 8.008 9.813 1.535 1.089 1.784 2.022.895 3.732-.416.799-.956 1.54-1.43 2.313-.304.497-.619.988-.885 1.504-.534 1.028-.306 1.928.645 2.538 1.057.678 1.969.151 2.441-.773.638-1.26 1.008-2.654 1.52-3.978.819-2.127 1.671-2.553 3.776-1.962 4.271 1.19 8.547 1.205 12.822.02 2.083-.578 2.853-.23 3.677 1.826.48 1.199.78 2.474 1.318 3.649.48 1.064 1.29 1.927 2.597 1.233 1.213-.643 1.259-1.732.633-2.834-.605-1.069-1.344-2.066-1.951-3.134-1.19-2.104-1.019-2.821.898-4.229 3.587-2.627 6.24-5.986 7.939-10.109.785-1.907 1.532-2.287 3.547-1.69 1.235.367 2.422.909 3.666 1.223 1.115.28 2.262.241 2.693-1.155.35-1.135-.415-2.068-1.952-2.322-1.209-.203-2.448-.231-3.661-.418-1.935-.3-2.643-1.152-2.562-3.07.194-4.587-.78-8.89-3.036-12.889-.864-1.53-.726-2.443.69-3.556.814-.637 1.738-1.118 2.6-1.686.535-.356 1.108-.692 1.55-1.148.653-.668.788-1.5.22-2.303-.584-.823-1.453-.898-2.254-.5-.614.305-1.114.862-1.632 1.345-.709.663-1.34 1.414-2.08 2.037-1.468 1.24-2.358 1.214-3.754-.026-3.421-3.045-7.388-4.95-11.878-5.774-1.803-.331-2.352-.922-2.278-2.783.05-1.293.285-2.575.4-3.864.14-1.506-.703-2.728-1.842-2.724-1.139.004-1.978 1.223-1.828 2.733.105 1.03.28 2.053.429 3.08h-.009.007Z\",\n    fill: \"#326CE4\"\n  })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M51.608 21.25c-.144-1.026-.323-2.047-.428-3.079-.15-1.51.689-2.729 1.827-2.733 1.14-.005 1.983 1.218 1.843 2.724-.12 1.293-.354 2.573-.4 3.864-.07 1.861.474 2.452 2.278 2.783 4.49.824 8.456 2.725 11.877 5.774 1.395 1.24 2.284 1.269 3.755.026.74-.623 1.373-1.374 2.08-2.037.515-.483 1.018-1.043 1.632-1.346.8-.397 1.672-.325 2.254.5.568.804.43 1.632-.221 2.304-.444.456-1.014.788-1.55 1.148-.859.573-1.788 1.053-2.599 1.686-1.418 1.113-1.554 2.026-.69 3.556 2.253 4 3.23 8.302 3.036 12.888-.081 1.917.63 2.769 2.561 3.071 1.213.187 2.448.216 3.662.418 1.538.256 2.303 1.187 1.951 2.322-.43 1.398-1.578 1.436-2.692 1.155-1.244-.312-2.433-.854-3.666-1.223-2.013-.597-2.758-.22-3.548 1.69-1.698 4.123-4.351 7.482-7.938 10.11-1.917 1.404-2.092 2.122-.899 4.228.606 1.069 1.34 2.065 1.952 3.134.625 1.105.58 2.189-.634 2.834-1.305.694-2.114-.17-2.597-1.233-.533-1.17-.834-2.452-1.318-3.649-.828-2.057-1.593-2.404-3.676-1.826-4.276 1.187-8.551 1.17-12.822-.02-2.11-.586-2.962-.16-3.777 1.962-.51 1.329-.883 2.72-1.52 3.978-.465.924-1.383 1.451-2.44.773-.95-.608-1.175-1.51-.646-2.538.27-.516.58-1.007.886-1.503.474-.773 1.01-1.51 1.43-2.314.889-1.71.64-2.646-.895-3.732-3.572-2.53-6.254-5.789-8.009-9.813-1.003-2.292-1.812-2.674-4.205-1.943-1.17.36-2.302.854-3.486 1.153-1.096.272-2.165.07-2.422-1.254-.265-1.37.605-2.046 1.83-2.256 1.079-.185 2.183-.25 3.276-.376 2.441-.272 3.147-1.043 3.062-3.473-.155-4.454.809-8.625 2.962-12.521.933-1.69.789-2.494-.785-3.677-.774-.582-1.637-1.039-2.442-1.576-.535-.356-1.103-.694-1.547-1.153-.65-.672-.794-1.52-.219-2.303.639-.87 1.544-.948 2.407-.41.59.37 1.073.922 1.589 1.41.754.71 1.43 1.53 2.262 2.122 1.084.773 2.107 1.027 3.327-.171 3.222-3.17 7.202-4.981 11.613-5.846 2.483-.488 2.81-.902 2.717-3.607h.009-.007ZM50.59 31.84h.105c0-.515-.026-1.038.009-1.553.045-.712-.219-.879-.91-.742-3.366.658-6.363 2.065-8.996 4.278-.726.608-.584.953.12 1.434 2.078 1.429 4.107 2.928 6.183 4.355 1.878 1.288 3.032.718 3.178-1.554.132-2.068.21-4.145.31-6.217ZM34.445 47.45c-.017 1.6.678 2.195 2.088 1.787 2.162-.628 4.337-1.223 6.485-1.89 1.968-.613 2.27-1.835.77-3.256-1.828-1.732-3.777-3.337-5.59-5.09-.963-.934-1.313-.468-1.757.432-1.279 2.595-1.884 5.347-1.998 8.012l.003.005Zm18.508 19.015c1.69.046 3.33-.254 4.964-.663.664-.167 1.093-.272.614-1.109-1.38-2.412-2.638-4.895-4.061-7.279-.796-1.335-2.134-1.32-2.918.02-1.408 2.397-2.689 4.862-4.046 7.288-.354.632-.21.863.49 1.038 1.632.41 3.267.734 4.959.703v.004l-.002-.002Zm18.636-18.958c-.15-2.603-.708-5.308-1.952-7.85-.505-1.03-1.073-1.381-2.048-.466-1.744 1.636-3.572 3.186-5.314 4.826-1.563 1.47-1.235 2.698.864 3.332 2.157.656 4.33 1.26 6.494 1.886 1.987.573 1.993.57 1.954-1.73l.002.002Zm-9.515 5.282c-2.798.125-3.143.652-2.197 2.99.9 2.221 1.854 4.42 2.724 6.653.295.758.535 1.129 1.34.523 2.747-2.077 4.855-4.652 6.18-7.846.163-.395.463-.924-.285-1.054-2.669-.456-5.349-.873-7.764-1.268l.002.002ZM55.342 31.61h.065c.11 2.127.21 4.255.33 6.386.132 2.294 1.268 2.9 3.126 1.625 2.018-1.386 3.948-2.9 6.005-4.22 1.1-.706.854-1.1.03-1.771a19.363 19.363 0 0 0-8.448-4.013c-1.113-.23-1.218.15-1.12 1.027.036.32.005.644.005.969h.009l-.002-.003Zm-8.593 22.725c-.303-.658-.264-1.525-1.403-1.484-2.863.106-5.655.73-8.476 1.12-.995.136-1.198.566-.81 1.43 1.365 3.009 3.358 5.503 6.005 7.478.68.507 1.034.516 1.36-.397.586-1.64 1.324-3.225 1.989-4.836.444-1.074.87-2.154 1.333-3.306v-.005h.002Zm6.363-8.965c-1.982-.004-3.152.784-3.198 2.158-.054 1.65 1.55 3.506 3.067 3.537 1.443.03 3.093-1.717 3.102-3.287.009-1.46-1.154-2.408-2.973-2.412l.005.004h-.003Z\",\n    fill: \"#FDFDFE\"\n  })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M50.594 31.84c-.1 2.073-.18 4.145-.31 6.218-.15 2.276-1.306 2.845-3.179 1.554-2.079-1.43-4.105-2.93-6.184-4.355-.703-.483-.843-.824-.12-1.434 2.634-2.213 5.63-3.618 8.997-4.278.695-.137.955.035.91.742-.036.515-.01 1.038-.01 1.556h-.104v-.004.002ZM34.448 47.45c.116-2.666.72-5.419 1.998-8.014.444-.902.793-1.37 1.757-.432 1.808 1.752 3.762 3.352 5.59 5.09 1.499 1.425 1.197 2.646-.77 3.256-2.149.668-4.322 1.26-6.485 1.89-1.408.409-2.103-.186-2.088-1.787l-.002-.004ZM52.96 66.46c-1.69.03-3.327-.297-4.96-.707-.7-.176-.84-.406-.49-1.038 1.358-2.424 2.639-4.896 4.046-7.289.785-1.339 2.123-1.354 2.918-.02 1.423 2.385 2.687 4.867 4.062 7.28.478.834.045.94-.615 1.108-1.632.411-3.272.712-4.964.663l.003.003ZM71.588 47.504c.04 2.298.03 2.307-1.954 1.73-2.164-.628-4.337-1.234-6.494-1.886-2.098-.637-2.424-1.857-.863-3.332 1.742-1.64 3.567-3.19 5.313-4.826.975-.913 1.543-.566 2.048.466 1.244 2.54 1.8 5.247 1.952 7.85l-.002-.002ZM62.079 52.783c2.413.391 5.09.813 7.764 1.27.743.124.445.656.284 1.053-1.33 3.196-3.432 5.773-6.18 7.846-.804.608-1.044.235-1.34-.523-.87-2.232-1.822-4.434-2.723-6.654-.949-2.337-.599-2.864 2.197-2.99l-.002-.002ZM55.348 31.606c0-.325.03-.648-.004-.968-.096-.878.009-1.254 1.119-1.028 3.16.652 5.95 1.983 8.448 4.013.824.672 1.073 1.063-.03 1.772-2.057 1.324-3.987 2.834-6.005 4.22-1.858 1.274-2.997.67-3.126-1.625-.12-2.128-.22-4.26-.33-6.386h-.074l.002.002ZM46.749 54.329c-.464 1.152-.89 2.232-1.334 3.306-.664 1.611-1.398 3.196-1.989 4.836-.325.913-.68.909-1.36.397-2.646-1.975-4.635-4.47-6.004-7.479-.393-.863-.19-1.293.809-1.429 2.822-.386 5.611-1.014 8.477-1.12 1.138-.044 1.1.828 1.403 1.484v.005h-.002ZM53.115 45.364c1.814.004 2.981.948 2.973 2.412-.011 1.57-1.66 3.317-3.102 3.286-1.515-.035-3.121-1.885-3.067-3.536.046-1.374 1.218-2.167 3.198-2.158l-.004-.005h.002Z\",\n    fill: \"#326CE4\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgKubernetes);//# sourceURL=webpack-internal:///43215\n");

}),

5557:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _path;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgKaasIcon = function SvgKaasIcon(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 22 17\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M11 0a8 8 0 0 0-7.978 7.407A5 5 0 0 0 5 17h11.5a5.5 5.5 0 0 0 2.366-10.466A8.002 8.002 0 0 0 11 0Zm.5 4.406a.5.5 0 0 0-1 0V4.7a4.308 4.308 0 0 0-2.187.906l-.208-.208a.5.5 0 0 0-.707.707l.208.209A4.308 4.308 0 0 0 6.7 8.5h-.294a.5.5 0 0 0 0 1H6.7c.094.821.418 1.572.906 2.187l-.208.208a.5.5 0 1 0 .707.707l.208-.208a4.307 4.307 0 0 0 2.187.906v.294a.5.5 0 1 0 1 0V13.3a4.309 4.309 0 0 0 2.187-.906l.208.208a.5.5 0 0 0 .707-.707l-.208-.208A4.308 4.308 0 0 0 15.3 9.5h.294a.5.5 0 0 0 0-1H15.3a4.307 4.307 0 0 0-.906-2.186l.208-.209a.5.5 0 0 0-.707-.707l-.208.209A4.308 4.308 0 0 0 11.5 4.7v-.294Zm-1 1.303a3.311 3.311 0 0 0-1.474.61L10.5 7.794V5.71ZM8.32 7.027A3.311 3.311 0 0 0 7.708 8.5h2.084L8.319 7.027ZM7.708 9.5c.082.546.297 1.049.61 1.474L9.793 9.5H7.709Zm1.317 2.18c.426.314.928.53 1.474.611v-2.084l-1.474 1.474Zm2.474.611a3.311 3.311 0 0 0 1.473-.61L11.5 10.208v2.083Zm2.18-1.317c.314-.425.529-.928.61-1.474h-2.083l1.473 1.474Zm.61-2.474a3.311 3.311 0 0 0-.61-1.473L12.207 8.5h2.084Zm-1.317-2.18L11.5 7.793V5.71a3.311 3.311 0 0 1 1.473.61Z\",\n    fill: \"currentColor\"\n  })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgKaasIcon);//# sourceURL=webpack-internal:///5557\n");

}),

2857:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\nvar _g, _defs;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nvar SvgPortainerLogo = function SvgPortainerLogo(props) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 190 47\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _g || (_g = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", {\n    clipPath: \"url(#portainer_logo_svg__a)\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M10.893 10.604h-.698v3.658h.698v-3.658ZM13.895 10.604h-.698v3.658h.698v-3.658ZM17.997 3.623 17.28 2.37 5.342 9.349l.716 1.255 11.939-6.98Z\",\n    fill: \"#13BEF9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"m17.927 3.623.715-1.254 11.94 6.98-.716 1.255-11.94-6.98Z\",\n    fill: \"#13BEF9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M32.693 10.622v-1.45H-.017v1.45h32.71Z\",\n    fill: \"#13BEF9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M19.742 31.087V9.614h1.431V32.13c-.384-.442-.872-.76-1.43-1.043ZM17.299 30.716V.425h1.43v30.468c-.4-.195-1.378-.177-1.43-.177ZM3.737 33.738a7.19 7.19 0 0 1-2.898-5.761c0-1.255.332-2.492.943-3.57H14a7.085 7.085 0 0 1 .942 3.57c0 1.095-.14 2.12-.576 3.04-.925-.902-2.286-1.29-3.665-1.29-2.444 0-4.538 1.537-5.08 3.834-.191-.017-.313-.035-.505-.035a6.054 6.054 0 0 0-1.38.212ZM9.74 15.888h-3.7v3.765h3.7v-3.765ZM5.57 15.888H1.868v3.765h3.7v-3.765ZM5.57 20.077H1.868v3.764h3.7v-3.764ZM9.74 20.077h-3.7v3.764h3.7v-3.764ZM13.895 20.077h-3.7v3.764h3.7v-3.764ZM13.895 13.873h-3.7v3.765h3.7v-3.765Z\",\n    fill: \"#13BEF9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M6.232 34.303c.507-2.173 2.444-3.8 4.748-3.8 1.484 0 2.81.672 3.718 1.733a4.785 4.785 0 0 1 2.758-.866c2.688 0 4.87 2.209 4.87 4.93 0 .566-.088 1.096-.262 1.609.593.813.96 1.838.96 2.933 0 2.722-2.182 4.931-4.87 4.931a4.795 4.795 0 0 1-3.107-1.131c-.89 1.255-2.339 2.085-3.98 2.085-1.885 0-3.525-1.095-4.346-2.686-.331.07-.663.106-1.012.106-2.688 0-4.887-2.209-4.887-4.93 0-2.722 2.182-4.931 4.887-4.931.175-.018.349-.018.524.017Z\",\n    fill: \"#13BEF9\"\n  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    d: \"M43.964 17.884c.503-.659 1.187-1.213 2.054-1.664.867-.45 1.846-.676 2.938-.676 1.248 0 2.383.312 3.406.936 1.04.607 1.855 1.465 2.444 2.574.59 1.11.884 2.383.884 3.822s-.295 2.73-.884 3.874c-.59 1.127-1.404 2.01-2.444 2.652-1.023.624-2.158.936-3.406.936-1.092 0-2.063-.217-2.912-.65-.85-.45-1.543-1.005-2.08-1.664v8.892H41V15.778h2.964v2.106Zm8.71 4.992c0-.988-.208-1.837-.624-2.548-.399-.728-.936-1.274-1.612-1.638a4.184 4.184 0 0 0-2.132-.572c-.745 0-1.456.19-2.132.572-.659.381-1.196.936-1.612 1.664-.399.728-.598 1.586-.598 2.574 0 .988.2 1.855.598 2.6.416.728.953 1.283 1.612 1.664a4.277 4.277 0 0 0 2.132.572c.763 0 1.473-.19 2.132-.572.676-.399 1.213-.97 1.612-1.716.416-.745.624-1.612.624-2.6ZM64.835 30.338c-1.352 0-2.574-.303-3.666-.91a6.746 6.746 0 0 1-2.574-2.6c-.624-1.127-.936-2.427-.936-3.9 0-1.456.32-2.747.962-3.874a6.645 6.645 0 0 1 2.626-2.6c1.11-.607 2.349-.91 3.718-.91 1.37 0 2.609.303 3.718.91a6.645 6.645 0 0 1 2.626 2.6c.641 1.127.962 2.418.962 3.874s-.33 2.747-.988 3.874a6.909 6.909 0 0 1-2.704 2.626c-1.127.607-2.375.91-3.744.91Zm0-2.574c.763 0 1.473-.182 2.132-.546.676-.364 1.222-.91 1.638-1.638.416-.728.624-1.612.624-2.652s-.2-1.915-.598-2.626c-.399-.728-.927-1.274-1.586-1.638a4.337 4.337 0 0 0-2.132-.546c-.763 0-1.473.182-2.132.546-.641.364-1.153.91-1.534 1.638-.381.71-.572 1.586-.572 2.626 0 1.543.39 2.739 1.17 3.588.797.832 1.794 1.248 2.99 1.248ZM78.165 17.858a4.584 4.584 0 0 1 1.716-1.69c.728-.416 1.586-.624 2.574-.624v3.068h-.754c-1.161 0-2.045.295-2.652.884-.59.59-.884 1.612-.884 3.068v7.54h-2.964V15.778h2.964v2.08ZM88.638 18.196v7.93c0 .537.121.927.364 1.17.26.225.693.338 1.3.338h1.82v2.47h-2.34c-1.335 0-2.358-.312-3.068-.936-.711-.624-1.066-1.638-1.066-3.042v-7.93h-1.69v-2.418h1.69v-3.562h2.99v3.562h3.484v2.418h-3.484ZM93.865 22.876c0-1.439.295-2.713.885-3.822.606-1.11 1.421-1.967 2.444-2.574a6.546 6.546 0 0 1 3.432-.936c1.126 0 2.106.225 2.938.676.849.433 1.525.98 2.028 1.638v-2.08h2.99v14.326h-2.99v-2.132c-.503.676-1.188 1.24-2.054 1.69-.867.45-1.855.676-2.964.676a6.362 6.362 0 0 1-3.38-.936c-1.023-.641-1.838-1.525-2.444-2.652-.59-1.144-.885-2.435-.885-3.874Zm11.727.052c0-.988-.208-1.846-.624-2.574-.399-.728-.928-1.283-1.586-1.664a4.186 4.186 0 0 0-2.132-.572c-.763 0-1.474.19-2.132.572-.659.364-1.196.91-1.612 1.638-.399.71-.598 1.56-.598 2.548s.199 1.855.598 2.6c.416.745.953 1.317 1.612 1.716a4.275 4.275 0 0 0 2.132.572c.762 0 1.473-.19 2.132-.572.658-.381 1.187-.936 1.586-1.664.416-.745.624-1.612.624-2.6ZM113.983 13.88c-.538 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.814-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546Zm1.456 1.898v14.326h-2.964V15.778h2.964ZM126.558 15.544c1.127 0 2.132.234 3.016.702a4.977 4.977 0 0 1 2.106 2.08c.503.919.754 2.028.754 3.328v8.45h-2.938v-8.008c0-1.283-.321-2.262-.962-2.938-.641-.693-1.517-1.04-2.626-1.04s-1.993.347-2.652 1.04c-.641.676-.962 1.655-.962 2.938v8.008h-2.964V15.778h2.964v1.638a4.928 4.928 0 0 1 1.846-1.378 6.038 6.038 0 0 1 2.418-.494ZM149.345 22.59c0 .537-.035 1.023-.104 1.456h-10.946c.087 1.144.511 2.063 1.274 2.756.763.693 1.699 1.04 2.808 1.04 1.595 0 2.721-.667 3.38-2.002h3.198c-.433 1.317-1.222 2.4-2.366 3.25-1.127.832-2.531 1.248-4.212 1.248-1.369 0-2.6-.303-3.692-.91a6.799 6.799 0 0 1-2.548-2.6c-.607-1.127-.91-2.427-.91-3.9 0-1.473.295-2.765.884-3.874.607-1.127 1.447-1.993 2.522-2.6 1.092-.607 2.34-.91 3.744-.91 1.352 0 2.557.295 3.614.884a6.224 6.224 0 0 1 2.47 2.496c.589 1.057.884 2.28.884 3.666Zm-3.094-.936c-.017-1.092-.407-1.967-1.17-2.626-.763-.659-1.707-.988-2.834-.988-1.023 0-1.898.33-2.626.988-.728.641-1.161 1.517-1.3 2.626h7.93ZM155.226 17.858a4.58 4.58 0 0 1 1.716-1.69c.728-.416 1.586-.624 2.574-.624v3.068h-.754c-1.162 0-2.046.295-2.652.884-.59.59-.884 1.612-.884 3.068v7.54h-2.964V15.778h2.964v2.08ZM163.436 30.286c-.537 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.815-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546ZM170.02 13.88c-.538 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.814-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546Zm1.456 1.898v14.326h-2.964V15.778h2.964ZM181.581 30.338c-1.352 0-2.574-.303-3.666-.91a6.746 6.746 0 0 1-2.574-2.6c-.624-1.127-.936-2.427-.936-3.9 0-1.456.321-2.747.962-3.874a6.651 6.651 0 0 1 2.626-2.6c1.11-.607 2.349-.91 3.718-.91 1.37 0 2.609.303 3.718.91a6.638 6.638 0 0 1 2.626 2.6c.642 1.127.962 2.418.962 3.874s-.329 2.747-.988 3.874a6.904 6.904 0 0 1-2.704 2.626c-1.126.607-2.374.91-3.744.91Zm0-2.574c.763 0 1.474-.182 2.132-.546.676-.364 1.222-.91 1.638-1.638.416-.728.624-1.612.624-2.652s-.199-1.915-.598-2.626c-.398-.728-.927-1.274-1.586-1.638a4.335 4.335 0 0 0-2.132-.546 4.34 4.34 0 0 0-2.132.546c-.641.364-1.152.91-1.534 1.638-.381.71-.572 1.586-.572 2.626 0 1.543.39 2.739 1.17 3.588.798.832 1.794 1.248 2.99 1.248Z\",\n    fill: \"#fff\"\n  }))), _defs || (_defs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"clipPath\", {\n    id: \"portainer_logo_svg__a\"\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n    fill: \"#fff\",\n    d: \"M0 0h190v47H0z\"\n  })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgPortainerLogo);//# sourceURL=webpack-internal:///2857\n");

}),

45119:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"setPortainerStatus\": function() { return /* binding */ setPortainerStatus; },\n/* harmony export */   \"setUserRole\": function() { return /* binding */ setUserRole; },\n/* harmony export */   \"clearUserRole\": function() { return /* binding */ clearUserRole; },\n/* harmony export */   \"setUserEndpointRole\": function() { return /* binding */ setUserEndpointRole; },\n/* harmony export */   \"clearUserEndpointRole\": function() { return /* binding */ clearUserEndpointRole; },\n/* harmony export */   \"push\": function() { return /* binding */ push; },\n/* harmony export */   \"useAnalytics\": function() { return /* binding */ useAnalytics; },\n/* harmony export */   \"trackEvent\": function() { return /* binding */ trackEvent; }\n/* harmony export */ });\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/kebabCase */ 83161);\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_kebabCase__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar categories = ['docker', 'kubernetes', 'aci', 'portainer', 'edge'];\nvar DimensionConfig;\n\n(function (DimensionConfig) {\n  DimensionConfig[DimensionConfig[\"PortainerVersion\"] = 1] = \"PortainerVersion\";\n  DimensionConfig[DimensionConfig[\"PortainerInstanceID\"] = 2] = \"PortainerInstanceID\";\n  DimensionConfig[DimensionConfig[\"PortainerUserRole\"] = 3] = \"PortainerUserRole\";\n  DimensionConfig[DimensionConfig[\"PortainerEndpointUserRole\"] = 4] = \"PortainerEndpointUserRole\";\n})(DimensionConfig || (DimensionConfig = {}));\n\nfunction setPortainerStatus(instanceID, version) {\n  setCustomDimension(DimensionConfig.PortainerInstanceID, instanceID);\n  setCustomDimension(DimensionConfig.PortainerVersion, version);\n}\nfunction setUserRole(role) {\n  setCustomDimension(DimensionConfig.PortainerUserRole, role);\n}\nfunction clearUserRole() {\n  deleteCustomDimension(DimensionConfig.PortainerUserRole);\n}\nfunction setUserEndpointRole(role) {\n  setCustomDimension(DimensionConfig.PortainerEndpointUserRole, role);\n}\nfunction clearUserEndpointRole() {\n  deleteCustomDimension(DimensionConfig.PortainerEndpointUserRole);\n}\n\nfunction setCustomDimension(dimensionId, value) {\n  push('setCustomDimension', dimensionId, value);\n}\n\nfunction deleteCustomDimension(dimensionId) {\n  push('deleteCustomDimension', dimensionId.toString());\n}\n\nfunction push(name) {\n  if (typeof window !== 'undefined') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    window._paq.push([name].concat(args));\n  }\n}\nfunction useAnalytics() {\n  var telemetryQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_20__.usePublicSettings)({\n    select: function select(settings) {\n      return settings.EnableTelemetry;\n    }\n  });\n  return {\n    trackEvent: handleTrackEvent\n  };\n\n  function handleTrackEvent() {\n    if (telemetryQuery.data) {\n      trackEvent.apply(void 0, arguments);\n    }\n  }\n}\nfunction trackEvent(action, properties) {\n  /**\n   * @description Logs an event with an event category (Videos, Music, Games...), an event\n   * action (Play, Pause, Duration, Add Playlist, Downloaded, Clicked...), and an optional\n   * event name and optional numeric value.\n   *\n   * @link https://piwik.org/docs/event-tracking/\n   * @link https://developer.piwik.org/api-reference/tracking-javascript#using-the-tracker-object\n   *\n   */\n  var value = properties.value;\n  var metadata = properties.metadata,\n      dimensions = properties.dimensions,\n      category = properties.category; // PAQ requires that eventValue be an integer, see: http://piwik.org/docs/event-tracking\n\n  if (value) {\n    var parsed = parseInt(value.toString(), 10);\n    value = Number.isNaN(parsed) ? 0 : parsed;\n  }\n\n  if (!category) {\n    throw new Error('missing category');\n  }\n\n  if (!categories.includes(category)) {\n    throw new Error('unsupported category');\n  }\n\n  var metadataString = '';\n\n  if (metadata) {\n    var kebabCasedMetadata = Object.fromEntries(Object.entries(metadata).map(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n\n      return [lodash_kebabCase__WEBPACK_IMPORTED_MODULE_0___default()(key), value];\n    }));\n    metadataString = JSON.stringify(kebabCasedMetadata).toLowerCase();\n  }\n\n  push('trackEvent', category, action.toLowerCase(), metadataString, // Changed in favour of Piwik documentation. Added fallback so it's backwards compatible.\n  value || '', dimensions || {});\n}//# sourceURL=webpack-internal:///45119\n");

}),

34281:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _colors_json__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./colors.json */ 324);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar element = document.createElement('style');\nelement.innerHTML = \":root {\\n  \".concat(Object.entries(_colors_json__WEBPACK_IMPORTED_MODULE_15__).map(function (_ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      color = _ref2[0],\n      hex = _ref2[1];\n\n  if (typeof hex === 'string') {\n    return \"--ui-\".concat(color, \": \").concat(hex);\n  }\n\n  return Object.entries(hex).map(function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        key = _ref4[0],\n        value = _ref4[1];\n\n    return \"--ui-\".concat(color, \"-\").concat(key, \": \").concat(value);\n  }).join(';\\n');\n}).join(';\\n'), \"\\n}\");\ndocument.head.prepend(element);//# sourceURL=webpack-internal:///34281\n");

}),

58389:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"azureModule\": function() { return /* binding */ azureModule; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./react */ 60055);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nvar azureModule = angular__WEBPACK_IMPORTED_MODULE_4___default().module('portainer.azure', [_react__WEBPACK_IMPORTED_MODULE_6__.reactModule]).config(config).name;\n/* @ngInject */\n\nfunction config($stateRegistryProvider) {\n  var azure = {\n    name: 'azure',\n    url: '/azure',\n    parent: 'endpoint',\n    abstract: true,\n    onEnter:\n    /* @ngInject */\n    [\"$async\", \"$state\", \"endpoint\", \"EndpointProvider\", \"StateManager\", function onEnter($async, $state, endpoint, EndpointProvider, StateManager) {\n      return $async( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(endpoint.Type !== 3)) {\n                  _context.next = 3;\n                  break;\n                }\n\n                $state.go('portainer.home');\n                return _context.abrupt(\"return\");\n\n              case 3:\n                _context.prev = 3;\n                EndpointProvider.setEndpointID(endpoint.Id);\n                EndpointProvider.setEndpointPublicURL(endpoint.PublicURL);\n                EndpointProvider.setOfflineModeFromStatus(endpoint.Status);\n                _context.next = 9;\n                return StateManager.updateEndpointState(endpoint);\n\n              case 9:\n                _context.next = 15;\n                break;\n\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](3);\n                (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.notifyError)('Failed loading environment', _context.t0);\n                $state.go('portainer.home', {}, {\n                  reload: true\n                });\n\n              case 15:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, null, [[3, 11]]);\n      })));\n    }]\n  };\n  var containerInstances = {\n    name: 'azure.containerinstances',\n    url: '/containerinstances',\n    views: {\n      'content@': {\n        component: 'containerInstancesView'\n      }\n    }\n  };\n  var containerInstance = {\n    name: 'azure.containerinstances.container',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'containerInstanceView'\n      }\n    }\n  };\n  var containerInstanceCreation = {\n    name: 'azure.containerinstances.new',\n    url: '/new/',\n    views: {\n      'content@': {\n        component: 'createContainerInstanceView'\n      }\n    }\n  };\n  var dashboard = {\n    name: 'azure.dashboard',\n    url: '/dashboard',\n    views: {\n      'content@': {\n        component: 'dashboardView'\n      }\n    }\n  };\n  $stateRegistryProvider.register(azure);\n  $stateRegistryProvider.register(containerInstances);\n  $stateRegistryProvider.register(containerInstance);\n  $stateRegistryProvider.register(containerInstanceCreation);\n  $stateRegistryProvider.register(dashboard);\n}//# sourceURL=webpack-internal:///58389\n");

}),

7206:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.azure.react.components', []).name;//# sourceURL=webpack-internal:///7206\n");

}),

60055:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 7206);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 61936);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.azure.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///60055\n");

}),

61936:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_azure_container_instances_CreateView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/azure/container-instances/CreateView */ 3740);\n/* harmony import */ var _react_azure_container_instances_ItemView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/azure/container-instances/ItemView */ 47453);\n/* harmony import */ var _react_azure_container_instances_ListView__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/azure/container-instances/ListView */ 4302);\n/* harmony import */ var _react_azure_DashboardView__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/azure/DashboardView */ 84446);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n\n\n\n\n\n\n\n\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.azure.react.views', []).component('containerInstanceView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_react_azure_container_instances_ItemView__WEBPACK_IMPORTED_MODULE_4__.ItemView))), [])).component('createContainerInstanceView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_react_azure_container_instances_CreateView__WEBPACK_IMPORTED_MODULE_3__.CreateView))), [])).component('containerInstancesView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_react_azure_container_instances_ListView__WEBPACK_IMPORTED_MODULE_5__.ListView))), [])).component('dashboardView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_react_azure_DashboardView__WEBPACK_IMPORTED_MODULE_6__.DashboardView))), [])).name;//# sourceURL=webpack-internal:///61936\n");

}),

15873:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"trimSHA\": function() { return /* binding */ trimSHA; }\n/* harmony export */ });\n/* harmony import */ var lodash_split__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/split */ 17465);\n/* harmony import */ var lodash_split__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_split__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction trimSHA(imageName) {\n  if (!imageName) {\n    return '';\n  }\n\n  if (imageName.indexOf('sha256:') === 0) {\n    return imageName.substring(7, 19);\n  }\n\n  return lodash_split__WEBPACK_IMPORTED_MODULE_0___default()(imageName, '@sha256')[0];\n}//# sourceURL=webpack-internal:///15873\n");

}),

45674:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"colors\": function() { return /* binding */ colors; },\n/* harmony export */   \"FOREGROUND_COLORS_BY_ANSI\": function() { return /* binding */ FOREGROUND_COLORS_BY_ANSI; },\n/* harmony export */   \"BACKGROUND_COLORS_BY_ANSI\": function() { return /* binding */ BACKGROUND_COLORS_BY_ANSI; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _rawColors_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rawColors.json */ 58550);\n\n\n// original code comes from https://www.npmjs.com/package/x256\n// only picking the used parts as there is no type definition\n// package is unmaintained and repository doesn't exist anymore\n// colors scraped from\n// http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n// %s/ *\\d\\+ \\+#\\([^ ]\\+\\)/\\1\\r/g\n\n\nfunction hexToRGB(hex) {\n  var r = parseInt(hex.slice(0, 2), 16);\n  var g = parseInt(hex.slice(2, 4), 16);\n  var b = parseInt(hex.slice(4, 6), 16);\n  return [r, g, b];\n}\n\nvar colors = _rawColors_json__WEBPACK_IMPORTED_MODULE_2__.map(hexToRGB);\nvar FOREGROUND_COLORS_BY_ANSI = {\n  black: colors[0],\n  red: colors[1],\n  green: colors[2],\n  yellow: colors[3],\n  blue: colors[4],\n  magenta: colors[5],\n  cyan: colors[6],\n  white: colors[7],\n  brightBlack: colors[8],\n  brightRed: colors[9],\n  brightGreen: colors[10],\n  brightYellow: colors[11],\n  brightBlue: colors[12],\n  brightMagenta: colors[13],\n  brightCyan: colors[14],\n  brightWhite: colors[15]\n};\nvar BACKGROUND_COLORS_BY_ANSI = {\n  bgBlack: colors[0],\n  bgRed: colors[1],\n  bgGreen: colors[2],\n  bgYellow: colors[3],\n  bgBlue: colors[4],\n  bgMagenta: colors[5],\n  bgCyan: colors[6],\n  bgWhite: colors[7],\n  bgBrightBlack: colors[8],\n  bgBrightRed: colors[9],\n  bgBrightGreen: colors[10],\n  bgBrightYellow: colors[11],\n  bgBrightBlue: colors[12],\n  bgBrightMagenta: colors[13],\n  bgBrightCyan: colors[14],\n  bgBrightWhite: colors[15]\n};//# sourceURL=webpack-internal:///45674\n");

}),

66414:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "colors": function() { return /* reexport safe */ _colors__WEBPACK_IMPORTED_MODULE_0__.colors; },
/* harmony export */   "FOREGROUND_COLORS_BY_ANSI": function() { return /* reexport safe */ _colors__WEBPACK_IMPORTED_MODULE_0__.FOREGROUND_COLORS_BY_ANSI; },
/* harmony export */   "BACKGROUND_COLORS_BY_ANSI": function() { return /* reexport safe */ _colors__WEBPACK_IMPORTED_MODULE_0__.BACKGROUND_COLORS_BY_ANSI; }
/* harmony export */ });
/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ 45674);


}),

3931:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"concatLogsToString\": function() { return /* binding */ concatLogsToString; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/constants */ 71541);\n\n\nfunction concatLogsToString(logs) {\n  var formatFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (line) {\n    return line.line;\n  };\n  return logs.reduce(function (acc, formattedLine) {\n    return acc + formatFunc(formattedLine) + _constants__WEBPACK_IMPORTED_MODULE_1__.NEW_LINE_BREAKER;\n  }, '');\n}//# sourceURL=webpack-internal:///3931\n");

}),

90482:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatJSONLine\": function() { return /* binding */ formatJSONLine; }\n/* harmony export */ });\n/* harmony import */ var lodash_without__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/without */ 46545);\n/* harmony import */ var lodash_without__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_without__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types */ 52862);\n/* harmony import */ var _formatters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatters */ 64104);\n\n\n\n\n\n\n\nfunction removeKnownKeys(keys) {\n  return lodash_without__WEBPACK_IMPORTED_MODULE_0___default()(keys, 'time', 'level', 'caller', 'message', 'stack_trace');\n}\n\nfunction formatJSONLine(rawText, withTimestamps) {\n  var spans = [];\n  var lines = [];\n  var line = '';\n  var text = withTimestamps ? rawText.substring(_types__WEBPACK_IMPORTED_MODULE_4__.TIMESTAMP_LENGTH) : rawText;\n  var json = JSON.parse(text);\n  var time = json.time,\n      level = json.level,\n      caller = json.caller,\n      message = json.message,\n      stackTrace = json.stack_trace;\n  var keys = removeKnownKeys(Object.keys(json));\n\n  if (withTimestamps) {\n    var timestamp = rawText.substring(0, _types__WEBPACK_IMPORTED_MODULE_4__.TIMESTAMP_LENGTH);\n    spans.push({\n      text: timestamp\n    });\n    line += \"\".concat(timestamp, \" \");\n  }\n\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatTime)(time, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatLevel)(level, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatCaller)(caller, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatMessage)(message, spans, line, !!keys.length);\n  keys.forEach(function (key, idx) {\n    line += (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatKeyValuePair)(key, json[key], spans, line, idx === keys.length - 1);\n  });\n  lines.push({\n    line: line,\n    spans: spans\n  });\n  (0,_formatters__WEBPACK_IMPORTED_MODULE_5__.formatStackTrace)(stackTrace, lines);\n  return lines;\n}//# sourceURL=webpack-internal:///90482\n");

}),

12092:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatLogs\": function() { return /* binding */ formatLogs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59886);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _nxmix_tokenize_ansi__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @nxmix/tokenize-ansi */ 92376);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./colors */ 66414);\n/* harmony import */ var _formatJSONLogs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formatJSONLogs */ 90482);\n/* harmony import */ var _formatZerologLogs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formatZerologLogs */ 21884);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./types */ 52862);\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar defaultOptions = {\n  splitter: '\\n'\n};\nfunction formatLogs(rawLogs) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions,\n      stripHeaders = _ref.stripHeaders,\n      withTimestamps = _ref.withTimestamps,\n      _ref$splitter = _ref.splitter,\n      splitter = _ref$splitter === void 0 ? '\\n' : _ref$splitter;\n\n  var logs = rawLogs;\n\n  if (stripHeaders) {\n    logs = stripHeadersFunc(logs);\n  } // if JSON logs come serialized 2 times, parse them once to unwrap them\n  // for example when retrieving Edge Agent logs on Nomad\n\n\n  if (logs.startsWith('\"')) {\n    try {\n      logs = JSON.parse(logs);\n    } catch (error) {// noop, throw error away if logs cannot be parsed\n    }\n  }\n\n  var tokens = (0,_nxmix_tokenize_ansi__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(logs);\n  var formattedLogs = [];\n  var fgColor;\n  var bgColor;\n  var fontWeight;\n  var line = '';\n  var spans = [];\n  tokens.forEach(function (token) {\n    var _token = _slicedToArray(token, 1),\n        type = _token[0];\n\n    var fgAnsi = _colors__WEBPACK_IMPORTED_MODULE_17__.FOREGROUND_COLORS_BY_ANSI[type];\n    var bgAnsi = _colors__WEBPACK_IMPORTED_MODULE_17__.BACKGROUND_COLORS_BY_ANSI[type];\n\n    if (fgAnsi) {\n      fgColor = cssColorFromRgb(fgAnsi);\n    } else if (type === 'moreColor') {\n      fgColor = extendedColorForToken(token);\n    } else if (type === 'fgDefault') {\n      fgColor = undefined;\n    } else if (bgAnsi) {\n      bgColor = cssColorFromRgb(bgAnsi);\n    } else if (type === 'bgMoreColor') {\n      bgColor = extendedColorForToken(token);\n    } else if (type === 'bgDefault') {\n      bgColor = undefined;\n    } else if (type === 'reset') {\n      fgColor = undefined;\n      bgColor = undefined;\n      fontWeight = undefined;\n    } else if (type === 'bold') {\n      fontWeight = 'bold';\n    } else if (type === 'normal') {\n      fontWeight = 'normal';\n    } else if (type === 'text') {\n      var tokenLines = token[1].split(splitter);\n      tokenLines.forEach(function (tokenLine, idx) {\n        if (idx && line) {\n          formattedLogs.push({\n            line: line,\n            spans: spans\n          });\n          line = '';\n          spans = [];\n        }\n\n        var text = stripEscapeCodes(tokenLine);\n\n        try {\n          if (!withTimestamps && text.startsWith('{') || withTimestamps && text.substring(_types__WEBPACK_IMPORTED_MODULE_20__.TIMESTAMP_LENGTH).startsWith('{')) {\n            var lines = (0,_formatJSONLogs__WEBPACK_IMPORTED_MODULE_18__.formatJSONLine)(text, withTimestamps);\n            formattedLogs.push.apply(formattedLogs, _toConsumableArray(lines));\n          } else if (!withTimestamps && _formatZerologLogs__WEBPACK_IMPORTED_MODULE_19__.ZerologRegex.test(text) || withTimestamps && _formatZerologLogs__WEBPACK_IMPORTED_MODULE_19__.ZerologRegex.test(text.substring(_types__WEBPACK_IMPORTED_MODULE_20__.TIMESTAMP_LENGTH))) {\n            var _lines = (0,_formatZerologLogs__WEBPACK_IMPORTED_MODULE_19__.formatZerologLogs)(text, withTimestamps);\n\n            formattedLogs.push.apply(formattedLogs, _toConsumableArray(_lines));\n          } else {\n            spans.push({\n              fgColor: fgColor,\n              bgColor: bgColor,\n              text: text,\n              fontWeight: fontWeight\n            });\n            line += text;\n          }\n        } catch (error) {\n          // in case parsing fails for whatever reason, push the raw logs and continue\n          spans.push({\n            fgColor: fgColor,\n            bgColor: bgColor,\n            text: text,\n            fontWeight: fontWeight\n          });\n          line += text;\n        }\n      });\n    }\n  });\n\n  if (line) {\n    formattedLogs.push({\n      line: line,\n      spans: spans\n    });\n  }\n\n  return formattedLogs;\n}\n\nfunction stripHeadersFunc(logs) {\n  return logs.substring(8).replace(/\\r?\\n(.{8})/g, '\\n');\n}\n\nfunction stripEscapeCodes(logs) {\n  return logs.replace( // eslint-disable-next-line no-control-regex\n  /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');\n}\n\nfunction cssColorFromRgb(rgb) {\n  var _rgb = _slicedToArray(rgb, 3),\n      r = _rgb[0],\n      g = _rgb[1],\n      b = _rgb[2];\n\n  return \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\");\n} // assuming types based on original JS implementation\n// there is not much type definitions for the tokenize library\n\n\nfunction extendedColorForToken(token) {\n  var _ref2 = token,\n      _ref3 = _slicedToArray(_ref2, 3),\n      colorMode = _ref3[1],\n      colorRef = _ref3[2];\n\n  if (colorMode === 2) {\n    return cssColorFromRgb(token.slice(2));\n  }\n\n  if (colorMode === 5 && _colors__WEBPACK_IMPORTED_MODULE_17__.colors[colorRef]) {\n    return cssColorFromRgb(_colors__WEBPACK_IMPORTED_MODULE_17__.colors[colorRef]);\n  }\n\n  return '';\n}//# sourceURL=webpack-internal:///12092\n");

}),

21884:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ZerologRegex\": function() { return /* binding */ ZerologRegex; },\n/* harmony export */   \"formatZerologLogs\": function() { return /* binding */ formatZerologLogs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.set.js */ 89024);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.flags.js */ 9502);\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ 10335);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 49329);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ 90257);\n/* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ 76657);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ 24378);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_esnext_string_match_all_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/esnext.string.match-all.js */ 45720);\n/* harmony import */ var core_js_modules_esnext_string_match_all_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_string_match_all_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var _formatters__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./formatters */ 64104);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./types */ 52862);\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dateRegex = /(\\d{4}\\/\\d{2}\\/\\d{2} \\d{2}:\\d{2}[AP]M) /; // \"2022/02/01 04:30AM \"\n\nvar levelRegex = /(\\w{3}) /; // \"INF \" or \"ERR \"\n\nvar callerRegex = /(.+?.go:\\d+) /; // \"path/to/file.go:line \"\n\nvar chevRegex = /> /; // \"> \"\n\nvar messageAndPairsRegex = /(.*)/; // include the rest of the string in a separate group\n\nvar keyRegex = /(\\S+=)/g; // \"\"\n\nvar ZerologRegex = concatRegex(dateRegex, levelRegex, callerRegex, chevRegex, messageAndPairsRegex);\n\nfunction concatRegex() {\n  for (var _len = arguments.length, regs = new Array(_len), _key = 0; _key < _len; _key++) {\n    regs[_key] = arguments[_key];\n  }\n\n  var flags = Array.from(new Set(regs.map(function (r) {\n    return r.flags;\n  }).join('').split(''))).join('');\n  var source = regs.map(function (r) {\n    return r.source;\n  }).join('');\n  return new RegExp(source, flags);\n}\n\nfunction formatZerologLogs(rawText, withTimestamps) {\n  var spans = [];\n  var lines = [];\n  var line = '';\n  var text = withTimestamps ? rawText.substring(_types__WEBPACK_IMPORTED_MODULE_27__.TIMESTAMP_LENGTH) : rawText;\n\n  if (withTimestamps) {\n    var timestamp = rawText.substring(0, _types__WEBPACK_IMPORTED_MODULE_27__.TIMESTAMP_LENGTH);\n    spans.push({\n      text: timestamp\n    });\n    line += \"\".concat(timestamp, \" \");\n  }\n\n  var _ref = text.match(ZerologRegex) || [],\n      _ref2 = _slicedToArray(_ref, 5),\n      date = _ref2[1],\n      level = _ref2[2],\n      caller = _ref2[3],\n      messageAndPairs = _ref2[4];\n\n  var _extractPairs = extractPairs(messageAndPairs),\n      _extractPairs2 = _slicedToArray(_extractPairs, 2),\n      message = _extractPairs2[0],\n      pairs = _extractPairs2[1];\n\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatTime)(date, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatLevel)(level, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatCaller)(caller, spans, line);\n  line += (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatMessage)(message, spans, line, !!pairs.length);\n  var stackTrace;\n  var stackTraceIndex = pairs.findIndex(function (p) {\n    return p.key === 'stack_trace';\n  });\n\n  if (stackTraceIndex !== -1) {\n    stackTrace = JSON.parse(pairs[stackTraceIndex].value);\n    pairs.splice(stackTraceIndex);\n  }\n\n  pairs.forEach(function (_ref3, idx) {\n    var key = _ref3.key,\n        value = _ref3.value;\n    line += (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatKeyValuePair)(key, value, spans, line, idx === pairs.length - 1);\n  });\n  lines.push({\n    line: line,\n    spans: spans\n  });\n  (0,_formatters__WEBPACK_IMPORTED_MODULE_26__.formatStackTrace)(stackTrace, lines);\n  return lines;\n}\n\nfunction extractPairs(messageAndPairs) {\n  var pairs = [];\n\n  var _messageAndPairs$spli = messageAndPairs.split('|'),\n      _messageAndPairs$spli2 = _slicedToArray(_messageAndPairs$spli, 2),\n      message = _messageAndPairs$spli2[0],\n      rawPairs = _messageAndPairs$spli2[1];\n\n  if (!messageAndPairs.includes('|') && !rawPairs) {\n    rawPairs = message;\n    message = '';\n  }\n\n  message = message.trim();\n  rawPairs = rawPairs.trim();\n\n  var matches = _toConsumableArray(rawPairs.matchAll(keyRegex));\n\n  matches.forEach(function (m, idx) {\n    var rawKey = m[0];\n    var key = rawKey.slice(0, -1);\n    var start = m.index || 0;\n    var end = idx !== matches.length - 1 ? matches[idx + 1].index : undefined;\n    var value = (end ? rawPairs.slice(start + rawKey.length, end) : rawPairs.slice(start + rawKey.length)).trim();\n    pairs.push({\n      key: key,\n      value: value\n    });\n  });\n  return [message, pairs];\n}//# sourceURL=webpack-internal:///21884\n");

}),

64104:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatTime\": function() { return /* binding */ formatTime; },\n/* harmony export */   \"formatLevel\": function() { return /* binding */ formatLevel; },\n/* harmony export */   \"formatCaller\": function() { return /* binding */ formatCaller; },\n/* harmony export */   \"formatMessage\": function() { return /* binding */ formatMessage; },\n/* harmony export */   \"formatKeyValuePair\": function() { return /* binding */ formatKeyValuePair; },\n/* harmony export */   \"formatStackTrace\": function() { return /* binding */ formatStackTrace; }\n/* harmony export */ });\n/* harmony import */ var lodash_takeRight__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/takeRight */ 89485);\n/* harmony import */ var lodash_takeRight__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_takeRight__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! date-fns */ 24426);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ 52862);\n\n\n\n\n\n\n\n\n\nvar spaceSpan = {\n  text: ' '\n};\n\nfunction logLevelToSpan(level) {\n  switch (level) {\n    case 'debug':\n    case 'DBG':\n      return {\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Grey,\n        text: 'DBG',\n        fontWeight: 'bold'\n      };\n\n    case 'info':\n    case 'INF':\n      return {\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Green,\n        text: 'INF',\n        fontWeight: 'bold'\n      };\n\n    case 'warn':\n    case 'WRN':\n      return {\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Yellow,\n        text: 'WRN',\n        fontWeight: 'bold'\n      };\n\n    case 'error':\n    case 'ERR':\n      return {\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Red,\n        text: 'ERR',\n        fontWeight: 'bold'\n      };\n\n    default:\n      return {\n        text: level\n      };\n  }\n}\n\nfunction formatTime(time, spans, line) {\n  var nl = line;\n\n  if (time) {\n    var date = '';\n\n    if (typeof time === 'number') {\n      date = (0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(new Date(time * 1000), 'Y/MM/dd hh:mmaa');\n    } else {\n      date = time;\n    }\n\n    spans.push({\n      fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Grey,\n      text: date\n    }, spaceSpan);\n    nl += \"\".concat(date, \" \");\n  }\n\n  return nl;\n}\nfunction formatLevel(level, spans, line) {\n  var nl = line;\n\n  if (level) {\n    var levelSpan = logLevelToSpan(level);\n    spans.push(levelSpan, spaceSpan);\n    nl += \"\".concat(levelSpan.text, \" \");\n  }\n\n  return nl;\n}\nfunction formatCaller(caller, spans, line) {\n  var nl = line;\n\n  if (caller) {\n    var trim = lodash_takeRight__WEBPACK_IMPORTED_MODULE_0___default()(caller.split('/'), 2).join('/');\n\n    spans.push({\n      fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Magenta,\n      text: trim,\n      fontWeight: 'bold'\n    }, spaceSpan);\n    spans.push({\n      fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Blue,\n      text: '>'\n    }, spaceSpan);\n    nl += \"\".concat(trim, \" > \");\n  }\n\n  return nl;\n}\nfunction formatMessage(message, spans, line, hasKeys) {\n  var nl = line;\n\n  if (message) {\n    spans.push({\n      fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Magenta,\n      text: \"\".concat(message)\n    }, spaceSpan);\n    nl += \"\".concat(message, \" \");\n\n    if (hasKeys) {\n      spans.push({\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Magenta,\n        text: \"|\"\n      }, spaceSpan);\n      nl += '| ';\n    }\n  }\n\n  return nl;\n}\nfunction formatKeyValuePair(key, value, spans, line, isLastKey) {\n  var nl = line;\n  spans.push({\n    fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Blue,\n    text: \"\".concat(key, \"=\")\n  }, {\n    fgColor: key === 'error' || key === 'ERR' ? _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Red : _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Magenta,\n    text: value\n  });\n  if (!isLastKey) spans.push(spaceSpan);\n  nl += \"\".concat(key, \"=\").concat(value).concat(!isLastKey ? ' ' : '');\n  return nl;\n}\nfunction formatStackTrace(stackTrace, lines) {\n  if (stackTrace) {\n    stackTrace.forEach(function (_ref) {\n      var func = _ref.func,\n          lineNumber = _ref.line,\n          source = _ref.source;\n      var line = \"    at \".concat(func, \" (\").concat(source, \":\").concat(lineNumber, \")\");\n      var spans = [spaceSpan, spaceSpan, spaceSpan, spaceSpan, {\n        text: 'at ',\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Grey\n      }, {\n        text: func,\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Red\n      }, {\n        text: \"(\".concat(source, \":\").concat(lineNumber, \")\"),\n        fgColor: _types__WEBPACK_IMPORTED_MODULE_7__.Colors.Grey\n      }];\n      lines.push({\n        line: line,\n        spans: spans\n      });\n    });\n  }\n}//# sourceURL=webpack-internal:///64104\n");

}),

17110:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatLogs\": function() { return /* reexport safe */ _formatLogs__WEBPACK_IMPORTED_MODULE_0__.formatLogs; },\n/* harmony export */   \"concatLogsToString\": function() { return /* reexport safe */ _concatLogsToString__WEBPACK_IMPORTED_MODULE_1__.concatLogsToString; }\n/* harmony export */ });\n/* harmony import */ var _formatLogs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatLogs */ 12092);\n/* harmony import */ var _concatLogsToString__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concatLogsToString */ 3931);\n\n//# sourceURL=webpack-internal:///17110\n");

}),

52862:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TIMESTAMP_LENGTH\": function() { return /* binding */ TIMESTAMP_LENGTH; },\n/* harmony export */   \"Colors\": function() { return /* binding */ Colors; }\n/* harmony export */ });\nvar TIMESTAMP_LENGTH = 31; // 30 for timestamp + 1 for trailing space\n\nvar Colors = {\n  Grey: 'var(--text-log-viewer-color-json-grey)',\n  Magenta: 'var(--text-log-viewer-color-json-magenta)',\n  Yellow: 'var(--text-log-viewer-color-json-yellow)',\n  Green: 'var(--text-log-viewer-color-json-green)',\n  Red: 'var(--text-log-viewer-color-json-red)',\n  Blue: 'var(--text-log-viewer-color-json-blue)'\n};//# sourceURL=webpack-internal:///52862\n");

}),

8692:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_docker_stacks_ItemView_StackContainersDatatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/docker/stacks/ItemView/StackContainersDatatable */ 50087);\n/* harmony import */ var _react_docker_containers_components_ContainerQuickActions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/docker/containers/components/ContainerQuickActions */ 67335);\n/* harmony import */ var _react_docker_app_templates_TemplateListDropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/docker/app-templates/TemplateListDropdown */ 31475);\n/* harmony import */ var _react_docker_app_templates_TemplateListSort__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/docker/app-templates/TemplateListSort */ 42148);\n/* harmony import */ var _react_docker_containers_CreateView_Gpu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/docker/containers/CreateView/Gpu */ 33525);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n\n\n\n\n\n\n\n\n\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.docker.react.components', []).component('containerQuickActions', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_10__.withUIRouter)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_8__.withCurrentUser)(_react_docker_containers_components_ContainerQuickActions__WEBPACK_IMPORTED_MODULE_4__.ContainerQuickActions)), ['containerId', 'nodeName', 'state', 'status', 'taskId'])).component('templateListDropdown', _react_docker_app_templates_TemplateListDropdown__WEBPACK_IMPORTED_MODULE_5__.TemplateListDropdownAngular).component('templateListSort', _react_docker_app_templates_TemplateListSort__WEBPACK_IMPORTED_MODULE_6__.TemplateListSortAngular).component('stackContainersDatatable', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_10__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_9__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_8__.withCurrentUser)(_react_docker_stacks_ItemView_StackContainersDatatable__WEBPACK_IMPORTED_MODULE_3__.StackContainersDatatable))), ['environment', 'stackName'])).component('gpu', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_docker_containers_CreateView_Gpu__WEBPACK_IMPORTED_MODULE_7__.Gpu, ['values', 'onChange', 'gpus', 'usedGpus', 'usedAllGpus'])).name;//# sourceURL=webpack-internal:///8692\n");

}),

9623:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 8692);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 70094);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.docker.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///9623\n");

}),

67147:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"containersModule\": function() { return /* binding */ containersModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_docker_containers_ListView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/docker/containers/ListView */ 54518);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\nvar autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! @/docker/views/containers/edit/container.html */ 5744);\n\nvar autoNgTemplateLoaderTemplate2 = __webpack_require__(/*! @/docker/views/containers/console/attach.html */ 8423);\n\nvar autoNgTemplateLoaderTemplate3 = __webpack_require__(/*! @/docker/views/containers/console/exec.html */ 98757);\n\nvar autoNgTemplateLoaderTemplate4 = __webpack_require__(/*! @/docker/views/containers/create/createcontainer.html */ 92091);\n\nvar autoNgTemplateLoaderTemplate5 = __webpack_require__(/*! @/docker/views/containers/inspect/containerinspect.html */ 96215);\n\nvar autoNgTemplateLoaderTemplate6 = __webpack_require__(/*! @/docker/views/containers/logs/containerlogs.html */ 7942);\n\nvar autoNgTemplateLoaderTemplate7 = __webpack_require__(/*! @/docker/views/containers/stats/containerstats.html */ 67431);\n\n\n\n\n\n\n\nvar containersModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.docker.containers', []).component('containersView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_docker_containers_ListView__WEBPACK_IMPORTED_MODULE_3__.ListView))), ['endpoint'])).config(config).name;\n/* @ngInject */\n\nfunction config($stateRegistryProvider) {\n  $stateRegistryProvider.register({\n    name: 'docker.containers',\n    url: '/containers',\n    views: {\n      'content@': {\n        component: 'containersView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container',\n    url: '/:id?nodeName',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate1,\n        controller: 'ContainerController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container.attach',\n    url: '/attach',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate2,\n        controller: 'ContainerConsoleController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container.exec',\n    url: '/exec',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate3,\n        controller: 'ContainerConsoleController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.new',\n    url: '/new?nodeName&from',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate4,\n        controller: 'CreateContainerController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container.inspect',\n    url: '/inspect',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate5,\n        controller: 'ContainerInspectController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container.logs',\n    url: '/logs',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate6,\n        controller: 'ContainerLogsController'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'docker.containers.container.stats',\n    url: '/stats',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate7,\n        controller: 'ContainerStatsController'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///67147\n");

}),

70094:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_docker_networks_ItemView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/docker/networks/ItemView */ 96156);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _containers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./containers */ 67147);\n\n\n\n\n\n\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.docker.react.views', [_containers__WEBPACK_IMPORTED_MODULE_7__.containersModule]).component('networkDetailsView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_docker_networks_ItemView__WEBPACK_IMPORTED_MODULE_2__.ItemView))), [])).name;//# sourceURL=webpack-internal:///70094\n");

}),

30788:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getVersion\": function() { return /* binding */ getVersion; },\n/* harmony export */   \"getInfo\": function() { return /* binding */ getInfo; },\n/* harmony export */   \"useInfo\": function() { return /* binding */ useInfo; },\n/* harmony export */   \"useVersion\": function() { return /* binding */ useVersion; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction getVersion(_x) {\n  return _getVersion.apply(this, arguments);\n}\n\nfunction _getVersion() {\n  _getVersion = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__[\"default\"].get(buildUrl(environmentId, 'version'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__.parseAxiosError)(_context.t0, 'Unable to retrieve version');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getVersion.apply(this, arguments);\n}\n\nfunction getInfo(_x2) {\n  return _getInfo.apply(this, arguments);\n}\n\nfunction _getInfo() {\n  _getInfo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId) {\n    var _yield$axios$get2, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__[\"default\"].get(buildUrl(environmentId, 'info'));\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            data = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", data);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__.parseAxiosError)(_context2.t0, 'Unable to retrieve version');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getInfo.apply(this, arguments);\n}\n\nfunction useInfo(environmentId, select) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQuery)(['environment', environmentId, 'docker', 'info'], function () {\n    return getInfo(environmentId);\n  }, {\n    select: select\n  });\n}\nfunction useVersion(environmentId, select) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQuery)(['environment', environmentId, 'docker', 'version'], function () {\n    return getVersion(environmentId);\n  }, {\n    select: select\n  });\n}\n\nfunction buildUrl(environmentId, action) {\n  var subAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n  var url = \"/endpoints/\".concat(environmentId, \"/docker/\").concat(action);\n\n  if (subAction) {\n    url += \"/\".concat(subAction);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///30788\n");

}),

42616:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AMTDevicesDatatable\": function() { return /* binding */ AMTDevicesDatatable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_useAMTDevices__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/edge/EdgeDevices/EdgeDevicesView/AMTDevicesDatatable/useAMTDevices */ 27752);\n/* harmony import */ var _edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_columns_RowContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/edge/EdgeDevices/EdgeDevicesView/AMTDevicesDatatable/columns/RowContext */ 64964);\n/* harmony import */ var _datatables_InnerDatatable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/datatables/InnerDatatable */ 96394);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./columns */ 15004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction AMTDevicesDatatable(_ref) {\n  var environmentId = _ref.environmentId;\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_6__.useColumns)();\n\n  var _useAMTDevices = (0,_edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_useAMTDevices__WEBPACK_IMPORTED_MODULE_2__.useAMTDevices)(environmentId),\n      isLoading = _useAMTDevices.isLoading,\n      devices = _useAMTDevices.devices,\n      error = _useAMTDevices.error;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_1__.useTable)({\n    columns: columns,\n    data: devices\n  }, react_table__WEBPACK_IMPORTED_MODULE_1__.usePagination),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_datatables_InnerDatatable__WEBPACK_IMPORTED_MODULE_4__.InnerDatatable, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_5__.TableContainer, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_5__.Table, {\n        className: tableProps.className,\n        role: tableProps.role,\n        style: tableProps.style,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"thead\", {\n          children: headerGroups.map(function (headerGroup) {\n            var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                key = _headerGroup$getHeade.key,\n                className = _headerGroup$getHeade.className,\n                role = _headerGroup$getHeade.role,\n                style = _headerGroup$getHeade.style;\n\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_5__.TableHeaderRow, {\n              className: className,\n              role: role,\n              style: style,\n              headers: headerGroup.headers\n            }, key);\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"tbody\", {\n          className: tbodyProps.className,\n          role: tbodyProps.role,\n          style: tbodyProps.style,\n          children: !isLoading && devices && devices.length > 0 ? page.map(function (row) {\n            prepareRow(row);\n\n            var _row$getRowProps = row.getRowProps(),\n                key = _row$getRowProps.key,\n                className = _row$getRowProps.className,\n                role = _row$getRowProps.role,\n                style = _row$getRowProps.style;\n\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_columns_RowContext__WEBPACK_IMPORTED_MODULE_3__.RowProvider, {\n              environmentId: environmentId,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_5__.TableRow, {\n                cells: row.cells,\n                className: className,\n                role: role,\n                style: style\n              }, key)\n            }, key);\n          }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"tr\", {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"td\", {\n              colSpan: 5,\n              className: \"text-center text-muted\",\n              children: userMessage(isLoading, error)\n            })\n          })\n        })]\n      })\n    })\n  });\n}\n\nfunction userMessage(isLoading, error) {\n  if (isLoading) {\n    return '加载中...';\n  }\n\n  if (error) {\n    return error.message;\n  }\n\n  return '未找到设备';\n}//# sourceURL=webpack-internal:///42616\n");

}),

64964:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useRowContext\": function() { return /* binding */ useRowContext; },\n/* harmony export */   \"RowProvider\": function() { return /* binding */ RowProvider; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _datatables_RowContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/datatables/RowContext */ 9924);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\nvar _createRowContext = (0,_datatables_RowContext__WEBPACK_IMPORTED_MODULE_12__.createRowContext)(),\n    InternalProvider = _createRowContext.RowProvider,\n    useRowContext = _createRowContext.useRowContext;\n\n\nfunction RowProvider(_ref) {\n  var environmentId = _ref.environmentId,\n      children = _ref.children;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_11__.useReducer)(function (state) {\n    return !state;\n  }, false),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      isLoading = _useReducer2[0],\n      toggleIsLoading = _useReducer2[1];\n\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_11__.useMemo)(function () {\n    return {\n      isLoading: isLoading,\n      toggleIsLoading: toggleIsLoading,\n      environmentId: environmentId\n    };\n  }, [environmentId, isLoading]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(InternalProvider, {\n    context: context,\n    children: children\n  });\n}//# sourceURL=webpack-internal:///64964\n");

}),

93590:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"actions\": function() { return /* binding */ actions; },\n/* harmony export */   \"ActionsCell\": function() { return /* binding */ ActionsCell; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/hostmanagement/open-amt/open-amt.service */ 76827);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _datatables_ActionsMenu__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/datatables/ActionsMenu */ 65444);\n/* harmony import */ var _datatables_ActionsMenuTitle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/datatables/ActionsMenuTitle */ 16163);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RowContext */ 64964);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\nvar DeviceAction;\n\n(function (DeviceAction) {\n  DeviceAction[\"PowerOn\"] = \"power on\";\n  DeviceAction[\"PowerOff\"] = \"power off\";\n  DeviceAction[\"Restart\"] = \"restart\";\n})(DeviceAction || (DeviceAction = {}));\n\nvar actions = {\n  Header: '操作',\n  accessor: function accessor() {\n    return 'actions';\n  },\n  id: 'actions',\n  disableFilters: true,\n  canHide: true,\n  disableResizing: true,\n  width: '5px',\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  },\n  Cell: ActionsCell\n};\nfunction ActionsCell(_ref) {\n  var device = _ref.row.original;\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQueryClient)();\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_10__.useRowContext)(),\n      isLoading = _useRowContext.isLoading,\n      toggleIsLoading = _useRowContext.toggleIsLoading,\n      environmentId = _useRowContext.environmentId;\n\n  var kvmLinkProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_3__.useSref)('portainer.endpoints.endpoint.kvm', {\n    id: environmentId,\n    deviceId: device.guid,\n    deviceName: device.hostname\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_datatables_ActionsMenu__WEBPACK_IMPORTED_MODULE_8__.ActionsMenu, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_datatables_ActionsMenuTitle__WEBPACK_IMPORTED_MODULE_9__.ActionsMenuTitle, {\n      children: \"AMT Functions\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_12__.MenuItem, {\n      disabled: isLoading,\n      onSelect: function onSelect() {\n        return handleDeviceActionClick(DeviceAction.PowerOn);\n      },\n      children: \"Power ON\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_12__.MenuItem, {\n      disabled: isLoading,\n      onSelect: function onSelect() {\n        return handleDeviceActionClick(DeviceAction.PowerOff);\n      },\n      children: \"Power OFF\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_12__.MenuItem, {\n      disabled: isLoading,\n      onSelect: function onSelect() {\n        return handleDeviceActionClick(DeviceAction.Restart);\n      },\n      children: \"Restart\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_12__.MenuLink, {\n      href: kvmLinkProps.href,\n      onClick: kvmLinkProps.onClick,\n      disabled: isLoading,\n      children: \"KVM\"\n    })]\n  });\n\n  function handleDeviceActionClick(_x) {\n    return _handleDeviceActionClick.apply(this, arguments);\n  }\n\n  function _handleDeviceActionClick() {\n    _handleDeviceActionClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(action) {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_5__.confirmAsync)({\n                title: '确认操作',\n                message: \"\\u662F\\u5426\\u786E\\u5B9E\\u8981\\u5BF9\\u8BBE\\u5907\\u6267\\u884C \".concat(action, \" \\uFF1F\"),\n                buttons: {\n                  cancel: {\n                    label: '取消',\n                    className: 'btn-default'\n                  },\n                  confirm: {\n                    label: '确认',\n                    className: 'btn-primary'\n                  }\n                }\n              });\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 5:\n              _context.prev = 5;\n              toggleIsLoading();\n              _context.next = 9;\n              return (0,_portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_6__.executeDeviceAction)(environmentId, device.guid, action);\n\n            case 9:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.success(\"\".concat(action, \" action sent successfully\"), device.hostname);\n              _context.next = 12;\n              return queryClient.invalidateQueries(['amt_devices', environmentId]);\n\n            case 12:\n              _context.next = 17;\n              break;\n\n            case 14:\n              _context.prev = 14;\n              _context.t0 = _context[\"catch\"](5);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.error('Failure', _context.t0, \"Failed to \".concat(action, \" the device\"));\n\n            case 17:\n              _context.prev = 17;\n              toggleIsLoading();\n              return _context.finish(17);\n\n            case 20:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[5, 14, 17, 20]]);\n    }));\n    return _handleDeviceActionClick.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///93590\n");

}),

30115:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"hostname\": function() { return /* binding */ hostname; }\n/* harmony export */ });\nvar hostname = {\n  Header: 'Hostname',\n  accessor: function accessor(row) {\n    return row.hostname || '-';\n  },\n  id: 'hostname',\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///30115\n");

}),

15004:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _hostname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hostname */ 30115);\n/* harmony import */ var _status__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./status */ 7343);\n/* harmony import */ var _power_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./power-state */ 66430);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions */ 93590);\n\n\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_hostname__WEBPACK_IMPORTED_MODULE_1__.hostname, _status__WEBPACK_IMPORTED_MODULE_2__.status, _power_state__WEBPACK_IMPORTED_MODULE_3__.powerState, _actions__WEBPACK_IMPORTED_MODULE_4__.actions];\n  }, []);\n}//# sourceURL=webpack-internal:///15004\n");

}),

66430:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"powerState\": function() { return /* binding */ powerState; },\n/* harmony export */   \"PowerStateCell\": function() { return /* binding */ PowerStateCell; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RowContext */ 64964);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nvar PowerState;\n\n(function (PowerState) {\n  PowerState[\"Running\"] = \"Running\";\n  PowerState[\"Sleep\"] = \"Sleep\";\n  PowerState[\"Off\"] = \"Off\";\n  PowerState[\"Hibernate\"] = \"Hibernate\";\n  PowerState[\"PowerCycle\"] = \"Power Cycle\";\n})(PowerState || (PowerState = {}));\n\nvar PowerStateCode;\n\n(function (PowerStateCode) {\n  PowerStateCode[PowerStateCode[\"On\"] = 2] = \"On\";\n  PowerStateCode[PowerStateCode[\"SleepLight\"] = 3] = \"SleepLight\";\n  PowerStateCode[PowerStateCode[\"SleepDeep\"] = 4] = \"SleepDeep\";\n  PowerStateCode[PowerStateCode[\"OffHard\"] = 6] = \"OffHard\";\n  PowerStateCode[PowerStateCode[\"Hibernate\"] = 7] = \"Hibernate\";\n  PowerStateCode[PowerStateCode[\"OffSoft\"] = 8] = \"OffSoft\";\n  PowerStateCode[PowerStateCode[\"PowerCycle\"] = 9] = \"PowerCycle\";\n  PowerStateCode[PowerStateCode[\"OffHardGraceful\"] = 13] = \"OffHardGraceful\";\n})(PowerStateCode || (PowerStateCode = {}));\n\nvar powerState = {\n  Header: 'Power State',\n  accessor: function accessor(row) {\n    return parsePowerState(row.powerState);\n  },\n  id: 'powerState',\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Cell: PowerStateCell,\n  Filter: function Filter() {\n    return null;\n  }\n};\nfunction PowerStateCell(_ref) {\n  var device = _ref.row.original;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_1__.useRowContext)(),\n      isLoading = _useRowContext.isLoading;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        'text-success': device.powerState === PowerStateCode.On\n      }),\n      children: parsePowerState(device.powerState)\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      children: isLoading && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n        className: \"fa fa-cog fa-spin space-left\"\n      })\n    })]\n  });\n}\n\nfunction parsePowerState(value) {\n  // https://app.swaggerhub.com/apis-docs/rbheopenamt/mps/1.4.0#/AMT/get_api_v1_amt_power_state__guid_\n  switch (value) {\n    case PowerStateCode.On:\n      return PowerState.Running;\n\n    case PowerStateCode.SleepLight:\n    case PowerStateCode.SleepDeep:\n      return PowerState.Sleep;\n\n    case PowerStateCode.OffHard:\n    case PowerStateCode.OffSoft:\n    case PowerStateCode.OffHardGraceful:\n      return PowerState.Off;\n\n    case PowerStateCode.Hibernate:\n      return PowerState.Hibernate;\n\n    case PowerStateCode.PowerCycle:\n      return PowerState.PowerCycle;\n\n    default:\n      return '-';\n  }\n}//# sourceURL=webpack-internal:///66430\n");

}),

7343:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"status\": function() { return /* binding */ status; },\n/* harmony export */   \"StatusCell\": function() { return /* binding */ StatusCell; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar status = {\n  Header: 'MPS Status',\n  id: 'status',\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Cell: StatusCell,\n  Filter: function Filter() {\n    return null;\n  }\n};\nfunction StatusCell(_ref) {\n  var device = _ref.row.original;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      'text-success': device.connectionStatus\n    }),\n    children: device.connectionStatus ? 'Connected' : 'Disconnected'\n  });\n}//# sourceURL=webpack-internal:///7343\n");

}),

27752:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useAMTDevices\": function() { return /* binding */ useAMTDevices; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/hostmanagement/open-amt/open-amt.service */ 76827);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n\n\n\n\nfunction useAMTDevices(environmentId) {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_1__.useQuery)(['amt_devices', environmentId], function () {\n    return (0,_portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_2__.getDevices)(environmentId);\n  }),\n      isLoading = _useQuery.isLoading,\n      data = _useQuery.data,\n      isError = _useQuery.isError,\n      error = _useQuery.error;\n\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n    if (isError) {\n      _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_3__.error('Failure', error, 'Failed retrieving AMT devices');\n    }\n  }, [isError, error]);\n  var devices = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return data || [];\n  }, [data]);\n  return {\n    isLoading: isLoading,\n    devices: devices,\n    error: isError ? error : undefined\n  };\n}//# sourceURL=webpack-internal:///27752\n");

}),

88731:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeDevicesDatatable\": function() { return /* binding */ EdgeDevicesDatatable; }\n/* harmony export */ });\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/groupBy */ 86103);\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ 15556);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var _edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_AMTDevicesDatatable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/edge/EdgeDevices/EdgeDevicesView/AMTDevicesDatatable/AMTDevicesDatatable */ 42616);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_filter_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/datatables/filter-types */ 35138);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/datatables/ColumnVisibilityMenu */ 2294);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/datatables/useRowSelect */ 89996);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/datatables/SelectedRowsCount */ 38276);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _EdgeDevicesDatatableActions__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./EdgeDevicesDatatableActions */ 51998);\n/* harmony import */ var _EdgeDevicesDatatableSettings__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./EdgeDevicesDatatableSettings */ 10736);\n/* harmony import */ var _columns_RowContext__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./columns/RowContext */ 23391);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./columns */ 5313);\n/* harmony import */ var _EdgeDevicesDatatable_module_css__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./EdgeDevicesDatatable.module.css */ 21110);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EdgeDevicesDatatable(_ref) {\n  var isFdoEnabled = _ref.isFdoEnabled,\n      isOpenAmtEnabled = _ref.isOpenAmtEnabled,\n      showWaitingRoomLink = _ref.showWaitingRoomLink,\n      mpsServer = _ref.mpsServer,\n      dataset = _ref.dataset,\n      onChangeSearch = _ref.onChangeSearch,\n      search = _ref.search,\n      groups = _ref.groups,\n      setLoadingMessage = _ref.setLoadingMessage,\n      pagination = _ref.pagination,\n      onChangePagination = _ref.onChangePagination,\n      totalCount = _ref.totalCount;\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_18__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_28__.useColumns)();\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_13__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: dataset,\n    filterTypes: {\n      multiple: _datatables_filter_types__WEBPACK_IMPORTED_MODULE_17__.multiple\n    },\n    initialState: {\n      hiddenColumns: settings.hiddenColumns,\n      sortBy: [settings.sortBy]\n    },\n    isRowSelectable: function isRowSelectable() {\n      return true;\n    },\n    autoResetExpanded: false,\n    autoResetSelectedRows: false,\n    getRowId: function getRowId(originalRow) {\n      return originalRow.Id.toString();\n    },\n    selectColumnWidth: 5\n  }, react_table__WEBPACK_IMPORTED_MODULE_13__.useFilters, react_table__WEBPACK_IMPORTED_MODULE_13__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_13__.useExpanded, _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_21__.useRowSelect, _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_31__.useRowSelectColumn),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      rows = _useTable.rows,\n      prepareRow = _useTable.prepareRow,\n      selectedFlatRows = _useTable.selectedFlatRows,\n      allColumns = _useTable.allColumns,\n      setHiddenColumns = _useTable.setHiddenColumns;\n\n  var columnsToHide = allColumns.filter(function (colInstance) {\n    var columnDef = columns.find(function (c) {\n      return c.id === colInstance.id;\n    });\n    return columnDef === null || columnDef === void 0 ? void 0 : columnDef.canHide;\n  });\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  var someDeviceHasAMTActivated = dataset.some(function (environment) {\n    return environment.AMTDeviceGUID && environment.AMTDeviceGUID !== '';\n  });\n\n  var groupsById = lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(groups, 'Id');\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableTitle, {\n          icon: \"box\",\n          featherIcon: true,\n          label: \"Edge Devices\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_20__.SearchBar, {\n            value: search,\n            onChange: handleSearchBarChange\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableActions, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_EdgeDevicesDatatableActions__WEBPACK_IMPORTED_MODULE_25__.EdgeDevicesDatatableActions, {\n              selectedItems: selectedFlatRows.map(function (row) {\n                return row.original;\n              }),\n              isFDOEnabled: isFdoEnabled,\n              isOpenAMTEnabled: isOpenAmtEnabled,\n              setLoadingMessage: setLoadingMessage,\n              showWaitingRoomLink: showWaitingRoomLink\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableTitleActions, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_19__.ColumnVisibilityMenu, {\n              columns: columnsToHide,\n              onChange: handleChangeColumnsVisibility,\n              value: settings.hiddenColumns\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableSettingsMenu, {\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_EdgeDevicesDatatableSettings__WEBPACK_IMPORTED_MODULE_26__.EdgeDevicesDatatableSettings, {})\n            })]\n          })]\n        }), isOpenAmtEnabled && someDeviceHasAMTActivated && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"div\", {\n          className: _EdgeDevicesDatatable_module_css__WEBPACK_IMPORTED_MODULE_29__[\"default\"].kvmTip,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_24__.TextTip, {\n            color: \"blue\",\n            children: [\"For the KVM function to work you need to have the MPS server added to your trusted site list, browse to this\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"a\", {\n              href: \"https://\".concat(mpsServer),\n              target: \"_blank\",\n              rel: \"noreferrer\",\n              className: \"space-right\",\n              children: \"site\"\n            }), \"and add to your trusted site list\"]\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table, {\n          className: tableProps.className,\n          role: tableProps.role,\n          style: tableProps.style,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"thead\", {\n            children: headerGroups.map(function (headerGroup) {\n              var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                  key = _headerGroup$getHeade.key,\n                  className = _headerGroup$getHeade.className,\n                  role = _headerGroup$getHeade.role,\n                  style = _headerGroup$getHeade.style;\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableHeaderRow, {\n                className: className,\n                role: role,\n                style: style,\n                headers: headerGroup.headers,\n                onSortChange: handleSortChange\n              }, key);\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"tbody\", {\n            className: tbodyProps.className,\n            role: tbodyProps.role,\n            style: tbodyProps.style,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Content, {\n              prepareRow: prepareRow,\n              rows: rows,\n              renderRow: function renderRow(row, _ref2) {\n                var _group$;\n\n                var key = _ref2.key,\n                    className = _ref2.className,\n                    role = _ref2.role,\n                    style = _ref2.style;\n                var group = groupsById[row.original.GroupId];\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_columns_RowContext__WEBPACK_IMPORTED_MODULE_27__.RowProvider, {\n                  context: {\n                    isOpenAmtEnabled: isOpenAmtEnabled,\n                    groupName: (_group$ = group[0]) === null || _group$ === void 0 ? void 0 : _group$.Name\n                  },\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.TableRow, {\n                    cells: row.cells,\n                    className: className,\n                    role: role,\n                    style: style\n                  }, key), row.isExpanded && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(\"tr\", {\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"td\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"td\", {\n                      colSpan: row.cells.length - 1,\n                      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_edge_EdgeDevices_EdgeDevicesView_AMTDevicesDatatable_AMTDevicesDatatable__WEBPACK_IMPORTED_MODULE_14__.AMTDevicesDatatable, {\n                        environmentId: row.original.Id\n                      })\n                    })]\n                  })]\n                }, key);\n              }\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_22__.TableFooter, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_23__.SelectedRowsCount, {\n            value: selectedFlatRows.length\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_15__.PaginationControls, {\n            isPageInputVisible: true,\n            pageLimit: pagination.pageLimit,\n            page: pagination.page,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p);\n            },\n            totalCount: totalCount,\n            onPageLimitChange: handlePageSizeChange\n          })]\n        })]\n      })\n    })\n  });\n\n  function gotoPage(pageIndex) {\n    onChangePagination({\n      page: pageIndex\n    });\n  }\n\n  function setPageSize(pageSize) {\n    onChangePagination({\n      pageLimit: pageSize\n    });\n  }\n\n  function handlePageSizeChange(pageSize) {\n    setPageSize(pageSize);\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        pageSize: pageSize\n      });\n    });\n  }\n\n  function handleChangeColumnsVisibility(hiddenColumns) {\n    setHiddenColumns(hiddenColumns);\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        hiddenColumns: hiddenColumns\n      });\n    });\n  }\n\n  function handleSearchBarChange(value) {\n    onChangeSearch(value);\n  }\n\n  function handleSortChange(id, desc) {\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        sortBy: {\n          id: id,\n          desc: desc\n        }\n      });\n    });\n  }\n}//# sourceURL=webpack-internal:///88731\n");

}),

51998:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeDevicesDatatableActions\": function() { return /* binding */ EdgeDevicesDatatableActions; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/services/modal.service/prompt */ 77918);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/hostmanagement/open-amt/open-amt.service */ 76827);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\nvar DeployType;\n\n(function (DeployType) {\n  DeployType[\"FDO\"] = \"FDO\";\n  DeployType[\"MANUAL\"] = \"MANUAL\";\n})(DeployType || (DeployType = {}));\n\nfunction EdgeDevicesDatatableActions(_ref) {\n  var selectedItems = _ref.selectedItems,\n      isOpenAMTEnabled = _ref.isOpenAMTEnabled,\n      isFDOEnabled = _ref.isFDOEnabled,\n      setLoadingMessage = _ref.setLoadingMessage,\n      showWaitingRoomLink = _ref.showWaitingRoomLink;\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_7__.useRouter)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n    className: \"actionBar\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_13__.Button, {\n      disabled: selectedItems.length < 1,\n      color: \"danger\",\n      onClick: function onClick() {\n        return onDeleteEdgeDeviceClick();\n      },\n      icon: \"trash-2\",\n      featherIcon: true,\n      children: \"Remove\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_13__.Button, {\n      onClick: function onClick() {\n        return onAddNewDeviceClick();\n      },\n      icon: \"plus\",\n      featherIcon: true,\n      children: \"Add Device\"\n    }), isOpenAMTEnabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_13__.Button, {\n      disabled: selectedItems.length !== 1,\n      onClick: function onClick() {\n        return onAssociateOpenAMTClick(selectedItems);\n      },\n      icon: \"link\",\n      featherIcon: true,\n      children: \"Associate with OpenAMT\"\n    }), showWaitingRoomLink && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_14__.Link, {\n      to: \"edge.devices.waiting-room\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_13__.Button, {\n        children: \"Waiting Room\"\n      })\n    })]\n  });\n\n  function onDeleteEdgeDeviceClick() {\n    return _onDeleteEdgeDeviceClick.apply(this, arguments);\n  }\n\n  function _onDeleteEdgeDeviceClick() {\n    _onDeleteEdgeDeviceClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_8__.confirmDestructiveAsync)({\n                title: '你确定吗？',\n                message: '这个动作将删除与您的环境相关的所有配置。继续吗？',\n                buttons: {\n                  confirm: {\n                    label: '删除',\n                    className: 'btn-danger'\n                  }\n                }\n              });\n\n            case 2:\n              confirmed = _context2.sent;\n\n              if (confirmed) {\n                _context2.next = 5;\n                break;\n              }\n\n              return _context2.abrupt(\"return\");\n\n            case 5:\n              _context2.next = 7;\n              return Promise.all(selectedItems.map( /*#__PURE__*/function () {\n                var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environment) {\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) {\n                      switch (_context.prev = _context.next) {\n                        case 0:\n                          _context.prev = 0;\n                          _context.next = 3;\n                          return (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_12__.deleteEndpoint)(environment.Id);\n\n                        case 3:\n                          _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_10__.success('环境成功删除', environment.Name);\n                          _context.next = 9;\n                          break;\n\n                        case 6:\n                          _context.prev = 6;\n                          _context.t0 = _context[\"catch\"](0);\n                          _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_10__.error('Failure', _context.t0, '无法删除环境');\n\n                        case 9:\n                        case \"end\":\n                          return _context.stop();\n                      }\n                    }\n                  }, _callee, null, [[0, 6]]);\n                }));\n\n                return function (_x2) {\n                  return _ref2.apply(this, arguments);\n                };\n              }()));\n\n            case 7:\n              _context2.next = 9;\n              return router.stateService.reload();\n\n            case 9:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2);\n    }));\n    return _onDeleteEdgeDeviceClick.apply(this, arguments);\n  }\n\n  function onAddNewDeviceClick() {\n    return _onAddNewDeviceClick.apply(this, arguments);\n  }\n\n  function _onAddNewDeviceClick() {\n    _onAddNewDeviceClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n      var result;\n      return regeneratorRuntime.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              if (!isFDOEnabled) {\n                _context3.next = 6;\n                break;\n              }\n\n              _context3.next = 3;\n              return (0,_portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_9__.promptAsync)({\n                title: '您希望如何添加边缘设备？',\n                inputType: 'radio',\n                inputOptions: [{\n                  text: 'Provision bare-metal using Intel FDO',\n                  value: DeployType.FDO\n                }, {\n                  text: '手动部署代理',\n                  value: DeployType.MANUAL\n                }],\n                buttons: {\n                  confirm: {\n                    label: '确认',\n                    className: 'btn-primary'\n                  }\n                }\n              });\n\n            case 3:\n              _context3.t0 = _context3.sent;\n              _context3.next = 7;\n              break;\n\n            case 6:\n              _context3.t0 = DeployType.MANUAL;\n\n            case 7:\n              result = _context3.t0;\n              _context3.t1 = result;\n              _context3.next = _context3.t1 === DeployType.FDO ? 11 : _context3.t1 === DeployType.MANUAL ? 13 : 15;\n              break;\n\n            case 11:\n              router.stateService.go('portainer.endpoints.importDevice');\n              return _context3.abrupt(\"break\", 16);\n\n            case 13:\n              router.stateService.go('portainer.wizard.endpoints', {\n                edgeDevice: true\n              });\n              return _context3.abrupt(\"break\", 16);\n\n            case 15:\n              return _context3.abrupt(\"break\", 16);\n\n            case 16:\n            case \"end\":\n              return _context3.stop();\n          }\n        }\n      }, _callee3);\n    }));\n    return _onAddNewDeviceClick.apply(this, arguments);\n  }\n\n  function onAssociateOpenAMTClick(_x) {\n    return _onAssociateOpenAMTClick.apply(this, arguments);\n  }\n\n  function _onAssociateOpenAMTClick() {\n    _onAssociateOpenAMTClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(selectedItems) {\n      var selectedEnvironment, confirmed;\n      return regeneratorRuntime.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n              selectedEnvironment = selectedItems[0];\n              _context4.next = 3;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_8__.confirmAsync)({\n                title: '',\n                message: \"\\u5C06 \".concat(selectedEnvironment.Name, \" \\u4E0EOpenAMT\\u5173\\u8054\"),\n                buttons: {\n                  cancel: {\n                    label: '取消',\n                    className: 'btn-default'\n                  },\n                  confirm: {\n                    label: '确认',\n                    className: 'btn-primary'\n                  }\n                }\n              });\n\n            case 3:\n              confirmed = _context4.sent;\n\n              if (confirmed) {\n                _context4.next = 6;\n                break;\n              }\n\n              return _context4.abrupt(\"return\");\n\n            case 6:\n              _context4.prev = 6;\n              setLoadingMessage('在所选设备上激活活动管理技术...');\n              _context4.next = 10;\n              return (0,_portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_11__.activateDevice)(selectedEnvironment.Id);\n\n            case 10:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_10__.success('Successfully associated with OpenAMT', selectedEnvironment.Name);\n              _context4.next = 16;\n              break;\n\n            case 13:\n              _context4.prev = 13;\n              _context4.t0 = _context4[\"catch\"](6);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_10__.error('Failure', _context4.t0, 'Unable to associate with OpenAMT');\n\n            case 16:\n              _context4.prev = 16;\n              setLoadingMessage('');\n              return _context4.finish(16);\n\n            case 19:\n            case \"end\":\n              return _context4.stop();\n          }\n        }\n      }, _callee4, null, [[6, 13, 16, 19]]);\n    }));\n    return _onAssociateOpenAMTClick.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///51998\n");

}),

63343:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeDevicesDatatableContainer\": function() { return /* binding */ EdgeDevicesDatatableContainer; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ 19992);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ 15556);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/hooks/useDebounce */ 73903);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _EdgeDevicesDatatable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./EdgeDevicesDatatable */ 88731);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EdgeDevicesDatatableContainer(_ref) {\n  var props = Object.assign({}, _ref);\n  var defaultSettings = {\n    autoRefreshRate: 0,\n    hiddenQuickActions: [],\n    hiddenColumns: [],\n    pageSize: 10,\n    sortBy: {\n      id: 'state',\n      desc: false\n    }\n  };\n  var storageKey = 'edgeDevices';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_23__.TableSettingsProvider, {\n    defaults: defaultSettings,\n    storageKey: storageKey,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(Loader, {\n      storageKey: storageKey,\n      children: function children(_ref2) {\n        var environments = _ref2.environments,\n            pagination = _ref2.pagination,\n            totalCount = _ref2.totalCount,\n            setPagination = _ref2.setPagination,\n            search = _ref2.search,\n            setSearch = _ref2.setSearch;\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_EdgeDevicesDatatable__WEBPACK_IMPORTED_MODULE_24__.EdgeDevicesDatatable // eslint-disable-next-line react/jsx-props-no-spreading\n        , _objectSpread(_objectSpread({}, props), {}, {\n          storageKey: storageKey,\n          dataset: environments,\n          pagination: pagination,\n          onChangePagination: setPagination,\n          totalCount: totalCount,\n          search: search,\n          onChangeSearch: setSearch\n        }));\n      }\n    })\n  });\n}\n\nfunction Loader(_ref3) {\n  var children = _ref3.children,\n      storageKey = _ref3.storageKey;\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_23__.useTableSettings)(),\n      settings = _useTableSettings.settings;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)({\n    pageLimit: settings.pageSize,\n    page: 1\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      pagination = _useState2[0],\n      setPagination = _useState2[1];\n\n  var _useSearchBarState = (0,_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_22__.useSearchBarState)(storageKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      search = _useSearchBarState2[0],\n      setSearch = _useSearchBarState2[1];\n\n  var debouncedSearchValue = (0,_portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_21__.useDebounce)(search);\n\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_19__.useEnvironmentList)(_objectSpread({\n    edgeDevice: true,\n    search: debouncedSearchValue,\n    types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_20__.EdgeTypes,\n    excludeSnapshots: true\n  }, pagination), settings.autoRefreshRate * 1000),\n      environments = _useEnvironmentList.environments,\n      isLoading = _useEnvironmentList.isLoading,\n      totalCount = _useEnvironmentList.totalCount;\n\n  if (isLoading) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.Fragment, {\n    children: children({\n      environments: environments,\n      totalCount: totalCount,\n      pagination: pagination,\n      setPagination: handleSetPagination,\n      search: search,\n      setSearch: setSearch\n    })\n  });\n\n  function handleSetPagination(value) {\n    setPagination(function (prev) {\n      return _objectSpread(_objectSpread({}, prev), value);\n    });\n  }\n}//# sourceURL=webpack-internal:///63343\n");

}),

10736:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeDevicesDatatableSettings\": function() { return /* binding */ EdgeDevicesDatatableSettings; }\n/* harmony export */ });\n/* harmony import */ var _datatables_TableSettingsMenuAutoRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/TableSettingsMenuAutoRefresh */ 96082);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction EdgeDevicesDatatableSettings() {\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_1__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_datatables_TableSettingsMenuAutoRefresh__WEBPACK_IMPORTED_MODULE_0__.TableSettingsMenuAutoRefresh, {\n    value: settings.autoRefreshRate,\n    onChange: handleRefreshRateChange\n  });\n\n  function handleRefreshRateChange(autoRefreshRate) {\n    setTableSettings({\n      autoRefreshRate: autoRefreshRate\n    });\n  }\n}//# sourceURL=webpack-internal:///10736\n");

}),

23391:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RowProvider\": function() { return /* binding */ RowProvider; },\n/* harmony export */   \"useRowContext\": function() { return /* binding */ useRowContext; }\n/* harmony export */ });\n/* harmony import */ var _datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/RowContext */ 9924);\n\n\nvar _createRowContext = (0,_datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__.createRowContext)(),\n    RowProvider = _createRowContext.RowProvider,\n    useRowContext = _createRowContext.useRowContext;\n\n//# sourceURL=webpack-internal:///23391\n");

}),

86807:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"actions\": function() { return /* binding */ actions; },\n/* harmony export */   \"ActionsCell\": function() { return /* binding */ ActionsCell; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _datatables_ActionsMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/datatables/ActionsMenu */ 65444);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\nvar actions = {\n  Header: 'Actions',\n  accessor: function accessor() {\n    return 'actions';\n  },\n  id: 'actions',\n  disableFilters: true,\n  canHide: true,\n  disableResizing: true,\n  width: '5px',\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  },\n  Cell: ActionsCell\n};\nfunction ActionsCell(_ref) {\n  var environment = _ref.row.original;\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n  var environmentRoute = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_6__.getRoute)(environment);\n  var browseLinkProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_3__.useSref)(environmentRoute, {\n    id: environment.Id,\n    endpointId: environment.Id\n  });\n  var showRefreshSnapshot = false; // remove and show MenuItem when feature is available\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_datatables_ActionsMenu__WEBPACK_IMPORTED_MODULE_7__.ActionsMenu, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_9__.MenuLink, {\n      href: browseLinkProps.href,\n      onClick: browseLinkProps.onClick,\n      children: \"Browse\"\n    }), showRefreshSnapshot && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_9__.MenuItem, {\n      hidden: true,\n      onSelect: function onSelect() {\n        return handleRefreshSnapshotClick();\n      },\n      children: \"Refresh Snapshot\"\n    })]\n  });\n\n  function handleRefreshSnapshotClick() {\n    return _handleRefreshSnapshotClick.apply(this, arguments);\n  }\n\n  function _handleRefreshSnapshotClick() {\n    _handleRefreshSnapshotClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              _context.next = 3;\n              return (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__.snapshotEndpoint)(environment.Id);\n\n            case 3:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.success('Success', 'Environment updated');\n              _context.next = 9;\n              break;\n\n            case 6:\n              _context.prev = 6;\n              _context.t0 = _context[\"catch\"](0);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.error('Failure', _context.t0, 'An error occurred during environment snapshot');\n\n            case 9:\n              _context.prev = 9;\n              _context.next = 12;\n              return router.stateService.reload();\n\n            case 12:\n              return _context.finish(9);\n\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[0, 6, 9, 13]]);\n    }));\n    return _handleRefreshSnapshotClick.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///86807\n");

}),

43505:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"group\": function() { return /* binding */ group; }\n/* harmony export */ });\n/* harmony import */ var _datatables_Filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/Filter */ 33513);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RowContext */ 23391);\n\n\nvar group = {\n  Header: 'Group',\n  accessor: function accessor(row) {\n    return row.GroupId;\n  },\n  Cell: GroupCell,\n  id: 'groupName',\n  Filter: _datatables_Filter__WEBPACK_IMPORTED_MODULE_0__.DefaultFilter,\n  canHide: true\n};\n\nfunction GroupCell() {\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_1__.useRowContext)(),\n      groupName = _useRowContext.groupName;\n\n  return groupName;\n}//# sourceURL=webpack-internal:///43505\n");

}),

34535:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"heartbeat\": function() { return /* binding */ heartbeat; },\n/* harmony export */   \"StatusCell\": function() { return /* binding */ StatusCell; }\n/* harmony export */ });\n/* harmony import */ var _portainer_home_EnvironmentList_EnvironmentItem_EdgeIndicator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/home/EnvironmentList/EnvironmentItem/EdgeIndicator */ 63504);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar heartbeat = {\n  Header: 'Heartbeat',\n  accessor: 'Status',\n  id: 'status',\n  Cell: StatusCell,\n  disableFilters: true,\n  canHide: true\n};\nfunction StatusCell(_ref) {\n  var environment = _ref.row.original;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_portainer_home_EnvironmentList_EnvironmentItem_EdgeIndicator__WEBPACK_IMPORTED_MODULE_0__.EdgeIndicator, {\n    environment: environment\n  });\n}//# sourceURL=webpack-internal:///34535\n");

}),

5313:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./name */ 61891);\n/* harmony import */ var _heartbeat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./heartbeat */ 34535);\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ 43505);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions */ 86807);\n\n\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_name__WEBPACK_IMPORTED_MODULE_1__.name, _heartbeat__WEBPACK_IMPORTED_MODULE_2__.heartbeat, _group__WEBPACK_IMPORTED_MODULE_3__.group, _actions__WEBPACK_IMPORTED_MODULE_4__.actions];\n  }, []);\n}//# sourceURL=webpack-internal:///5313\n");

}),

61891:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _datatables_ExpandingCell__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/datatables/ExpandingCell */ 61963);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RowContext */ 23391);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: function accessor(row) {\n    return row.Name;\n  },\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      row = _ref.row;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_2__.useRowContext)(),\n      isOpenAmtEnabled = _useRowContext.isOpenAmtEnabled;\n\n  var showExpandedRow = !!(isOpenAmtEnabled && row.original.AMTDeviceGUID && row.original.AMTDeviceGUID.length > 0);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_datatables_ExpandingCell__WEBPACK_IMPORTED_MODULE_1__.ExpandingCell, {\n    row: row,\n    showExpandArrow: showExpandedRow,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_0__.Link, {\n      to: \"portainer.endpoints.endpoint\",\n      params: {\n        id: row.original.Id\n      },\n      title: name,\n      children: name\n    })\n  });\n}//# sourceURL=webpack-internal:///61891\n");

}),

4233:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeDevicesView\": function() { return /* binding */ EdgeDevicesView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environment-groups/queries */ 43145);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _ViewLoading__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/ViewLoading */ 83537);\n/* harmony import */ var _EdgeDevicesDatatable_EdgeDevicesDatatableContainer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./EdgeDevicesDatatable/EdgeDevicesDatatableContainer */ 63343);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\nfunction EdgeDevicesView() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(''),\n      _useState2 = _slicedToArray(_useState, 2),\n      loadingMessage = _useState2[0],\n      setLoadingMessage = _useState2[1];\n\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_12__.useSettings)();\n  var groupsQuery = (0,_portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_13__.useGroups)();\n\n  if (!settingsQuery.data || !groupsQuery.data) {\n    return null;\n  }\n\n  var settings = settingsQuery.data;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_14__.PageHeader, {\n      title: \"Edge Devices\",\n      reload: true,\n      breadcrumbs: [{\n        label: 'EdgeDevices'\n      }]\n    }), loadingMessage ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_ViewLoading__WEBPACK_IMPORTED_MODULE_15__.ViewLoading, {\n      message: loadingMessage\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_EdgeDevicesDatatable_EdgeDevicesDatatableContainer__WEBPACK_IMPORTED_MODULE_16__.EdgeDevicesDatatableContainer, {\n      setLoadingMessage: setLoadingMessage,\n      isFdoEnabled: settings.EnableEdgeComputeFeatures && settings.fdoConfiguration.enabled,\n      showWaitingRoomLink:  false && 0,\n      isOpenAmtEnabled: settings.EnableEdgeComputeFeatures && settings.openAMTConfiguration.enabled,\n      mpsServer: settings.openAMTConfiguration.mpsServer,\n      groups: groupsQuery.data,\n      storageKey: \"edgeDevices\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///4233\n");

}),

90144:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EdgeDevicesView": function() { return /* reexport safe */ _EdgeDevicesView__WEBPACK_IMPORTED_MODULE_0__.EdgeDevicesView; }
/* harmony export */ });
/* harmony import */ var _EdgeDevicesView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeDevicesView */ 4233);


}),

93586:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DataTable\": function() { return /* binding */ DataTable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/datatables/SelectedRowsCount */ 38276);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../queries */ 40874);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar columns = [{\n  Header: '名称',\n  accessor: function accessor(row) {\n    return row.Name;\n  },\n  id: 'name',\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n}, {\n  Header: 'Edge ID',\n  accessor: function accessor(row) {\n    return row.EdgeID;\n  },\n  id: 'edge-id',\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n}];\nfunction DataTable(_ref) {\n  var devices = _ref.devices,\n      storageKey = _ref.storageKey,\n      isLoading = _ref.isLoading,\n      totalCount = _ref.totalCount;\n  var associateMutation = (0,_queries__WEBPACK_IMPORTED_MODULE_21__.useAssociateDeviceMutation)();\n\n  var _useSearchBarState = (0,_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_17__.useSearchBarState)(storageKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      searchBarValue = _useSearchBarState2[0],\n      setSearchBarValue = _useSearchBarState2[1];\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_20__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_13__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: devices,\n    initialState: {\n      pageSize: settings.pageSize || 10,\n      sortBy: [settings.sortBy],\n      globalFilter: searchBarValue\n    },\n    isRowSelectable: function isRowSelectable() {\n      return true;\n    },\n    autoResetSelectedRows: false,\n    getRowId: function getRowId(originalRow) {\n      return originalRow.Id.toString();\n    },\n    selectColumnWidth: 5\n  }, react_table__WEBPACK_IMPORTED_MODULE_13__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_13__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_13__.usePagination, react_table__WEBPACK_IMPORTED_MODULE_13__.useRowSelect, _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_23__.useRowSelectColumn),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      selectedFlatRows = _useTable.selectedFlatRows,\n      gotoPage = _useTable.gotoPage,\n      setPageSize = _useTable.setPageSize,\n      setGlobalFilter = _useTable.setGlobalFilter,\n      _useTable$state = _useTable.state,\n      pageIndex = _useTable$state.pageIndex,\n      pageSize = _useTable$state.pageSize;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Container, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Title, {\n          label: \"Edge Devices Waiting Room\",\n          icon: \"\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_17__.SearchBar, {\n            onChange: handleSearchBarChange,\n            value: searchBarValue\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Actions, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_15__.Button, {\n              onClick: function onClick() {\n                return handleAssociateDevice(selectedFlatRows.map(function (r) {\n                  return r.original;\n                }));\n              },\n              disabled: selectedFlatRows.length === 0,\n              children: \"Associate Device\"\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table, {\n          className: tableProps.className,\n          role: tableProps.role,\n          style: tableProps.style,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"thead\", {\n            children: headerGroups.map(function (headerGroup) {\n              var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                  key = _headerGroup$getHeade.key,\n                  className = _headerGroup$getHeade.className,\n                  role = _headerGroup$getHeade.role,\n                  style = _headerGroup$getHeade.style;\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.HeaderRow, {\n                className: className,\n                role: role,\n                style: style,\n                headers: headerGroup.headers,\n                onSortChange: handleSortChange\n              }, key);\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"tbody\", {\n            className: tbodyProps.className,\n            role: tbodyProps.role,\n            style: tbodyProps.style,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Content, {\n              emptyContent: \"No Edge Devices found\",\n              prepareRow: prepareRow,\n              rows: page,\n              isLoading: isLoading,\n              renderRow: function renderRow(row, _ref2) {\n                var key = _ref2.key,\n                    className = _ref2.className,\n                    role = _ref2.role,\n                    style = _ref2.style;\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Row, {\n                  cells: row.cells,\n                  className: className,\n                  role: role,\n                  style: style\n                }, key);\n              }\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_16__.Table.Footer, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_18__.SelectedRowsCount, {\n            value: selectedFlatRows.length\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_19__.PaginationControls, {\n            showAll: true,\n            pageLimit: pageSize,\n            page: pageIndex + 1,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p - 1);\n            },\n            totalCount: totalCount,\n            onPageLimitChange: handlePageLimitChange\n          })]\n        })]\n      })\n    })\n  });\n\n  function handleSortChange(colId, desc) {\n    setTableSettings({\n      sortBy: {\n        id: colId,\n        desc: desc\n      }\n    });\n  }\n\n  function handlePageLimitChange(pageSize) {\n    setPageSize(pageSize);\n    setTableSettings({\n      pageSize: pageSize\n    });\n  }\n\n  function handleSearchBarChange(value) {\n    setGlobalFilter(value);\n    setSearchBarValue(value);\n  }\n\n  function handleAssociateDevice(devices) {\n    associateMutation.mutate(devices.map(function (d) {\n      return d.Id;\n    }), {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_14__.notifySuccess)('Success', 'Edge devices associated successfully');\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///93586\n");

}),

39470:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WaitingRoomView\": function() { return /* binding */ WaitingRoomView; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/InformationPanel */ 83302);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Datatable_Datatable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Datatable/Datatable */ 93586);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction WaitingRoomView() {\n  var storageKey = 'edge-devices-waiting-room';\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useRouter)();\n\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_1__.useEnvironmentList)({\n    edgeDevice: true,\n    edgeDeviceUntrusted: true,\n    excludeSnapshots: true,\n    types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_2__.EdgeTypes\n  }),\n      environments = _useEnvironmentList.environments,\n      isLoading = _useEnvironmentList.isLoading,\n      totalCount = _useEnvironmentList.totalCount;\n\n  if (true) {\n    router.stateService.go('edge.devices');\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_6__.PageHeader, {\n      title: \"Waiting Room\",\n      breadcrumbs: [{\n        label: 'Edge Devices',\n        link: 'edge.devices'\n      }, {\n        label: 'Waiting Room'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_InformationPanel__WEBPACK_IMPORTED_MODULE_3__.InformationPanel, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_4__.TextTip, {\n        color: \"blue\",\n        children: \"Only environments generated from the AEEC script will appear here, manually added environments and edge devices will bypass the waiting room.\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_5__.TableSettingsProvider, {\n      defaults: {\n        pageSize: 10,\n        sortBy: {\n          desc: false,\n          id: 'name'\n        }\n      },\n      storageKey: storageKey,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Datatable_Datatable__WEBPACK_IMPORTED_MODULE_7__.DataTable, {\n        devices: environments,\n        totalCount: totalCount,\n        isLoading: isLoading,\n        storageKey: storageKey\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///39470\n");

}),

35799:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "WaitingRoomView": function() { return /* reexport safe */ _WaitingRoomView__WEBPACK_IMPORTED_MODULE_0__.WaitingRoomView; }
/* harmony export */ });
/* harmony import */ var _WaitingRoomView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WaitingRoomView */ 39470);


}),

40874:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useAssociateDeviceMutation\": function() { return /* binding */ useAssociateDeviceMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/helpers/promise-utils */ 19990);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nfunction useAssociateDeviceMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useMutation)(function (ids) {\n    return (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_6__.promiseSequence)(ids.map(function (id) {\n      return function () {\n        return associateDevice(id);\n      };\n    }));\n  }, {\n    onSuccess: function onSuccess() {\n      queryClient.invalidateQueries(['environments']);\n    },\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Failed to associate devices'\n      }\n    }\n  });\n}\n\nfunction associateDevice(_x) {\n  return _associateDevice.apply(this, arguments);\n}\n\nfunction _associateDevice() {\n  _associateDevice = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__[\"default\"].post(\"/endpoints/\".concat(environmentId, \"/edge/trust\"));\n\n          case 3:\n            _context.next = 8;\n            break;\n\n          case 5:\n            _context.prev = 5;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__.parseAxiosError)(_context.t0, 'Failed to associate device');\n\n          case 8:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 5]]);\n  }));\n  return _associateDevice.apply(this, arguments);\n}//# sourceURL=webpack-internal:///40874\n");

}),

64858:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkinIntervalOptions\": function() { return /* binding */ checkinIntervalOptions; },\n/* harmony export */   \"EdgeCheckinIntervalField\": function() { return /* binding */ EdgeCheckinIntervalField; },\n/* harmony export */   \"EdgeCheckinIntervalFieldAngular\": function() { return /* binding */ EdgeCheckinIntervalFieldAngular; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar checkinIntervalOptions = [{\n  label: '使用默认间隔',\n  value: 0\n}, {\n  label: '5 秒',\n  value: 5\n}, {\n  label: '10 秒',\n  value: 10\n}, {\n  label: '30 秒',\n  value: 30\n}, {\n  label: '5 分钟',\n  value: 300\n}, {\n  label: '1 小时',\n  value: 3600\n}, {\n  label: '1 天',\n  value: 86400\n}];\nfunction EdgeCheckinIntervalField(_ref) {\n  var value = _ref.value,\n      readonly = _ref.readonly,\n      onChange = _ref.onChange,\n      _ref$isDefaultHidden = _ref.isDefaultHidden,\n      isDefaultHidden = _ref$isDefaultHidden === void 0 ? false : _ref$isDefaultHidden,\n      _ref$label = _ref.label,\n      label = _ref$label === void 0 ? '轮询频率' : _ref$label,\n      _ref$tooltip = _ref.tooltip,\n      tooltip = _ref$tooltip === void 0 ? '该Edge代理用于与Portainer实例签到的时间间隔。影响Edge环境管理和Edge计算功能。' : _ref$tooltip;\n  var options = useOptions(isDefaultHidden);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__.FormControl, {\n    inputId: \"edge_checkin\",\n    label: label,\n    tooltip: tooltip,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_20__.Select, {\n      value: value,\n      onChange: function (_onChange) {\n        function onChange(_x) {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function (e) {\n        onChange(parseInt(e.currentTarget.value, 10));\n      }),\n      options: options,\n      disabled: readonly\n    })\n  });\n}\nvar EdgeCheckinIntervalFieldAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_16__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_18__.withReactQuery)(EdgeCheckinIntervalField), ['value', 'onChange', 'isDefaultHidden', 'tooltip', 'label', 'readonly']);\n\nfunction useOptions(isDefaultHidden) {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(checkinIntervalOptions),\n      _useState2 = _slicedToArray(_useState, 2),\n      options = _useState2[0],\n      setOptions = _useState2[1];\n\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_17__.useSettings)(function (settings) {\n    return settings.EdgeAgentCheckinInterval;\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_15__.useEffect)(function () {\n    if (isDefaultHidden) {\n      setOptions(checkinIntervalOptions.filter(function (option) {\n        return option.value !== 0;\n      }));\n    }\n\n    if (!isDefaultHidden && typeof settingsQuery.data !== 'undefined') {\n      setOptions(function (options) {\n        var label = \"\".concat(settingsQuery.data, \" seconds\");\n        var option = options.find(function (o) {\n          return o.value === settingsQuery.data;\n        });\n\n        if (option) {\n          label = option.label;\n        }\n\n        return [{\n          value: 0,\n          label: \"\\u4F7F\\u7528\\u9ED8\\u8BA4\\u95F4\\u9694 (\".concat(label, \")\")\n        }].concat(_toConsumableArray(options.slice(1)));\n      });\n    }\n  }, [settingsQuery.data, setOptions, isDefaultHidden]);\n  return options;\n}//# sourceURL=webpack-internal:///64858\n");

}),

90547:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm */ 37665);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./EdgeCheckInIntervalField */ 64858);\n\n\n\n\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('app.edge.components', []).component('edgeScriptForm', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_4__.withReactQuery)(_react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_3__.EdgeScriptForm), ['edgeInfo', 'commands', 'isNomadTokenVisible'])).component('edgeCheckinIntervalField', _EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_5__.EdgeCheckinIntervalFieldAngular).name;//# sourceURL=webpack-internal:///90547\n");

}),

61379:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_edge_components_EdgeGroupsSelector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/edge/components/EdgeGroupsSelector */ 2471);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n\n\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.edge.react.components', []).component('edgeGroupsSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__.r2a)(_react_edge_components_EdgeGroupsSelector__WEBPACK_IMPORTED_MODULE_2__.EdgeGroupsSelector, ['items', 'onChange', 'value'])).name;//# sourceURL=webpack-internal:///61379\n");

}),

20654:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 61379);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 40193);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.edge.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///20654\n");

}),

40193:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _edge_EdgeDevices_EdgeDevicesView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/edge/EdgeDevices/EdgeDevicesView */ 90144);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n\n\n\n\n\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.edge.react.views', []).component('edgeDevicesView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_3__.withCurrentUser)(_edge_EdgeDevices_EdgeDevicesView__WEBPACK_IMPORTED_MODULE_2__.EdgeDevicesView))), [])).name;//# sourceURL=webpack-internal:///40193\n");

}),

34125:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! i18next */ 19131);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ 55478);\n/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next-browser-languagedetector */ 82185);\n/* harmony import */ var i18next_http_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next-http-backend */ 57904);\n\n\n\n\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].use(i18next_http_backend__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).use(i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).use(react_i18next__WEBPACK_IMPORTED_MODULE_3__.initReactI18next).init({\n  debug: true,\n  fallbackLng: 'en',\n  interpolation: {\n    escapeValue: false\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=webpack-internal:///34125\n");

}),

45082:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_kubernetes_cluster_ingressClass_IngressClassDatatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/kubernetes/cluster/ingressClass/IngressClassDatatable */ 513);\n/* harmony import */ var _react_kubernetes_cluster_RegistryAccessView_NamespacesSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/kubernetes/cluster/RegistryAccessView/NamespacesSelector */ 16784);\n/* harmony import */ var _react_kubernetes_cluster_ConfigureView_StorageAccessModeSelector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/kubernetes/cluster/ConfigureView/StorageAccessModeSelector */ 46170);\n/* harmony import */ var _react_kubernetes_namespaces_AccessView_NamespaceAccessUsersSelector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/kubernetes/namespaces/AccessView/NamespaceAccessUsersSelector */ 60881);\n/* harmony import */ var _react_kubernetes_namespaces_CreateView_CreateNamespaceRegistriesSelector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/kubernetes/namespaces/CreateView/CreateNamespaceRegistriesSelector */ 76309);\n\n\n\n\n\n\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes.react.components', []).component('ingressClassDatatable', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_kubernetes_cluster_ingressClass_IngressClassDatatable__WEBPACK_IMPORTED_MODULE_3__.IngressClassDatatable, ['onChangeControllers', 'description', 'ingressControllers', 'allowNoneIngressClass', 'isLoading', 'noIngressControllerLabel', 'view'])).component('namespacesSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_kubernetes_cluster_RegistryAccessView_NamespacesSelector__WEBPACK_IMPORTED_MODULE_4__.NamespacesSelector, ['dataCy', 'inputId', 'name', 'namespaces', 'onChange', 'placeholder', 'value'])).component('storageAccessModeSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_kubernetes_cluster_ConfigureView_StorageAccessModeSelector__WEBPACK_IMPORTED_MODULE_5__.StorageAccessModeSelector, ['inputId', 'onChange', 'options', 'value', 'storageClassName'])).component('namespaceAccessUsersSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_kubernetes_namespaces_AccessView_NamespaceAccessUsersSelector__WEBPACK_IMPORTED_MODULE_6__.NamespaceAccessUsersSelector, ['inputId', 'onChange', 'options', 'value', 'dataCy', 'placeholder', 'name'])).component('createNamespaceRegistriesSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_kubernetes_namespaces_CreateView_CreateNamespaceRegistriesSelector__WEBPACK_IMPORTED_MODULE_7__.CreateNamespaceRegistriesSelector, ['inputId', 'onChange', 'options', 'value'])).name;//# sourceURL=webpack-internal:///45082\n");

}),

25152:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 45082);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 45857);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///25152\n");

}),

45857:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _kubernetes_react_views_networks_ingresses_IngressDatatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/kubernetes/react/views/networks/ingresses/IngressDatatable */ 29808);\n/* harmony import */ var _kubernetes_react_views_networks_ingresses_CreateIngressView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/kubernetes/react/views/networks/ingresses/CreateIngressView */ 5820);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n\n\n\n\n\n\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes.react.views', []).component('kubernetesIngressesView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_7__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_5__.withCurrentUser)(_kubernetes_react_views_networks_ingresses_IngressDatatable__WEBPACK_IMPORTED_MODULE_3__.IngressesDatatableView))), [])).component('kubernetesIngressesCreateView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_7__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_5__.withCurrentUser)(_kubernetes_react_views_networks_ingresses_CreateIngressView__WEBPACK_IMPORTED_MODULE_4__.CreateIngressView))), [])).name;//# sourceURL=webpack-internal:///45857\n");

}),

53451:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateIngressView\": function() { return /* binding */ CreateIngressView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 49329);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ 76657);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! uuid */ 64001);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(uuid__WEBPACK_IMPORTED_MODULE_28__);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _react_kubernetes_configs_queries__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @/react/kubernetes/configs/queries */ 22839);\n/* harmony import */ var _react_kubernetes_namespaces_queries__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @/react/kubernetes/namespaces/queries */ 66487);\n/* harmony import */ var _kubernetes_react_views_networks_services_queries__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @/kubernetes/react/views/networks/services/queries */ 17087);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../queries */ 80555);\n/* harmony import */ var _IngressForm__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./IngressForm */ 29233);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./utils */ 85801);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CreateIngressView() {\n  var _ingressControllersRe2, _configResults$data;\n\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_29__.useEnvironmentId)();\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_27__.useCurrentStateAndParams)(),\n      params = _useCurrentStateAndPa.params;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_27__.useRouter)();\n  var isEdit = !!params.namespace;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)(params.namespace || ''),\n      _useState2 = _slicedToArray(_useState, 2),\n      namespace = _useState2[0],\n      setNamespace = _useState2[1];\n\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)({}),\n      _useState4 = _slicedToArray(_useState3, 2),\n      ingressRule = _useState4[0],\n      setIngressRule = _useState4[1];\n\n  var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)({}),\n      _useState6 = _slicedToArray(_useState5, 2),\n      errors = _useState6[0],\n      setErrors = _useState6[1];\n\n  var namespacesResults = (0,_react_kubernetes_namespaces_queries__WEBPACK_IMPORTED_MODULE_31__.useNamespaces)(environmentId);\n  var servicesResults = (0,_kubernetes_react_views_networks_services_queries__WEBPACK_IMPORTED_MODULE_32__.useServices)(environmentId, namespace);\n  var configResults = (0,_react_kubernetes_configs_queries__WEBPACK_IMPORTED_MODULE_30__.useConfigurations)(environmentId, namespace);\n  var ingressesResults = (0,_queries__WEBPACK_IMPORTED_MODULE_37__.useIngresses)(environmentId, namespacesResults.data ? Object.keys((namespacesResults === null || namespacesResults === void 0 ? void 0 : namespacesResults.data) || {}) : []);\n  var ingressControllersResults = (0,_queries__WEBPACK_IMPORTED_MODULE_37__.useIngressControllers)(environmentId, namespace);\n  var createIngressMutation = (0,_queries__WEBPACK_IMPORTED_MODULE_37__.useCreateIngress)();\n  var updateIngressMutation = (0,_queries__WEBPACK_IMPORTED_MODULE_37__.useUpdateIngress)();\n  var isLoading = servicesResults.isLoading && configResults.isLoading && namespacesResults.isLoading && ingressesResults.isLoading && ingressControllersResults.isLoading || isEdit && !ingressRule.IngressName;\n\n  var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    var _ingressesResults$dat, _ingressesResults$dat2;\n\n    var ruleCounterByNamespace = {};\n    var hostWithTLS = {};\n    (_ingressesResults$dat = ingressesResults.data) === null || _ingressesResults$dat === void 0 ? void 0 : _ingressesResults$dat.forEach(function (ingress) {\n      var _ingress$TLS;\n\n      (_ingress$TLS = ingress.TLS) === null || _ingress$TLS === void 0 ? void 0 : _ingress$TLS.forEach(function (tls) {\n        tls.Hosts.forEach(function (host) {\n          hostWithTLS[host] = tls.SecretName;\n        });\n      });\n    });\n    var ingressNames = [];\n    (_ingressesResults$dat2 = ingressesResults.data) === null || _ingressesResults$dat2 === void 0 ? void 0 : _ingressesResults$dat2.forEach(function (ing) {\n      ruleCounterByNamespace[ing.Namespace] = ruleCounterByNamespace[ing.Namespace] || 0;\n      var n = ing.Name.match(/^(.*)-(\\d+)$/);\n\n      if ((n === null || n === void 0 ? void 0 : n.length) === 3) {\n        ruleCounterByNamespace[ing.Namespace] = Math.max(ruleCounterByNamespace[ing.Namespace], Number(n[2]));\n      }\n\n      if (ing.Namespace === namespace) {\n        ingressNames.push(ing.Name);\n      }\n    });\n    return [ingressNames || [], ingressesResults.data || [], ruleCounterByNamespace, hostWithTLS];\n  }, [ingressesResults.data, namespace]),\n      _useMemo2 = _slicedToArray(_useMemo, 4),\n      ingressNames = _useMemo2[0],\n      ingresses = _useMemo2[1],\n      ruleCounterByNamespace = _useMemo2[2],\n      hostWithTLS = _useMemo2[3];\n\n  var namespacesOptions = [{\n    label: 'Select a namespace',\n    value: ''\n  }];\n  Object.entries((namespacesResults === null || namespacesResults === void 0 ? void 0 : namespacesResults.data) || {}).forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        ns = _ref2[0],\n        val = _ref2[1];\n\n    if (!val.IsSystem) {\n      namespacesOptions.push({\n        label: ns,\n        value: ns\n      });\n    }\n  });\n  var clusterIpServices = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    var _servicesResults$data;\n\n    return (_servicesResults$data = servicesResults.data) === null || _servicesResults$data === void 0 ? void 0 : _servicesResults$data.filter(function (s) {\n      return s.Type === 'ClusterIP';\n    });\n  }, [servicesResults.data]);\n  var servicesOptions = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    return clusterIpServices === null || clusterIpServices === void 0 ? void 0 : clusterIpServices.map(function (service) {\n      return {\n        label: service.Name,\n        value: service.Name\n      };\n    });\n  }, [clusterIpServices]);\n  var serviceOptions = [{\n    label: 'Select a service',\n    value: ''\n  }].concat(_toConsumableArray(servicesOptions || []));\n  var servicePorts = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    return clusterIpServices ? Object.fromEntries(clusterIpServices === null || clusterIpServices === void 0 ? void 0 : clusterIpServices.map(function (service) {\n      return [service.Name, service.Ports.map(function (port) {\n        return {\n          label: String(port.Port),\n          value: String(port.Port)\n        };\n      })];\n    })) : {};\n  }, [clusterIpServices]);\n  var existingIngressClass = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    var _ingressControllersRe;\n\n    return (_ingressControllersRe = ingressControllersResults.data) === null || _ingressControllersRe === void 0 ? void 0 : _ingressControllersRe.find(function (i) {\n      return i.ClassName === ingressRule.IngressClassName || i.Type === 'custom' && ingressRule.IngressClassName === '';\n    });\n  }, [ingressControllersResults.data, ingressRule.IngressClassName]);\n  var ingressClassOptions = [{\n    label: 'Select an ingress class',\n    value: ''\n  }].concat(_toConsumableArray(((_ingressControllersRe2 = ingressControllersResults.data) === null || _ingressControllersRe2 === void 0 ? void 0 : _ingressControllersRe2.filter(function (cls) {\n    return cls.Availability;\n  }).map(function (cls) {\n    return {\n      label: cls.ClassName,\n      value: cls.ClassName\n    };\n  })) || []));\n\n  if ((!existingIngressClass || existingIngressClass && !existingIngressClass.Availability) && ingressRule.IngressClassName && !ingressControllersResults.isLoading) {\n    var optionLabel = !ingressRule.IngressType ? \"\".concat(ingressRule.IngressClassName, \" - NOT FOUND\") : \"\".concat(ingressRule.IngressClassName, \" - DISALLOWED\");\n    ingressClassOptions.push({\n      label: optionLabel,\n      value: ingressRule.IngressClassName\n    });\n  }\n\n  var matchedConfigs = configResults === null || configResults === void 0 ? void 0 : (_configResults$data = configResults.data) === null || _configResults$data === void 0 ? void 0 : _configResults$data.filter(function (config) {\n    return config.SecretType === 'kubernetes.io/tls' && config.Namespace === namespace;\n  });\n  var tlsOptions = (0,react__WEBPACK_IMPORTED_MODULE_26__.useMemo)(function () {\n    return [{\n      label: 'No TLS',\n      value: ''\n    }].concat(_toConsumableArray((matchedConfigs === null || matchedConfigs === void 0 ? void 0 : matchedConfigs.map(function (config) {\n      return {\n        label: config.Name,\n        value: config.Name\n      };\n    })) || []));\n  }, [matchedConfigs]);\n  (0,react__WEBPACK_IMPORTED_MODULE_26__.useEffect)(function () {\n    if (!!params.name && ingressesResults.data && !ingressRule.IngressName && !ingressControllersResults.isLoading && !ingressControllersResults.isLoading) {\n      var _ingressesResults$dat3;\n\n      // if it is an edit screen, prepare the rule from the ingress\n      var ing = (_ingressesResults$dat3 = ingressesResults.data) === null || _ingressesResults$dat3 === void 0 ? void 0 : _ingressesResults$dat3.find(function (ing) {\n        return ing.Name === params.name && ing.Namespace === params.namespace;\n      });\n\n      if (ing) {\n        var _ingressControllersRe3, _ingressControllersRe4;\n\n        var type = (_ingressControllersRe3 = ingressControllersResults.data) === null || _ingressControllersRe3 === void 0 ? void 0 : (_ingressControllersRe4 = _ingressControllersRe3.find(function (c) {\n          return c.ClassName === ing.ClassName || c.Type === 'custom' && !ing.ClassName;\n        })) === null || _ingressControllersRe4 === void 0 ? void 0 : _ingressControllersRe4.Type;\n        var r = (0,_utils__WEBPACK_IMPORTED_MODULE_39__.prepareRuleFromIngress)(ing, type);\n        r.IngressType = type || r.IngressType;\n        setIngressRule(r);\n      }\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [params.name, ingressesResults.data, ingressControllersResults.data, ingressRule.IngressName, params.namespace]);\n  (0,react__WEBPACK_IMPORTED_MODULE_26__.useEffect)(function () {\n    var _ingressRule$Hosts;\n\n    // for each host, if the tls selection doesn't exist as an option, change it to the first option\n    if (ingressRule !== null && ingressRule !== void 0 && (_ingressRule$Hosts = ingressRule.Hosts) !== null && _ingressRule$Hosts !== void 0 && _ingressRule$Hosts.length) {\n      ingressRule.Hosts.forEach(function (host, hIndex) {\n        var secret = host.Secret || '';\n        var tlsOptionVals = tlsOptions.map(function (o) {\n          return o.value;\n        });\n\n        if (tlsOptions !== null && tlsOptions !== void 0 && tlsOptions.length && !(tlsOptionVals !== null && tlsOptionVals !== void 0 && tlsOptionVals.includes(secret))) {\n          handleTLSChange(hIndex, tlsOptionVals[0]);\n        }\n      });\n    }\n  }, [tlsOptions, ingressRule.Hosts]);\n  (0,react__WEBPACK_IMPORTED_MODULE_26__.useEffect)(function () {\n    var _ingressRule$Hosts2;\n\n    // for each path in each host, if the service port doesn't exist as an option, change it to the first option\n    if (ingressRule !== null && ingressRule !== void 0 && (_ingressRule$Hosts2 = ingressRule.Hosts) !== null && _ingressRule$Hosts2 !== void 0 && _ingressRule$Hosts2.length) {\n      ingressRule.Hosts.forEach(function (host, hIndex) {\n        var _host$Paths;\n\n        host === null || host === void 0 ? void 0 : (_host$Paths = host.Paths) === null || _host$Paths === void 0 ? void 0 : _host$Paths.forEach(function (path, pIndex) {\n          var _servicePorts$service;\n\n          var serviceName = path.ServiceName;\n          var currentServicePorts = (_servicePorts$service = servicePorts[serviceName]) === null || _servicePorts$service === void 0 ? void 0 : _servicePorts$service.map(function (p) {\n            return p.value;\n          });\n\n          if (currentServicePorts !== null && currentServicePorts !== void 0 && currentServicePorts.length && !(currentServicePorts !== null && currentServicePorts !== void 0 && currentServicePorts.includes(String(path.ServicePort)))) {\n            handlePathChange(hIndex, pIndex, 'ServicePort', currentServicePorts[0]);\n          }\n        });\n      });\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [ingressRule, servicePorts]);\n  (0,react__WEBPACK_IMPORTED_MODULE_26__.useEffect)(function () {\n    if (namespace.length > 0) {\n      validate(ingressRule, ingressNames || [], servicesOptions || [], existingIngressClass);\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [ingressRule, namespace, ingressNames, servicesOptions, existingIngressClass]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_35__.PageHeader, {\n      title: isEdit ? 'Edit ingress' : 'Add ingress',\n      breadcrumbs: [{\n        link: 'kubernetes.ingresses',\n        label: 'Ingresses'\n      }, {\n        label: isEdit ? 'Edit ingress' : 'Add ingress'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsxs)(\"div\", {\n      className: \"row ingress-rules\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(_IngressForm__WEBPACK_IMPORTED_MODULE_38__.IngressForm, {\n          environmentID: environmentId,\n          isLoading: isLoading,\n          isEdit: isEdit,\n          rule: ingressRule,\n          ingressClassOptions: ingressClassOptions,\n          errors: errors,\n          servicePorts: servicePorts,\n          tlsOptions: tlsOptions,\n          serviceOptions: serviceOptions,\n          addNewIngressHost: addNewIngressHost,\n          handleTLSChange: handleTLSChange,\n          handleHostChange: handleHostChange,\n          handleIngressChange: handleIngressChange,\n          handlePathChange: handlePathChange,\n          addNewIngressRoute: addNewIngressRoute,\n          removeIngressHost: removeIngressHost,\n          removeIngressRoute: removeIngressRoute,\n          addNewAnnotation: addNewAnnotation,\n          removeAnnotation: removeAnnotation,\n          reloadTLSCerts: reloadTLSCerts,\n          handleAnnotationChange: handleAnnotationChange,\n          namespace: namespace,\n          handleNamespaceChange: handleNamespaceChange,\n          namespacesOptions: namespacesOptions\n        })\n      }), namespace && !isLoading && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_36__.Button, {\n          onClick: function onClick() {\n            return handleCreateIngressRules();\n          },\n          disabled: Object.keys(errors).length > 0,\n          children: isEdit ? 'Update' : 'Create'\n        })\n      })]\n    })]\n  });\n\n  function validate(ingressRule, ingressNames, serviceOptions, existingIngressClass) {\n    var _rule$Annotations, _rule$Hosts;\n\n    var errors = {};\n\n    var rule = _objectSpread({}, ingressRule); // User cannot edit the namespace and the ingress name\n\n\n    if (!isEdit) {\n      if (!rule.Namespace) {\n        errors.namespace = 'Namespace is required';\n      }\n\n      var nameRegex = /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/;\n\n      if (!rule.IngressName) {\n        errors.ingressName = 'Ingress name is required';\n      } else if (!nameRegex.test(rule.IngressName)) {\n        errors.ingressName = \"This field must consist of lower case alphanumeric characters or '-', contain at most 63 characters, start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123').\";\n      } else if (ingressNames.includes(rule.IngressName)) {\n        errors.ingressName = 'Ingress name already exists';\n      }\n\n      if (!rule.IngressClassName) {\n        errors.className = 'Ingress class is required';\n      }\n    }\n\n    if (isEdit && !ingressRule.IngressClassName) {\n      errors.className = 'No ingress class is currently set for this ingress - use of the Portainer UI requires one to be set.';\n    }\n\n    if (isEdit && (!existingIngressClass || existingIngressClass && !existingIngressClass.Availability) && ingressRule.IngressClassName) {\n      if (!rule.IngressType) {\n        errors.className = 'Currently set to an ingress class that cannot be found in the cluster - you must select a valid class.';\n      } else {\n        errors.className = 'Currently set to an ingress class that you do not have access to - you must select a valid class.';\n      }\n    }\n\n    var duplicatedAnnotations = [];\n    (_rule$Annotations = rule.Annotations) === null || _rule$Annotations === void 0 ? void 0 : _rule$Annotations.forEach(function (a, i) {\n      if (!a.Key) {\n        errors[\"annotations.key[\".concat(i, \"]\")] = 'Annotation key is required';\n      } else if (duplicatedAnnotations.includes(a.Key)) {\n        errors[\"annotations.key[\".concat(i, \"]\")] = 'Annotation cannot be duplicated';\n      }\n\n      if (!a.Value) {\n        errors[\"annotations.value[\".concat(i, \"]\")] = 'Annotation value is required';\n      }\n\n      duplicatedAnnotations.push(a.Key);\n    });\n    var duplicatedHosts = []; // Check if the paths are duplicates\n\n    (_rule$Hosts = rule.Hosts) === null || _rule$Hosts === void 0 ? void 0 : _rule$Hosts.forEach(function (host, hi) {\n      var _host$Paths2;\n\n      if (!host.NoHost) {\n        if (!host.Host) {\n          errors[\"hosts[\".concat(hi, \"].host\")] = 'Host is required';\n        } else if (duplicatedHosts.includes(host.Host)) {\n          errors[\"hosts[\".concat(hi, \"].host\")] = 'Host cannot be duplicated';\n        }\n\n        duplicatedHosts.push(host.Host);\n      } // Validate service\n\n\n      (_host$Paths2 = host.Paths) === null || _host$Paths2 === void 0 ? void 0 : _host$Paths2.forEach(function (path, pi) {\n        if (!path.ServiceName) {\n          errors[\"hosts[\".concat(hi, \"].paths[\").concat(pi, \"].servicename\")] = 'Service name is required';\n        }\n\n        if (isEdit && path.ServiceName && !serviceOptions.find(function (s) {\n          return s.value === path.ServiceName;\n        })) {\n          errors[\"hosts[\".concat(hi, \"].paths[\").concat(pi, \"].servicename\")] = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsxs)(\"span\", {\n            children: [\"Currently set to \", path.ServiceName, \", which does not exist. You can create a service with this name for a particular deployment via\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_40__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_34__.Link, {\n              to: \"kubernetes.applications\",\n              params: {\n                id: environmentId\n              },\n              className: \"text-primary\",\n              target: \"_blank\",\n              children: \"Applications\"\n            }), \", and on returning here it will be picked up.\"]\n          });\n        }\n\n        if (!path.ServicePort) {\n          errors[\"hosts[\".concat(hi, \"].paths[\").concat(pi, \"].serviceport\")] = 'Service port is required';\n        }\n      }); // Validate paths\n\n      var paths = host.Paths.map(function (path) {\n        return path.Route;\n      });\n      paths.forEach(function (item, idx) {\n        if (!item) {\n          errors[\"hosts[\".concat(hi, \"].paths[\").concat(idx, \"].path\")] = 'Path cannot be empty';\n        } else if (paths.indexOf(item) !== idx) {\n          errors[\"hosts[\".concat(hi, \"].paths[\").concat(idx, \"].path\")] = 'Paths cannot be duplicated';\n        } else {\n          // Validate host and path combination globally\n          var isExists = (0,_utils__WEBPACK_IMPORTED_MODULE_39__.checkIfPathExistsWithHost)(ingresses, host.Host, item, params.name);\n\n          if (isExists) {\n            errors[\"hosts[\".concat(hi, \"].paths[\").concat(idx, \"].path\")] = 'Path is already in use with the same host';\n          }\n        }\n      });\n    });\n    setErrors(errors);\n\n    if (Object.keys(errors).length > 0) {\n      return false;\n    }\n\n    return true;\n  }\n\n  function handleNamespaceChange(ns) {\n    setNamespace(ns);\n\n    if (!isEdit) {\n      addNewIngress(ns);\n    }\n  }\n\n  function handleIngressChange(key, val) {\n    setIngressRule(function (prevRules) {\n      var rule = _objectSpread(_objectSpread({}, prevRules), {}, _defineProperty({}, key, val));\n\n      if (key === 'IngressClassName') {\n        var _ingressControllersRe5, _ingressControllersRe6;\n\n        rule.IngressType = (_ingressControllersRe5 = ingressControllersResults.data) === null || _ingressControllersRe5 === void 0 ? void 0 : (_ingressControllersRe6 = _ingressControllersRe5.find(function (c) {\n          return c.ClassName === val;\n        })) === null || _ingressControllersRe6 === void 0 ? void 0 : _ingressControllersRe6.Type;\n      }\n\n      return rule;\n    });\n  }\n\n  function handleTLSChange(hostIndex, tls) {\n    setIngressRule(function (prevRules) {\n      var rule = _objectSpread({}, prevRules);\n\n      rule.Hosts[hostIndex] = _objectSpread(_objectSpread({}, rule.Hosts[hostIndex]), {}, {\n        Secret: tls\n      });\n      return rule;\n    });\n  }\n\n  function handleHostChange(hostIndex, val) {\n    setIngressRule(function (prevRules) {\n      var rule = _objectSpread({}, prevRules);\n\n      rule.Hosts[hostIndex] = _objectSpread(_objectSpread({}, rule.Hosts[hostIndex]), {}, {\n        Host: val\n      });\n      rule.Hosts[hostIndex].Secret = hostWithTLS[val] || rule.Hosts[hostIndex].Secret;\n      return rule;\n    });\n  }\n\n  function handlePathChange(hostIndex, pathIndex, key, val) {\n    setIngressRule(function (prevRules) {\n      var rule = _objectSpread({}, prevRules);\n\n      var h = _objectSpread({}, rule.Hosts[hostIndex]);\n\n      h.Paths[pathIndex] = _objectSpread(_objectSpread({}, h.Paths[pathIndex]), {}, _defineProperty({}, key, key === 'ServicePort' ? Number(val) : val)); // set the first port of the service as the default port\n\n      if (key === 'ServiceName' && servicePorts[val] && servicePorts[val].length > 0) {\n        h.Paths[pathIndex].ServicePort = Number(servicePorts[val][0].value);\n      }\n\n      rule.Hosts[hostIndex] = h;\n      return rule;\n    });\n  }\n\n  function handleAnnotationChange(index, key, val) {\n    setIngressRule(function (prevRules) {\n      var rules = _objectSpread({}, prevRules);\n\n      rules.Annotations = rules.Annotations || [];\n      rules.Annotations[index] = rules.Annotations[index] || {\n        Key: '',\n        Value: ''\n      };\n      rules.Annotations[index][key] = val;\n      return rules;\n    });\n  }\n\n  function addNewIngress(namespace) {\n    var newKey = \"\".concat(namespace, \"-ingress-\").concat((ruleCounterByNamespace[namespace] || 0) + 1);\n    var path = {\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)(),\n      ServiceName: '',\n      ServicePort: 0,\n      Route: '',\n      PathType: 'Prefix'\n    };\n    var host = {\n      Host: '',\n      Secret: '',\n      Paths: [path],\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)()\n    };\n    var rule = {\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)(),\n      Namespace: namespace,\n      IngressName: newKey,\n      IngressClassName: '',\n      Hosts: [host]\n    };\n    setIngressRule(rule);\n  }\n\n  function addNewIngressHost() {\n    var noHost = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    var rule = _objectSpread({}, ingressRule);\n\n    var path = {\n      ServiceName: '',\n      ServicePort: 0,\n      Route: '',\n      PathType: 'Prefix',\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)()\n    };\n    var host = {\n      Host: '',\n      Secret: '',\n      Paths: [path],\n      NoHost: noHost,\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)()\n    };\n    rule.Hosts.push(host);\n    setIngressRule(rule);\n  }\n\n  function addNewIngressRoute(hostIndex) {\n    var rule = _objectSpread({}, ingressRule);\n\n    var path = {\n      ServiceName: '',\n      ServicePort: 0,\n      Route: '',\n      PathType: 'Prefix',\n      Key: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)()\n    };\n    rule.Hosts[hostIndex].Paths.push(path);\n    setIngressRule(rule);\n  }\n\n  function addNewAnnotation(type) {\n    var _rule$Annotations2;\n\n    var rule = _objectSpread({}, ingressRule);\n\n    var annotation = {\n      Key: '',\n      Value: '',\n      ID: (0,uuid__WEBPACK_IMPORTED_MODULE_28__.v4)()\n    };\n\n    switch (type) {\n      case 'rewrite':\n        annotation.Key = 'nginx.ingress.kubernetes.io/rewrite-target';\n        annotation.Value = '/$1';\n        break;\n\n      case 'regex':\n        annotation.Key = 'nginx.ingress.kubernetes.io/use-regex';\n        annotation.Value = 'true';\n        break;\n\n      case 'ingressClass':\n        annotation.Key = 'kubernetes.io/ingress.class';\n        annotation.Value = '';\n        break;\n\n      default:\n        break;\n    }\n\n    rule.Annotations = rule.Annotations || [];\n    (_rule$Annotations2 = rule.Annotations) === null || _rule$Annotations2 === void 0 ? void 0 : _rule$Annotations2.push(annotation);\n    setIngressRule(rule);\n  }\n\n  function removeAnnotation(index) {\n    var rule = _objectSpread({}, ingressRule);\n\n    if (index > -1) {\n      var _rule$Annotations3;\n\n      (_rule$Annotations3 = rule.Annotations) === null || _rule$Annotations3 === void 0 ? void 0 : _rule$Annotations3.splice(index, 1);\n    }\n\n    setIngressRule(rule);\n  }\n\n  function removeIngressRoute(hostIndex, pathIndex) {\n    var rule = _objectSpread(_objectSpread({}, ingressRule), {}, {\n      Hosts: _toConsumableArray(ingressRule.Hosts)\n    });\n\n    if (hostIndex > -1 && pathIndex > -1) {\n      rule.Hosts[hostIndex].Paths.splice(pathIndex, 1);\n    }\n\n    setIngressRule(rule);\n  }\n\n  function removeIngressHost(hostIndex) {\n    var rule = _objectSpread(_objectSpread({}, ingressRule), {}, {\n      Hosts: _toConsumableArray(ingressRule.Hosts)\n    });\n\n    if (hostIndex > -1) {\n      rule.Hosts.splice(hostIndex, 1);\n    }\n\n    setIngressRule(rule);\n  }\n\n  function reloadTLSCerts() {\n    configResults.refetch();\n  }\n\n  function handleCreateIngressRules() {\n    var rule = _objectSpread({}, ingressRule);\n\n    var classNameToSend = rule.IngressClassName === 'none' ? '' : rule.IngressClassName;\n    var ingress = {\n      Namespace: namespace,\n      Name: rule.IngressName,\n      ClassName: classNameToSend,\n      Hosts: rule.Hosts.map(function (host) {\n        return host.Host;\n      }),\n      Paths: (0,_utils__WEBPACK_IMPORTED_MODULE_39__.preparePaths)(rule.IngressName, rule.Hosts),\n      TLS: (0,_utils__WEBPACK_IMPORTED_MODULE_39__.prepareTLS)(rule.Hosts),\n      Annotations: (0,_utils__WEBPACK_IMPORTED_MODULE_39__.prepareAnnotations)(rule.Annotations || [])\n    };\n\n    if (isEdit) {\n      updateIngressMutation.mutate({\n        environmentId: environmentId,\n        ingress: ingress\n      }, {\n        onSuccess: function onSuccess() {\n          (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_33__.notifySuccess)('Success', 'Ingress updated successfully');\n          router.stateService.go('kubernetes.ingresses');\n        }\n      });\n    } else {\n      createIngressMutation.mutate({\n        environmentId: environmentId,\n        ingress: ingress\n      }, {\n        onSuccess: function onSuccess() {\n          (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_33__.notifySuccess)('Success', 'Ingress created successfully');\n          router.stateService.go('kubernetes.ingresses');\n        }\n      });\n    }\n  }\n}//# sourceURL=webpack-internal:///53451\n");

}),

29233:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IngressForm\": function() { return /* binding */ IngressForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-feather */ 32346);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 96636);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var _kubernetes_react_views_networks_ingresses_components_annotations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/kubernetes/react/views/networks/ingresses/components/annotations */ 68345);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/form-components/Input/Select */ 47661);\n/* harmony import */ var _form_components_FormError__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/form-components/FormError */ 24751);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _style_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../style.css */ 34694);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PathTypes = {\n  nginx: ['ImplementationSpecific', 'Prefix', 'Exact'],\n  traefik: ['Prefix', 'Exact'],\n  other: ['Prefix', 'Exact']\n};\nvar PlaceholderAnnotations = {\n  nginx: ['e.g. nginx.ingress.kubernetes.io/rewrite-target', '/$1'],\n  traefik: ['e.g. traefik.ingress.kubernetes.io/router.tls', 'true'],\n  other: ['e.g. app.kubernetes.io/name', 'examplename']\n};\nfunction IngressForm(_ref) {\n  var _rule$Hosts, _rule$Hosts2;\n\n  var environmentID = _ref.environmentID,\n      rule = _ref.rule,\n      isLoading = _ref.isLoading,\n      isEdit = _ref.isEdit,\n      servicePorts = _ref.servicePorts,\n      tlsOptions = _ref.tlsOptions,\n      handleTLSChange = _ref.handleTLSChange,\n      addNewIngressHost = _ref.addNewIngressHost,\n      serviceOptions = _ref.serviceOptions,\n      handleHostChange = _ref.handleHostChange,\n      handleIngressChange = _ref.handleIngressChange,\n      handlePathChange = _ref.handlePathChange,\n      addNewIngressRoute = _ref.addNewIngressRoute,\n      removeIngressRoute = _ref.removeIngressRoute,\n      removeIngressHost = _ref.removeIngressHost,\n      addNewAnnotation = _ref.addNewAnnotation,\n      removeAnnotation = _ref.removeAnnotation,\n      reloadTLSCerts = _ref.reloadTLSCerts,\n      handleAnnotationChange = _ref.handleAnnotationChange,\n      ingressClassOptions = _ref.ingressClassOptions,\n      errors = _ref.errors,\n      namespacesOptions = _ref.namespacesOptions,\n      handleNamespaceChange = _ref.handleNamespaceChange,\n      namespace = _ref.namespace;\n\n  if (isLoading) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n      children: \"\\u52A0\\u8F7D\\u4E2D...\"\n    });\n  }\n\n  var hasNoHostRule = (_rule$Hosts = rule.Hosts) === null || _rule$Hosts === void 0 ? void 0 : _rule$Hosts.some(function (host) {\n    return host.NoHost;\n  });\n  var placeholderAnnotation = PlaceholderAnnotations[rule.IngressType || 'other'] || PlaceholderAnnotations.other;\n  var pathTypes = PathTypes[rule.IngressType || 'other'] || PathTypes.other;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_9__.Widget, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_9__.WidgetTitle, {\n      icon: \"svg-route\",\n      title: \"Ingress\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_9__.WidgetBody, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n        className: \"row\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n          className: \"form-horizontal\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n            className: \"form-group\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"label\", {\n              className: \"control-label text-muted col-sm-3 col-lg-2 required\",\n              htmlFor: \"namespace\",\n              children: \"Namespace\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n              className: \"col-sm-4\",\n              children: isEdit ? namespace : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                name: \"namespaces\",\n                options: namespacesOptions || [],\n                onChange: function onChange(e) {\n                  return handleNamespaceChange(e.target.value);\n                },\n                defaultValue: namespace,\n                disabled: isEdit\n              })\n            })]\n          })\n        })\n      }), namespace && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n        className: \"row\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n          className: \"form-horizontal\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n            className: \"form-group\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"label\", {\n              className: \"control-label text-muted col-sm-3 col-lg-2 required\",\n              htmlFor: \"ingress_name\",\n              children: \"Ingress name\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n              className: \"col-sm-4\",\n              children: [isEdit ? rule.IngressName : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"input\", {\n                name: \"ingress_name\",\n                type: \"text\",\n                className: \"form-control\",\n                placeholder: \"Ingress name\",\n                defaultValue: rule.IngressName,\n                onChange: function onChange(e) {\n                  return handleIngressChange('IngressName', e.target.value);\n                },\n                disabled: isEdit\n              }), errors.ingressName && !isEdit && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                className: \"mt-1 error-inline\",\n                children: errors.ingressName\n              })]\n            })]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n            className: \"form-group\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"label\", {\n              className: \"control-label text-muted col-sm-3 col-lg-2 required\",\n              htmlFor: \"ingress_class\",\n              children: \"Ingress class\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n              className: \"col-sm-4\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                name: \"ingress_class\",\n                className: \"form-control\",\n                placeholder: \"Ingress name\",\n                defaultValue: rule.IngressClassName,\n                onChange: function onChange(e) {\n                  return handleIngressChange('IngressClassName', e.target.value);\n                },\n                options: ingressClassOptions\n              }), errors.className && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                className: \"mt-1 error-inline\",\n                children: errors.className\n              })]\n            })]\n          }, ingressClassOptions.toString())]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n          className: \"col-sm-12 px-0 text-muted !mb-0\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n            className: \"mb-2\",\n            children: \"Annotations\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"p\", {\n            className: \"vertical-center text-muted small\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_6__.Icon, {\n              icon: \"info\",\n              mode: \"primary\",\n              feather: true\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"span\", {\n              children: [\"You can specify\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"a\", {\n                href: \"https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\",\n                target: \"_black\",\n                children: \"annotations\"\n              }), ' ', \"for the object. See further Kubernetes documentation on\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"a\", {\n                href: \"https://kubernetes.io/docs/reference/labels-annotations-taints/\",\n                target: \"_black\",\n                children: \"well-known annotations\"\n              }), \".\"]\n            })]\n          })]\n        }), (rule === null || rule === void 0 ? void 0 : rule.Annotations) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_kubernetes_react_views_networks_ingresses_components_annotations__WEBPACK_IMPORTED_MODULE_4__.Annotations, {\n          placeholder: placeholderAnnotation,\n          annotations: rule.Annotations,\n          handleAnnotationChange: handleAnnotationChange,\n          removeAnnotation: removeAnnotation,\n          errors: errors\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n          className: \"col-sm-12 p-0 anntation-actions\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n            className: \"btn btn-sm btn-light mb-2 !ml-0\",\n            onClick: function onClick() {\n              return addNewAnnotation();\n            },\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n            title: \"Use annotations to configure options for an ingress. Review Nginx or Traefik documentation to find the annotations supported by your choice of ingress type.\",\n            children: [' ', \"add annotation\"]\n          }), rule.IngressType === 'nginx' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n              className: \"btn btn-sm btn-light mb-2 ml-2\",\n              onClick: function onClick() {\n                return addNewAnnotation('rewrite');\n              },\n              icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n              title: \"When the exposed URLs for your applications differ from the specified paths in the ingress, use the rewrite target annotation to denote the path to redirect to.\",\n              \"data-cy\": \"add-rewrite-annotation\",\n              children: [' ', \"Add rewrite annotation\"]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n              className: \"btn btn-sm btn-light mb-2 ml-2\",\n              onClick: function onClick() {\n                return addNewAnnotation('regex');\n              },\n              icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n              title: \"When the exposed URLs for your applications differ from the specified paths in the ingress, use the rewrite target annotation to denote the path to redirect to.\",\n              \"data-cy\": \"add-regex-annotation\",\n              children: \"Add regular expression annotation\"\n            })]\n          }), rule.IngressType === 'custom' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n            className: \"btn btn-sm btn-light mb-2 ml-2\",\n            onClick: function onClick() {\n              return addNewAnnotation('ingressClass');\n            },\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n            \"data-cy\": \"add-ingress-class-annotation\",\n            children: \"Add kubernetes.io/ingress.class annotation\"\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n          className: \"col-sm-12 px-0 text-muted\",\n          children: \"Rules\"\n        })]\n      }), namespace && (rule === null || rule === void 0 ? void 0 : (_rule$Hosts2 = rule.Hosts) === null || _rule$Hosts2 === void 0 ? void 0 : _rule$Hosts2.map(function (host, hostIndex) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n          className: \"row mb-5 rule bordered\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n            className: \"col-sm-12\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n              className: \"row mt-5 rule-actions\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n                className: \"col-sm-3 p-0\",\n                children: !host.NoHost ? 'Rule' : 'Fallback rule'\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                className: \"col-sm-9 p-0 text-right\",\n                children: [!host.NoHost && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n                  className: \"btn btn-light btn-sm\",\n                  onClick: function onClick() {\n                    return reloadTLSCerts();\n                  },\n                  icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n                  children: \"Reload TLS secrets\"\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n                  className: \"btn btn-sm ml-2\",\n                  color: \"dangerlight\",\n                  type: \"button\",\n                  \"data-cy\": \"k8sAppCreate-rmHostButton_\".concat(hostIndex),\n                  onClick: function onClick() {\n                    return removeIngressHost(hostIndex);\n                  },\n                  disabled: rule.Hosts.length === 1,\n                  icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n                  children: \"Remove rule\"\n                })]\n              })]\n            }), !host.NoHost && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n              className: \"row\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                className: \"form-group !pl-0 col-sm-6 col-lg-4 !pr-2\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                  className: \"input-group input-group-sm\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                    className: \"input-group-addon required\",\n                    children: \"Hostname\"\n                  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"input\", {\n                    name: \"ingress_host_\".concat(hostIndex),\n                    type: \"text\",\n                    className: \"form-control form-control-sm\",\n                    placeholder: \"e.g. example.com\",\n                    defaultValue: host.Host,\n                    onChange: function onChange(e) {\n                      return handleHostChange(hostIndex, e.target.value);\n                    }\n                  })]\n                }), errors[\"hosts[\".concat(hostIndex, \"].host\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                  className: \"mt-1 !mb-0\",\n                  children: errors[\"hosts[\".concat(hostIndex, \"].host\")]\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n                className: \"form-group !pr-0 col-sm-6 col-lg-4 !pl-2\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                  className: \"input-group input-group-sm\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                    className: \"input-group-addon\",\n                    children: \"TLS secret\"\n                  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                    name: \"ingress_tls_\".concat(hostIndex),\n                    options: tlsOptions,\n                    onChange: function onChange(e) {\n                      return handleTLSChange(hostIndex, e.target.value);\n                    },\n                    defaultValue: host.Secret\n                  }, tlsOptions.toString() + host.Secret)]\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"p\", {\n                className: \"vertical-center text-muted small whitespace-nowrap col-sm-12 !p-0\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_6__.Icon, {\n                  icon: \"info\",\n                  mode: \"primary\",\n                  size: \"md\",\n                  feather: true\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"span\", {\n                  children: [\"Add a secret via\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_5__.Link, {\n                    to: \"kubernetes.configurations\",\n                    params: {\n                      id: environmentID\n                    },\n                    className: \"text-primary\",\n                    target: \"_blank\",\n                    children: \"ConfigMaps & Secrets\"\n                  }), ', ', \"then select 'Reload TLS secrets' above to populate the dropdown with your changes.\"]\n                })]\n              })]\n            }), host.NoHost && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"p\", {\n              className: \"vertical-center text-muted small whitespace-nowrap col-sm-12 !p-0\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_6__.Icon, {\n                icon: \"info\",\n                mode: \"primary\",\n                size: \"md\",\n                feather: true\n              }), \"A fallback rule has no host specified. This rule only applies when an inbound request has a hostname that does not match with any of your other rules.\"]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n              className: \"row\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n                className: \"col-sm-12 px-0 !mb-0 mt-2 text-muted\",\n                children: \"Paths\"\n              })\n            }), host.Paths.map(function (path, pathIndex) {\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                className: \"mt-5 !mb-5 row path\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                  className: \"form-group !pl-0 col-sm-3 col-xl-2 !m-0\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                    className: \"input-group input-group-sm\",\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                      className: \"input-group-addon required\",\n                      children: \"Service\"\n                    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                      name: \"ingress_service_\".concat(hostIndex, \"_\").concat(pathIndex),\n                      options: serviceOptions,\n                      onChange: function onChange(e) {\n                        return handlePathChange(hostIndex, pathIndex, 'ServiceName', e.target.value);\n                      },\n                      defaultValue: path.ServiceName\n                    }, serviceOptions.toString() + path.ServiceName)]\n                  }), errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].servicename\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                    className: \"mt-1 !mb-0 error-inline\",\n                    children: errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].servicename\")]\n                  })]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n                  className: \"form-group !pl-0 col-sm-2 col-xl-2 !m-0\",\n                  children: servicePorts && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                      className: \"input-group input-group-sm\",\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                        className: \"input-group-addon required\",\n                        children: \"Service port\"\n                      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                        name: \"ingress_servicePort_\".concat(hostIndex, \"_\").concat(pathIndex),\n                        options: path.ServiceName && servicePorts[path.ServiceName] ? servicePorts[path.ServiceName] : [{\n                          label: 'Select port',\n                          value: ''\n                        }],\n                        onChange: function onChange(e) {\n                          return handlePathChange(hostIndex, pathIndex, 'ServicePort', e.target.value);\n                        },\n                        defaultValue: path.ServicePort\n                      }, servicePorts.toString() + path.ServicePort)]\n                    }), errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].serviceport\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                      className: \"mt-1 !mb-0\",\n                      children: errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].serviceport\")]\n                    })]\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                  className: \"form-group !pl-0 col-sm-3 col-xl-2 !m-0\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                    className: \"input-group input-group-sm\",\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                      className: \"input-group-addon required\",\n                      children: \"Path type\"\n                    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input_Select__WEBPACK_IMPORTED_MODULE_7__.Select, {\n                      name: \"ingress_pathType_\".concat(hostIndex, \"_\").concat(pathIndex),\n                      options: pathTypes ? pathTypes.map(function (type) {\n                        return {\n                          label: type,\n                          value: type\n                        };\n                      }) : [],\n                      onChange: function onChange(e) {\n                        return handlePathChange(hostIndex, pathIndex, 'PathType', e.target.value);\n                      },\n                      defaultValue: path.PathType\n                    }, servicePorts.toString() + path.PathType)]\n                  }), errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].pathType\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                    className: \"mt-1 !mb-0\",\n                    children: errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].pathType\")]\n                  })]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                  className: \"form-group !pl-0 col-sm-3 col-xl-3 !m-0\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n                    className: \"input-group input-group-sm\",\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n                      className: \"input-group-addon required\",\n                      children: \"Path\"\n                    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"input\", {\n                      className: \"form-control\",\n                      name: \"ingress_route_\".concat(hostIndex, \"-\").concat(pathIndex),\n                      placeholder: \"/example\",\n                      \"data-pattern\": \"/^(\\\\/?[a-zA-Z0-9]+([a-zA-Z0-9-/_]*[a-zA-Z0-9])?|[a-zA-Z0-9]+)|(\\\\/){1}$/\",\n                      \"data-cy\": \"k8sAppCreate-route_\".concat(hostIndex, \"-\").concat(pathIndex),\n                      defaultValue: path.Route,\n                      onChange: function onChange(e) {\n                        return handlePathChange(hostIndex, pathIndex, 'Route', e.target.value);\n                      }\n                    })]\n                  }), errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].path\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_8__.FormError, {\n                    className: \"mt-1 !mb-0\",\n                    children: errors[\"hosts[\".concat(hostIndex, \"].paths[\").concat(pathIndex, \"].path\")]\n                  })]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n                  className: \"form-group !pl-0 col-sm-1 !m-0\",\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n                    className: \"btn btn-sm btn-only-icon !ml-0 vertical-center\",\n                    color: \"dangerlight\",\n                    type: \"button\",\n                    \"data-cy\": \"k8sAppCreate-rmPortButton_\".concat(hostIndex, \"-\").concat(pathIndex),\n                    onClick: function onClick() {\n                      return removeIngressRoute(hostIndex, pathIndex);\n                    },\n                    disabled: host.Paths.length === 1,\n                    icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n                  })\n                })]\n              }, \"path_\".concat(path.Key, \"}\"));\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n              className: \"row mt-5\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n                className: \"btn btn-sm btn-light !ml-0\",\n                type: \"button\",\n                onClick: function onClick() {\n                  return addNewIngressRoute(hostIndex);\n                },\n                icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n                children: \"Add path\"\n              })\n            })]\n          })\n        }, host.Key);\n      })), namespace && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n        className: \"row p-0 rules-action\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n          className: \"col-sm-12 p-0 vertical-center\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n            className: \"btn btn-sm btn-light !ml-0\",\n            type: \"button\",\n            onClick: function onClick() {\n              return addNewIngressHost();\n            },\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n            children: \"Add new host\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n            className: \"btn btn-sm btn-light ml-2\",\n            type: \"button\",\n            onClick: function onClick() {\n              return addNewIngressHost(true);\n            },\n            disabled: hasNoHostRule,\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n            children: \"Add fallback rule\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_10__.Tooltip, {\n            message: \"A fallback rule will be applied to all requests that do not match any of the defined hosts.\"\n          })]\n        })\n      })]\n    }, rule.Key + rule.Namespace)]\n  });\n}//# sourceURL=webpack-internal:///29233\n");

}),

5820:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CreateIngressView": function() { return /* reexport safe */ _CreateIngressView__WEBPACK_IMPORTED_MODULE_0__.CreateIngressView; }
/* harmony export */ });
/* harmony import */ var _CreateIngressView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateIngressView */ 53451);


}),

85801:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"prepareTLS\": function() { return /* binding */ prepareTLS; },\n/* harmony export */   \"preparePaths\": function() { return /* binding */ preparePaths; },\n/* harmony export */   \"prepareAnnotations\": function() { return /* binding */ prepareAnnotations; },\n/* harmony export */   \"prepareRuleHostsFromIngress\": function() { return /* binding */ prepareRuleHostsFromIngress; },\n/* harmony export */   \"getAnnotationsForEdit\": function() { return /* binding */ getAnnotationsForEdit; },\n/* harmony export */   \"prepareRuleFromIngress\": function() { return /* binding */ prepareRuleFromIngress; },\n/* harmony export */   \"checkIfPathExistsWithHost\": function() { return /* binding */ checkIfPathExistsWithHost; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ 89999);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ 58613);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! uuid */ 64001);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(uuid__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\nvar ignoreAnnotationsForEdit = ['kubectl.kubernetes.io/last-applied-configuration'];\nfunction prepareTLS(hosts) {\n  var tls = [];\n  hosts.forEach(function (host) {\n    if (host.Secret && host.Host) {\n      tls.push({\n        Hosts: [host.Host],\n        SecretName: host.Secret\n      });\n    }\n  });\n  return tls;\n}\nfunction preparePaths(ingressName, hosts) {\n  return hosts.flatMap(function (host) {\n    return host.Paths.map(function (p) {\n      return {\n        ServiceName: p.ServiceName,\n        Host: host.Host,\n        Path: p.Route,\n        Port: p.ServicePort,\n        PathType: p.PathType || 'Prefix',\n        IngressName: ingressName\n      };\n    });\n  });\n}\nfunction prepareAnnotations(annotations) {\n  var result = {};\n  annotations.forEach(function (a) {\n    result[a.Key] = a.Value;\n  });\n  return result;\n}\n\nfunction getSecretByHost(host, tls) {\n  var secret = '';\n\n  if (tls) {\n    tls.forEach(function (t) {\n      if (t.Hosts.indexOf(host) !== -1) {\n        secret = t.SecretName;\n      }\n    });\n  }\n\n  return secret;\n}\n\nfunction prepareRuleHostsFromIngress(ing) {\n  var _ing$Hosts;\n\n  var hosts = (_ing$Hosts = ing.Hosts) === null || _ing$Hosts === void 0 ? void 0 : _ing$Hosts.map(function (host) {\n    var _ing$Paths;\n\n    var h = {};\n    h.Host = host;\n    h.Secret = getSecretByHost(host, ing.TLS);\n    h.Paths = [];\n    (_ing$Paths = ing.Paths) === null || _ing$Paths === void 0 ? void 0 : _ing$Paths.forEach(function (path) {\n      if (path.Host === host) {\n        h.Paths.push({\n          Route: path.Path,\n          ServiceName: path.ServiceName,\n          ServicePort: path.Port,\n          PathType: path.PathType,\n          Key: Math.random().toString()\n        });\n      }\n    });\n\n    if (!host) {\n      h.NoHost = true;\n    }\n\n    h.Key = (0,uuid__WEBPACK_IMPORTED_MODULE_7__.v4)();\n    return h;\n  });\n  return hosts;\n}\nfunction getAnnotationsForEdit(annotations) {\n  var result = [];\n  Object.keys(annotations).forEach(function (k) {\n    if (ignoreAnnotationsForEdit.indexOf(k) === -1) {\n      result.push({\n        Key: k,\n        Value: annotations[k],\n        ID: (0,uuid__WEBPACK_IMPORTED_MODULE_7__.v4)()\n      });\n    }\n  });\n  return result;\n}\nfunction prepareRuleFromIngress(ing, type) {\n  return {\n    Key: (0,uuid__WEBPACK_IMPORTED_MODULE_7__.v4)(),\n    IngressName: ing.Name,\n    Namespace: ing.Namespace,\n    IngressClassName: type === 'custom' ? 'none' : ing.ClassName,\n    Hosts: prepareRuleHostsFromIngress(ing) || [],\n    Annotations: ing.Annotations ? getAnnotationsForEdit(ing.Annotations) : [],\n    IngressType: ing.Type\n  };\n}\nfunction checkIfPathExistsWithHost(ingresses, host, path, ingressName) {\n  var exists = false;\n  ingresses.forEach(function (ingress) {\n    var _ingress$Paths;\n\n    if (ingressName && ingress.Name === ingressName) {\n      return;\n    }\n\n    (_ingress$Paths = ingress.Paths) === null || _ingress$Paths === void 0 ? void 0 : _ingress$Paths.forEach(function (p) {\n      if (p.Host === host && p.Path === path) {\n        exists = true;\n      }\n    });\n  });\n  return exists;\n}//# sourceURL=webpack-internal:///85801\n");

}),

43250:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IngressDataTable\": function() { return /* binding */ IngressDataTable; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-feather */ 32346);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _react_kubernetes_namespaces_queries__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/kubernetes/namespaces/queries */ 66487);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../queries */ 80555);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./datatable-store */ 38801);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./columns */ 11524);\n/* harmony import */ var _style_css__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../style.css */ 34694);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar useStore = (0,_datatable_store__WEBPACK_IMPORTED_MODULE_15__.createStore)('ingresses');\nfunction IngressDataTable() {\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_7__.useEnvironmentId)();\n  var nsResult = (0,_react_kubernetes_namespaces_queries__WEBPACK_IMPORTED_MODULE_8__.useNamespaces)(environmentId);\n  var ingressesQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_14__.useIngresses)(environmentId, Object.keys((nsResult === null || nsResult === void 0 ? void 0 : nsResult.data) || {}));\n  var settings = useStore();\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_16__.useColumns)();\n  var deleteIngressesMutation = (0,_queries__WEBPACK_IMPORTED_MODULE_14__.useDeleteIngresses)();\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_6__.useRouter)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_11__.Datatable, {\n    dataset: ingressesQuery.data || [],\n    storageKey: \"ingressClassesNameSpace\",\n    columns: columns,\n    settingsStore: settings,\n    isLoading: ingressesQuery.isLoading,\n    emptyContentLabel: \"No supported ingresses found\",\n    titleOptions: {\n      icon: 'svg-route',\n      title: 'Ingresses'\n    },\n    getRowId: function getRowId(row) {\n      return row.Name + row.Type + row.Namespace;\n    },\n    renderTableActions: tableActions,\n    disableSelect: useCheckboxes()\n  });\n\n  function tableActions(selectedFlatRows) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(\"div\", {\n      className: \"ingressDatatable-actions\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.Authorized, {\n        authorizations: \"AzureContainerGroupDelete\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_12__.Button, {\n          className: \"btn-wrapper\",\n          color: \"dangerlight\",\n          disabled: selectedFlatRows.length === 0,\n          onClick: function onClick() {\n            return handleRemoveClick(selectedFlatRows.map(function (row) {\n              return {\n                Name: row.Name,\n                Namespace: row.Namespace\n              };\n            }));\n          },\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n          children: \"Remove\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.Authorized, {\n        authorizations: \"K8sIngressesW\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n          to: \"kubernetes.ingresses.create\",\n          className: \"space-left\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_12__.Button, {\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n            className: \"btn-wrapper vertical-center\",\n            color: \"secondary\",\n            children: \"Add with form\"\n          })\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.Authorized, {\n        authorizations: \"K8sIngressesW\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n          to: \"kubernetes.deploy\",\n          className: \"space-left\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_12__.Button, {\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n            className: \"btn-wrapper\",\n            children: \"Create from manifest\"\n          })\n        })\n      })]\n    });\n  }\n\n  function useCheckboxes() {\n    return !(0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.useAuthorizations)(['K8sIngressesW']);\n  }\n\n  function handleRemoveClick(_x) {\n    return _handleRemoveClick.apply(this, arguments);\n  }\n\n  function _handleRemoveClick() {\n    _handleRemoveClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(ingresses) {\n      var confirmed, payload;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__.confirmDeletionAsync)('Are you sure you want to delete the selected ingresses?');\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\", null);\n\n            case 5:\n              payload = {};\n              ingresses.forEach(function (ingress) {\n                payload[ingress.Namespace] = payload[ingress.Namespace] || [];\n                payload[ingress.Namespace].push(ingress.Name);\n              });\n              deleteIngressesMutation.mutate({\n                environmentId: environmentId,\n                data: payload\n              }, {\n                onSuccess: function onSuccess() {\n                  router.stateService.reload();\n                }\n              });\n              return _context.abrupt(\"return\", ingresses);\n\n            case 9:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleRemoveClick.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///43250\n");

}),

34572:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"className\": function() { return /* binding */ className; }\n/* harmony export */ });\nvar className = {\n  Header: 'Class Name',\n  accessor: 'ClassName',\n  id: 'className',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///34572\n");

}),

11524:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./name */ 35905);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type */ 48531);\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./namespace */ 84329);\n/* harmony import */ var _className__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./className */ 34572);\n/* harmony import */ var _ingressRules__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ingressRules */ 94436);\n\n\n\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_name__WEBPACK_IMPORTED_MODULE_1__.name, _namespace__WEBPACK_IMPORTED_MODULE_3__.namespace, _className__WEBPACK_IMPORTED_MODULE_4__.className, _type__WEBPACK_IMPORTED_MODULE_2__.type, _ingressRules__WEBPACK_IMPORTED_MODULE_5__.ingressRules];\n  }, []);\n}//# sourceURL=webpack-internal:///11524\n");

}),

94436:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ingressRules\": function() { return /* binding */ ingressRules; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Badge */ 74085);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction isHTTP(TLSs, host) {\n  return TLSs.filter(function (t) {\n    return t.Hosts.indexOf(host) !== -1;\n  }).length === 0;\n}\n\nfunction link(host, path, isHttp) {\n  if (!host) {\n    return path;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"a\", {\n    href: \"\".concat(isHttp ? 'http' : 'https', \"://\").concat(host).concat(path),\n    target: \"_blank\",\n    rel: \"noreferrer\",\n    children: \"\".concat(isHttp ? 'http' : 'https', \"://\").concat(host).concat(path)\n  });\n}\n\nvar ingressRules = {\n  Header: 'Rules and Paths',\n  accessor: 'Paths',\n  Cell: function Cell(_ref) {\n    var _row$original$Paths;\n\n    var row = _ref.row;\n    var results = (_row$original$Paths = row.original.Paths) === null || _row$original$Paths === void 0 ? void 0 : _row$original$Paths.map(function (path) {\n      var isHttp = isHTTP(row.original.TLS || [], path.Host);\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"span\", {\n          className: \"flex px-2 flex-nowrap items-center gap-1\",\n          children: [link(path.Host, path.Path, isHttp), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_4__.Icon, {\n            icon: \"arrow-right\",\n            feather: true\n          }), \"\".concat(path.ServiceName, \":\").concat(path.Port), !path.HasService && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_Badge__WEBPACK_IMPORTED_MODULE_5__.Badge, {\n            type: \"warn\",\n            className: \"ml-1 gap-1\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_4__.Icon, {\n              icon: \"alert-triangle\",\n              feather: true\n            }), \"Service doesn't exist\"]\n          })]\n        })\n      }, \"\".concat(path.Host).concat(path.Path).concat(path.ServiceName, \":\").concat(path.Port));\n    });\n    return results || /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {});\n  },\n  id: 'ingressRules',\n  disableFilters: true,\n  canHide: true,\n  disableSortBy: true\n};//# sourceURL=webpack-internal:///94436\n");

}),

35905:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; }\n/* harmony export */ });\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: 'Name',\n  Cell: function Cell(_ref) {\n    var row = _ref.row;\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__.Authorized, {\n      authorizations: \"K8sIngressesW\",\n      childrenUnauthorized: row.original.Name,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_1__.Link, {\n        to: \"kubernetes.ingresses.edit\",\n        params: {\n          uid: row.original.UID,\n          namespace: row.original.Namespace,\n          name: row.original.Name\n        },\n        title: row.original.Name,\n        children: row.original.Name\n      })\n    });\n  },\n  id: 'name',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///35905\n");

}),

84329:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"namespace\": function() { return /* binding */ namespace; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _react_components_datatables_Filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/components/datatables/Filter */ 33513);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar namespace = {\n  Header: 'Namespace',\n  accessor: 'Namespace',\n  Cell: function Cell(_ref) {\n    var row = _ref.row;\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_5__.Link, {\n      to: \"kubernetes.resourcePools.resourcePool\",\n      params: {\n        id: row.original.Namespace\n      },\n      title: row.original.Namespace,\n      children: row.original.Namespace\n    });\n  },\n  id: 'namespace',\n  disableFilters: false,\n  canHide: true,\n  Filter: (0,_react_components_datatables_Filter__WEBPACK_IMPORTED_MODULE_4__.filterHOC)('Filter by namespace'),\n  filter: function filter(rows, filterValue, filters) {\n    if (filters.length === 0) {\n      return rows;\n    }\n\n    return rows.filter(function (r) {\n      return filters.includes(r.original.Namespace);\n    });\n  }\n};//# sourceURL=webpack-internal:///84329\n");

}),

48531:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"type\": function() { return /* binding */ type; }\n/* harmony export */ });\nvar type = {\n  Header: 'Type',\n  accessor: 'Type',\n  id: 'type',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///48531\n");

}),

38801:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TRUNCATE_LENGTH\": function() { return /* binding */ TRUNCATE_LENGTH; },\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/components/datatables/types */ 16579);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nvar TRUNCATE_LENGTH = 32;\nfunction createStore(storageKey) {\n  return (0,zustand__WEBPACK_IMPORTED_MODULE_9__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_10__.persist)(function (set) {\n    return _objectSpread(_objectSpread({}, (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.sortableSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.paginationSettings)(set));\n  }, {\n    name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)(storageKey)\n  }));\n}//# sourceURL=webpack-internal:///38801\n");

}),

29808:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IngressesDatatableView\": function() { return /* binding */ IngressesDatatableView; }\n/* harmony export */ });\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _IngressDataTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IngressDataTable */ 43250);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction IngressesDatatableView() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_0__.PageHeader, {\n      title: \"Ingresses\",\n      breadcrumbs: [{\n        label: 'Ingresses'\n      }],\n      reload: true\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_IngressDataTable__WEBPACK_IMPORTED_MODULE_1__.IngressDataTable, {})]\n  });\n}//# sourceURL=webpack-internal:///29808\n");

}),

68345:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Annotations\": function() { return /* binding */ Annotations; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _form_components_FormError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/FormError */ 24751);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction Annotations(_ref) {\n  var annotations = _ref.annotations,\n      handleAnnotationChange = _ref.handleAnnotationChange,\n      removeAnnotation = _ref.removeAnnotation,\n      errors = _ref.errors,\n      placeholder = _ref.placeholder;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n    children: annotations.map(function (annotation, i) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n        className: \"row\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n          className: \"form-group !pl-0 col-sm-4 !m-0\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n            className: \"input-group input-group-sm\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n              className: \"input-group-addon required\",\n              children: \"Key\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"input\", {\n              name: \"annotation_key_\".concat(i),\n              type: \"text\",\n              className: \"form-control form-control-sm\",\n              placeholder: placeholder[0],\n              defaultValue: annotation.Key,\n              onChange: function onChange(e) {\n                return handleAnnotationChange(i, 'Key', e.target.value);\n              }\n            })]\n          }), errors[\"annotations.key[\".concat(i, \"]\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_2__.FormError, {\n            className: \"mt-1 !mb-0\",\n            children: errors[\"annotations.key[\".concat(i, \"]\")]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n          className: \"form-group !pl-0 col-sm-4 !m-0\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n            className: \"input-group input-group-sm\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n              className: \"input-group-addon required\",\n              children: \"Value\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"input\", {\n              name: \"annotation_value_\".concat(i),\n              type: \"text\",\n              className: \"form-control form-control-sm\",\n              placeholder: placeholder[1],\n              defaultValue: annotation.Value,\n              onChange: function onChange(e) {\n                return handleAnnotationChange(i, 'Value', e.target.value);\n              }\n            })]\n          }), errors[\"annotations.value[\".concat(i, \"]\")] && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_2__.FormError, {\n            className: \"mt-1 !mb-0\",\n            children: errors[\"annotations.value[\".concat(i, \"]\")]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: \"col-sm-3 !pl-0 !m-0\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n            className: \"btn btn-sm btn-dangerlight btn-only-icon !ml-0\",\n            type: \"button\",\n            onClick: function onClick() {\n              return removeAnnotation(i);\n            },\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n              icon: \"trash-2\",\n              size: \"md\",\n              feather: true\n            })\n          })\n        })]\n      }, annotation.ID);\n    })\n  });\n}//# sourceURL=webpack-internal:///68345\n");

}),

80555:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useIngress\": function() { return /* binding */ useIngress; },\n/* harmony export */   \"useIngresses\": function() { return /* binding */ useIngresses; },\n/* harmony export */   \"useCreateIngress\": function() { return /* binding */ useCreateIngress; },\n/* harmony export */   \"useUpdateIngress\": function() { return /* binding */ useUpdateIngress; },\n/* harmony export */   \"useDeleteIngresses\": function() { return /* binding */ useDeleteIngresses; },\n/* harmony export */   \"useIngressControllers\": function() { return /* binding */ useIngressControllers; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.promise.all-settled.js */ 97602);\n/* harmony import */ var core_js_modules_esnext_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.flat.js */ 34920);\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat.js */ 8743);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.set.js */ 89024);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_service__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../services/service */ 27471);\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./service */ 38770);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\nvar ingressKeys = {\n  all: ['environments', 'kubernetes', 'namespace', 'ingress'],\n  namespace: function namespace(environmentId, _namespace, ingress) {\n    return [].concat(_toConsumableArray(ingressKeys.all), [String(environmentId), _namespace, ingress]);\n  }\n};\nfunction useIngress(environmentId, namespace, name) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQuery)(['environments', environmentId, 'kubernetes', 'namespace', namespace, 'ingress', name], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var ing;\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.next = 2;\n            return (0,_service__WEBPACK_IMPORTED_MODULE_29__.getIngress)(environmentId, namespace, name);\n\n          case 2:\n            ing = _context.sent;\n            return _context.abrupt(\"return\", ing);\n\n          case 4:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  })), _objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to get ingress')));\n}\nfunction useIngresses(environmentId, namespaces) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQuery)(['environments', environmentId, 'kubernetes', 'namespace', namespaces, 'ingress'], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    var _settledIngressesProm, _settledServicesPromi;\n\n    var settledIngressesPromise, ingresses, filteredIngresses, uniqueNamespacesWithIngress, settledServicesPromise, services;\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.next = 2;\n            return Promise.allSettled(namespaces.map(function (namespace) {\n              return (0,_service__WEBPACK_IMPORTED_MODULE_29__.getIngresses)(environmentId, namespace);\n            }));\n\n          case 2:\n            settledIngressesPromise = _context2.sent;\n            ingresses = (_settledIngressesProm = settledIngressesPromise.filter(isFulfilled)) === null || _settledIngressesProm === void 0 ? void 0 : _settledIngressesProm.map(function (i) {\n              return i.value;\n            }); // flatten the array and remove empty ingresses\n\n            filteredIngresses = ingresses.flat().filter(function (ing) {\n              return ing;\n            }); // get all services in only the namespaces that the ingresses are in to find missing services\n\n            uniqueNamespacesWithIngress = _toConsumableArray(new Set(filteredIngresses.map(function (ing) {\n              return ing === null || ing === void 0 ? void 0 : ing.Namespace;\n            })));\n            _context2.next = 8;\n            return Promise.allSettled(uniqueNamespacesWithIngress.map(function (ns) {\n              return (0,_services_service__WEBPACK_IMPORTED_MODULE_28__.getServices)(environmentId, ns);\n            }));\n\n          case 8:\n            settledServicesPromise = _context2.sent;\n            services = (_settledServicesPromi = settledServicesPromise.filter(isFulfilled)) === null || _settledServicesPromi === void 0 ? void 0 : _settledServicesPromi.map(function (s) {\n              return s.value;\n            }).flat(); // check if each ingress path service has a service that still exists\n\n            filteredIngresses.forEach(function (ing, iIndex) {\n              var _ing$Paths;\n\n              var servicesInNamespace = services === null || services === void 0 ? void 0 : services.filter(function (service) {\n                return (service === null || service === void 0 ? void 0 : service.Namespace) === (ing === null || ing === void 0 ? void 0 : ing.Namespace);\n              });\n              var serviceNamesInNamespace = servicesInNamespace === null || servicesInNamespace === void 0 ? void 0 : servicesInNamespace.map(function (service) {\n                return service.Name;\n              });\n              (_ing$Paths = ing.Paths) === null || _ing$Paths === void 0 ? void 0 : _ing$Paths.forEach(function (path, pIndex) {\n                if (!(serviceNamesInNamespace !== null && serviceNamesInNamespace !== void 0 && serviceNamesInNamespace.includes(path.ServiceName)) && filteredIngresses[iIndex].Paths) {\n                  filteredIngresses[iIndex].Paths[pIndex].HasService = false;\n                } else {\n                  filteredIngresses[iIndex].Paths[pIndex].HasService = true;\n                }\n              });\n            });\n            return _context2.abrupt(\"return\", filteredIngresses);\n\n          case 12:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  })), _objectSpread({\n    enabled: namespaces.length > 0\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to get ingresses')));\n}\nfunction useCreateIngress() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useMutation)(function (_ref3) {\n    var environmentId = _ref3.environmentId,\n        ingress = _ref3.ingress;\n    return (0,_service__WEBPACK_IMPORTED_MODULE_29__.createIngress)(environmentId, ingress);\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to create ingress controller'), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withInvalidate)(queryClient, [ingressKeys.all])));\n}\nfunction useUpdateIngress() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useMutation)(function (_ref4) {\n    var environmentId = _ref4.environmentId,\n        ingress = _ref4.ingress;\n    return (0,_service__WEBPACK_IMPORTED_MODULE_29__.updateIngress)(environmentId, ingress);\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to update ingress controller'), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withInvalidate)(queryClient, [ingressKeys.all])));\n}\nfunction useDeleteIngresses() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useMutation)(function (_ref5) {\n    var environmentId = _ref5.environmentId,\n        data = _ref5.data;\n    return (0,_service__WEBPACK_IMPORTED_MODULE_29__.deleteIngresses)(environmentId, data);\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to update ingress controller'), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withInvalidate)(queryClient, [ingressKeys.all])));\n}\n/**\n * Ingress Controllers\n */\n\nfunction useIngressControllers(environmentId, namespace) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_26__.useQuery)(['environments', environmentId, 'kubernetes', 'namespace', namespace, 'ingresscontrollers'], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n    var ing;\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.next = 2;\n            return (0,_service__WEBPACK_IMPORTED_MODULE_29__.getIngressControllers)(environmentId, namespace);\n\n          case 2:\n            ing = _context3.sent;\n            return _context3.abrupt(\"return\", ing);\n\n          case 4:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3);\n  })), _objectSpread({\n    enabled: !!namespace,\n    cacheTime: 0\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_27__.withError)('Unable to get ingress controllers')));\n}\n\nfunction isFulfilled(input) {\n  return input.status === 'fulfilled';\n}//# sourceURL=webpack-internal:///80555\n");

}),

38770:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getIngress\": function() { return /* binding */ getIngress; },\n/* harmony export */   \"getIngresses\": function() { return /* binding */ getIngresses; },\n/* harmony export */   \"getIngressControllers\": function() { return /* binding */ getIngressControllers; },\n/* harmony export */   \"createIngress\": function() { return /* binding */ createIngress; },\n/* harmony export */   \"updateIngress\": function() { return /* binding */ updateIngress; },\n/* harmony export */   \"deleteIngresses\": function() { return /* binding */ deleteIngresses; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getIngress(_x, _x2, _x3) {\n  return _getIngress.apply(this, arguments);\n}\n\nfunction _getIngress() {\n  _getIngress = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, namespace, ingressName) {\n    var _yield$axios$get, ingress;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl(environmentId, namespace, ingressName));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            ingress = _yield$axios$get.data;\n            return _context.abrupt(\"return\", ingress[0]);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Unable to retrieve the ingress');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getIngress.apply(this, arguments);\n}\n\nfunction getIngresses(_x4, _x5) {\n  return _getIngresses.apply(this, arguments);\n}\n\nfunction _getIngresses() {\n  _getIngresses = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, namespace) {\n    var _yield$axios$get2, ingresses;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl(environmentId, namespace));\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            ingresses = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", ingresses);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context2.t0, 'Unable to retrieve ingresses');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getIngresses.apply(this, arguments);\n}\n\nfunction getIngressControllers(_x6, _x7) {\n  return _getIngressControllers.apply(this, arguments);\n}\n\nfunction _getIngressControllers() {\n  _getIngressControllers = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(environmentId, namespace) {\n    var _yield$axios$get3, ingresscontrollers;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(\"kubernetes/\".concat(environmentId, \"/namespaces/\").concat(namespace, \"/ingresscontrollers\"));\n\n          case 3:\n            _yield$axios$get3 = _context3.sent;\n            ingresscontrollers = _yield$axios$get3.data;\n            return _context3.abrupt(\"return\", ingresscontrollers);\n\n          case 8:\n            _context3.prev = 8;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context3.t0, 'Unable to retrieve ingresses');\n\n          case 11:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 8]]);\n  }));\n  return _getIngressControllers.apply(this, arguments);\n}\n\nfunction createIngress(_x8, _x9) {\n  return _createIngress.apply(this, arguments);\n}\n\nfunction _createIngress() {\n  _createIngress = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(environmentId, ingress) {\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(buildUrl(environmentId, ingress.Namespace), ingress);\n\n          case 3:\n            return _context4.abrupt(\"return\", _context4.sent);\n\n          case 6:\n            _context4.prev = 6;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context4.t0, 'Unable to create an ingress');\n\n          case 9:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n  return _createIngress.apply(this, arguments);\n}\n\nfunction updateIngress(_x10, _x11) {\n  return _updateIngress.apply(this, arguments);\n}\n\nfunction _updateIngress() {\n  _updateIngress = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(environmentId, ingress) {\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.prev = 0;\n            _context5.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].put(buildUrl(environmentId, ingress.Namespace), ingress);\n\n          case 3:\n            return _context5.abrupt(\"return\", _context5.sent);\n\n          case 6:\n            _context5.prev = 6;\n            _context5.t0 = _context5[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context5.t0, 'Unable to update an ingress');\n\n          case 9:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[0, 6]]);\n  }));\n  return _updateIngress.apply(this, arguments);\n}\n\nfunction deleteIngresses(_x12, _x13) {\n  return _deleteIngresses.apply(this, arguments);\n}\n\nfunction _deleteIngresses() {\n  _deleteIngresses = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(environmentId, data) {\n    return regeneratorRuntime.wrap(function _callee6$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            _context6.prev = 0;\n            _context6.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(\"kubernetes/\".concat(environmentId, \"/ingresses/delete\"), data);\n\n          case 3:\n            return _context6.abrupt(\"return\", _context6.sent);\n\n          case 6:\n            _context6.prev = 6;\n            _context6.t0 = _context6[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context6.t0, 'Unable to delete ingresses');\n\n          case 9:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n  return _deleteIngresses.apply(this, arguments);\n}\n\nfunction buildUrl(environmentId, namespace, ingressName) {\n  var url = \"kubernetes/\".concat(environmentId, \"/namespaces/\").concat(namespace, \"/ingresses\");\n\n  if (ingressName) {\n    url += \"/\".concat(ingressName);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///38770\n");

}),

17087:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useServices\": function() { return /* binding */ useServices; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./service */ 27471);\n\n\n\nfunction useServices(environmentId, namespace) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', environmentId, 'kubernetes', 'namespaces', namespace, 'services'], function () {\n    return namespace ? (0,_service__WEBPACK_IMPORTED_MODULE_2__.getServices)(environmentId, namespace) : [];\n  }, {\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to get services');\n    }\n  });\n}//# sourceURL=webpack-internal:///17087\n");

}),

27471:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getServices\": function() { return /* binding */ getServices; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getServices(_x, _x2) {\n  return _getServices.apply(this, arguments);\n}\n\nfunction _getServices() {\n  _getServices = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, namespace) {\n    var _yield$axios$get, services;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl(environmentId, namespace));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            services = _yield$axios$get.data;\n            return _context.abrupt(\"return\", services);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Unable to retrieve services');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getServices.apply(this, arguments);\n}\n\nfunction buildUrl(environmentId, namespace) {\n  var url = \"kubernetes/\".concat(environmentId, \"/namespaces/\").concat(namespace, \"/services\");\n  return url;\n}//# sourceURL=webpack-internal:///27471\n");

}),

52503:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"downloadKubeconfigFile\": function() { return /* binding */ downloadKubeconfigFile; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ 24378);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59886);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! file-saver */ 72205);\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nvar baseUrl = 'kubernetes';\nfunction downloadKubeconfigFile(_x) {\n  return _downloadKubeconfigFile.apply(this, arguments);\n}\n\nfunction _downloadKubeconfigFile() {\n  _downloadKubeconfigFile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentIds) {\n    var _yield$axios$get, headers, data, contentDispositionHeader, filename;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"].get(\"\".concat(baseUrl, \"/config\"), {\n              params: {\n                ids: JSON.stringify(environmentIds)\n              },\n              responseType: 'blob',\n              headers: {\n                Accept: 'text/yaml'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            headers = _yield$axios$get.headers;\n            data = _yield$axios$get.data;\n            contentDispositionHeader = headers['content-disposition'];\n            filename = contentDispositionHeader.replace('attachment;', '').trim();\n            (0,file_saver__WEBPACK_IMPORTED_MODULE_6__.saveAs)(data, filename);\n            _context.next = 14;\n            break;\n\n          case 11:\n            _context.prev = 11;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context.t0, '');\n\n          case 14:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 11]]);\n  }));\n  return _downloadKubeconfigFile.apply(this, arguments);\n}//# sourceURL=webpack-internal:///52503\n");

}),

43539:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"nomadModule\": function() { return /* binding */ nomadModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./react */ 21777);\n\n\n\nvar nomadModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.nomad', ['portainer.app', _react__WEBPACK_IMPORTED_MODULE_2__.reactModule]).name;//# sourceURL=webpack-internal:///43539\n");

}),

69040:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.nomad.react.components', []).name;//# sourceURL=webpack-internal:///69040\n");

}),

21777:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 69040);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 30198);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.nomad.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///21777\n");

}),

30198:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.nomad.react.views', []).name;//# sourceURL=webpack-internal:///30198\n");

}),

54737:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ BeIndicatorController; }\n/* harmony export */ });\n/* harmony import */ var _BEFeatureIndicator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/BEFeatureIndicator/utils */ 86751);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\nvar BeIndicatorController = /*#__PURE__*/function () {\n  /* @ngInject */\n  function BeIndicatorController() {\n    _classCallCheck(this, BeIndicatorController);\n\n    this.limitedToBE = false;\n    this.url = '';\n  }\n\n  _createClass(BeIndicatorController, [{\n    key: \"$onInit\",\n    value: function $onInit() {\n      var _getFeatureDetails = (0,_BEFeatureIndicator_utils__WEBPACK_IMPORTED_MODULE_0__.getFeatureDetails)(this.feature),\n          url = _getFeatureDetails.url,\n          limitedToBE = _getFeatureDetails.limitedToBE;\n\n      this.limitedToBE = limitedToBE;\n      this.url = url;\n    }\n  }]);\n\n  return BeIndicatorController;\n}();\n\n//# sourceURL=webpack-internal:///54737\n");

}),

67006:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"beFeatureIndicator\": function() { return /* binding */ beFeatureIndicator; }\n/* harmony export */ });\n/* harmony import */ var _BEFeatureIndicator_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BEFeatureIndicator.controller */ 54737);\nvar autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./BEFeatureIndicator.html */ 4483);\n\n\nvar beFeatureIndicator = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _BEFeatureIndicator_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    feature: '<'\n  },\n  transclude: true\n};//# sourceURL=webpack-internal:///67006\n");

}),

25752:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BoxSelectorAngular\": function() { return /* binding */ BoxSelectorAngular; }\n/* harmony export */ });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar BoxSelectorController = /*#__PURE__*/function () {\n  BoxSelectorController.$inject = [\"$scope\"];\n\n  /* @ngInject */\n  function BoxSelectorController($scope) {\n    _classCallCheck(this, BoxSelectorController);\n\n    this.handleChange = this.handleChange.bind(this);\n    this.$scope = $scope;\n  }\n\n  _createClass(BoxSelectorController, [{\n    key: \"handleChange\",\n    value: function handleChange(value, limitedToBE) {\n      var _this = this;\n\n      this.$scope.$evalAsync(function () {\n        _this.formCtrl.$setValidity(_this.radioName, !limitedToBE, _this.formCtrl);\n\n        _this.onChange(value);\n      });\n    }\n  }]);\n\n  return BoxSelectorController;\n}();\n\nvar BoxSelectorAngular = {\n  template: \"<box-selector-react\\n    value=\\\"$ctrl.value\\\"\\n    on-change=\\\"$ctrl.handleChange\\\"\\n    options=\\\"$ctrl.options\\\"\\n    radio-name=\\\"$ctrl.radioName\\\"\\n  ></box-selector-react>\",\n  bindings: {\n    value: '<',\n    onChange: '<',\n    options: '<',\n    radioName: '<'\n  },\n  require: {\n    formCtrl: '^form'\n  },\n  controller: BoxSelectorController\n};//# sourceURL=webpack-internal:///25752\n");

}),

20292:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildOption\": function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_5__.buildOption; },\n/* harmony export */   \"boxSelectorModule\": function() { return /* binding */ boxSelectorModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/BoxSelector */ 69);\n/* harmony import */ var _BoxSelectorAngular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./BoxSelectorAngular */ 25752);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ 76736);\n\n\n\n\n\n\nvar BoxSelectorReact = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.react2angular)(_BoxSelector__WEBPACK_IMPORTED_MODULE_3__.BoxSelector, ['value', 'onChange', 'options', 'radioName']);\nvar boxSelectorModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('app.portainer.component.box-selector', []).component('boxSelectorReact', BoxSelectorReact).component('boxSelector', _BoxSelectorAngular__WEBPACK_IMPORTED_MODULE_4__.BoxSelectorAngular).name;//# sourceURL=webpack-internal:///20292\n");

}),

76736:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildOption\": function() { return /* binding */ buildOption; }\n/* harmony export */ });\nfunction buildOption(id, icon, label, description, value, feature, featherIcon) {\n  return {\n    id: id,\n    icon: icon,\n    label: label,\n    description: description,\n    value: value,\n    feature: feature,\n    featherIcon: featherIcon\n  };\n}//# sourceURL=webpack-internal:///76736\n");

}),

40516:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "InformationPanelAngular": function() { return /* reexport safe */ _InformationPanelAngular__WEBPACK_IMPORTED_MODULE_0__.InformationPanelAngular; }
/* harmony export */ });
/* harmony import */ var _InformationPanelAngular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InformationPanelAngular */ 87005);


}),

25856:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var _assets_ico_theme_lightmode_svg_c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/assets/ico/theme/lightmode.svg?c */ 65313);\n/* harmony import */ var _assets_ico_theme_darkmode_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/theme/darkmode.svg?c */ 96112);\n/* harmony import */ var _assets_ico_theme_highcontrastmode_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/theme/highcontrastmode.svg?c */ 56342);\n/* harmony import */ var _assets_ico_theme_auto_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/ico/theme/auto.svg?c */ 57471);\n\n\n\n\nvar options = [{\n  id: 'light',\n  icon: _assets_ico_theme_lightmode_svg_c__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  label: '浅色主题',\n  description: '默认颜色模式',\n  value: 'light'\n}, {\n  id: 'dark',\n  icon: _assets_ico_theme_darkmode_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  label: '深色主题',\n  description: '深色模式',\n  value: 'dark'\n}, {\n  id: 'highcontrast',\n  icon: _assets_ico_theme_highcontrastmode_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  label: '高对比度',\n  description: '高对比度颜色模式',\n  value: 'highcontrast'\n}, {\n  id: 'auto',\n  icon: _assets_ico_theme_auto_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  label: '自动',\n  description: '与系统主题同步',\n  value: 'auto'\n}];//# sourceURL=webpack-internal:///25856\n");

}),

27171:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _rd_widget_body__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rd-widget-body */ 3055);\n/* harmony import */ var _rd_widget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rd-widget */ 49130);\n/* harmony import */ var _rd_widget_custom_header__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rd-widget-custom-header */ 90631);\n/* harmony import */ var _rd_widget_footer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rd-widget-footer */ 59718);\n/* harmony import */ var _rd_widget_taskbar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rd-widget-taskbar */ 69523);\n/* harmony import */ var _rd_widget_title__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rd-widget-title */ 57736);\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.components.widget', []).component('rdWidget', _rd_widget__WEBPACK_IMPORTED_MODULE_3__.rdWidget).component('rdWidgetBody', _rd_widget_body__WEBPACK_IMPORTED_MODULE_2__.rdWidgetBody).component('rdWidgetCustomHeader', _rd_widget_custom_header__WEBPACK_IMPORTED_MODULE_4__.rdWidgetCustomHeader).component('rdWidgetFooter', _rd_widget_footer__WEBPACK_IMPORTED_MODULE_5__.rdWidgetFooter).component('rdWidgetHeader', _rd_widget_title__WEBPACK_IMPORTED_MODULE_7__.rdWidgetTitle).component('rdWidgetTaskbar', _rd_widget_taskbar__WEBPACK_IMPORTED_MODULE_6__.rdWidgetTaskbar).name);//# sourceURL=webpack-internal:///27171\n");

}),

3055:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidgetBody\": function() { return /* binding */ rdWidgetBody; }\n/* harmony export */ });\nvar rdWidgetBody = {\n  requires: '^rdWidget',\n  bindings: {\n    loading: '@?',\n    classes: '@?'\n  },\n  transclude: true,\n  template: \"\\n    <div class=\\\"widget-body\\\" ng-class=\\\"$ctrl.classes\\\">\\n      <rd-loading ng-show=\\\"$ctrl.loading\\\"></rd-loading>\\n      <div ng-hide=\\\"$ctrl.loading\\\" class=\\\"widget-content\\\" ng-transclude></div>\\n    </div>\\n  \"\n};//# sourceURL=webpack-internal:///3055\n");

}),

90631:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidgetCustomHeader\": function() { return /* binding */ rdWidgetCustomHeader; }\n/* harmony export */ });\nvar rdWidgetCustomHeader = {\n  requires: '^rdWidget',\n  bindings: {\n    titleText: '=',\n    icon: '='\n  },\n  transclude: true,\n  template: \"\\n    <div class=\\\"widget-header\\\">\\n      <div class=\\\"row\\\">\\n        <span class=\\\"pull-left\\\">\\n          <img class=\\\"custom-header-ico space-right\\\" ng-src=\\\"{{$ctrl.icon}}\\\" ng-if=\\\"$ctrl.icon\\\" alt=\\\"header-icon\\\"></img>\\n          <i class=\\\"fa fa-rocket\\\" aria-hidden=\\\"true\\\" ng-if=\\\"!$ctrl.icon\\\"></i>\\n          <span class=\\\"text-muted\\\"> {{$ctrl.titleText}} </span>\\n        </span>\\n        <span class=\\\"pull-right col-xs-6 col-sm-4\\\" ng-transclude></span>\\n      </div>\\n    </div>\\n  \"\n}; // a react component wasn't created because WidgetTitle were adjusted to support a custom image//# sourceURL=webpack-internal:///90631\n");

}),

59718:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidgetFooter\": function() { return /* binding */ rdWidgetFooter; }\n/* harmony export */ });\nvar rdWidgetFooter = {\n  requires: '^rdWidget',\n  transclude: true,\n  template: \"\\n    <div class=\\\"widget-footer\\\" ng-transclude></div>\\n  \"\n};//# sourceURL=webpack-internal:///59718\n");

}),

69523:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidgetTaskbar\": function() { return /* binding */ rdWidgetTaskbar; }\n/* harmony export */ });\nvar rdWidgetTaskbar = {\n  requires: '^rdWidget',\n  bindings: {\n    classes: '@?'\n  },\n  transclude: true,\n  template: \"\\n    <div class=\\\"widget-header\\\">\\n      <div class=\\\"row\\\">\\n        <div ng-class=\\\"$ctrl.classes\\\" ng-transclude></div>\\n      </div>\\n    </div>\\n  \"\n};//# sourceURL=webpack-internal:///69523\n");

}),

57736:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidgetTitle\": function() { return /* binding */ rdWidgetTitle; }\n/* harmony export */ });\nvar rdWidgetTitle = {\n  requires: '^rdWidget',\n  bindings: {\n    titleText: '@',\n    icon: '@',\n    featherIcon: '<',\n    classes: '@?',\n    parentClasses: '@?'\n  },\n  transclude: {\n    title: '?headerTitle'\n  },\n  template: \"\\n    <div class=\\\"widget-header\\\" ng-class=\\\"$ctrl.parentClasses\\\">\\n      <div class=\\\"row\\\">\\n        <span ng-class=\\\"$ctrl.classes\\\" class=\\\"pull-left vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.icon\\\" feather=\\\"$ctrl.featherIcon\\\"></pr-icon>\\n          </div>\\n          <span ng-transclude=\\\"title\\\">{{ $ctrl.titleText }}</span>\\n        </span>\\n        <span ng-class=\\\"$ctrl.classes\\\" class=\\\"pull-right\\\" ng-transclude></span>\\n      </div>\\n    </div>\\n\"\n};//# sourceURL=webpack-internal:///57736\n");

}),

49130:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rdWidget\": function() { return /* binding */ rdWidget; }\n/* harmony export */ });\nvar rdWidget = {\n  transclude: true,\n  template: \"<div class=\\\"widget\\\" ng-transclude></div>\"\n};//# sourceURL=webpack-internal:///49130\n");

}),

32498:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getGroup\": function() { return /* binding */ getGroup; },\n/* harmony export */   \"getGroups\": function() { return /* binding */ getGroups; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getGroup(_x) {\n  return _getGroup.apply(this, arguments);\n}\n\nfunction _getGroup() {\n  _getGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(id) {\n    var _yield$axios$get, group;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(id));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            group = _yield$axios$get.data;\n            return _context.abrupt(\"return\", group);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, '');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getGroup.apply(this, arguments);\n}\n\nfunction getGroups() {\n  return _getGroups.apply(this, arguments);\n}\n\nfunction _getGroups() {\n  _getGroups = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    var _yield$axios$get2, groups;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl());\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            groups = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", groups);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, '');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getGroups.apply(this, arguments);\n}\n\nfunction buildUrl(id, action) {\n  var url = '/endpoint_groups';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///32498\n");

}),

43145:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useGroups\": function() { return /* binding */ useGroups; },\n/* harmony export */   \"useGroup\": function() { return /* binding */ useGroup; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _environment_groups_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./environment-groups.service */ 32498);\n\n\n\nfunction useGroups() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environment-groups'], _environment_groups_service__WEBPACK_IMPORTED_MODULE_2__.getGroups);\n}\nfunction useGroup(groupId, select) {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environment-groups', groupId], function () {\n    return (0,_environment_groups_service__WEBPACK_IMPORTED_MODULE_2__.getGroup)(groupId);\n  }, {\n    staleTime: 50,\n    select: select,\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failed loading group', error);\n    }\n  }),\n      data = _useQuery.data;\n\n  return data;\n}//# sourceURL=webpack-internal:///43145\n");

}),

94040:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createLocalDockerEnvironment\": function() { return /* binding */ createLocalDockerEnvironment; },\n/* harmony export */   \"createLocalKubernetesEnvironment\": function() { return /* binding */ createLocalKubernetesEnvironment; },\n/* harmony export */   \"createAzureEnvironment\": function() { return /* binding */ createAzureEnvironment; },\n/* harmony export */   \"createRemoteEnvironment\": function() { return /* binding */ createRemoteEnvironment; },\n/* harmony export */   \"createAgentEnvironment\": function() { return /* binding */ createAgentEnvironment; },\n/* harmony export */   \"createEdgeAgentEnvironment\": function() { return /* binding */ createEdgeAgentEnvironment; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../types */ 23945);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils */ 55950);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\nfunction createLocalDockerEnvironment(_x) {\n  return _createLocalDockerEnvironment.apply(this, arguments);\n}\n\nfunction _createLocalDockerEnvironment() {\n  _createLocalDockerEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref) {\n    var name, _ref$socketPath, socketPath, _ref$publicUrl, publicUrl, _ref$meta, meta, _ref$gpus, gpus, url, prefixPath;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            prefixPath = function _prefixPath(path) {\n              if (path === '') {\n                return path;\n              } // Windows named pipe\n\n\n              if (path.startsWith('//./pipe/')) {\n                return \"npipe://\".concat(path);\n              }\n\n              return \"unix://\".concat(path);\n            };\n\n            name = _ref.name, _ref$socketPath = _ref.socketPath, socketPath = _ref$socketPath === void 0 ? '' : _ref$socketPath, _ref$publicUrl = _ref.publicUrl, publicUrl = _ref$publicUrl === void 0 ? '' : _ref$publicUrl, _ref$meta = _ref.meta, meta = _ref$meta === void 0 ? {\n              tagIds: []\n            } : _ref$meta, _ref$gpus = _ref.gpus, gpus = _ref$gpus === void 0 ? [] : _ref$gpus;\n            url = prefixPath(socketPath);\n            return _context.abrupt(\"return\", createEnvironment(name, _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentCreationTypes.LocalDockerEnvironment, {\n              url: url,\n              publicUrl: publicUrl,\n              meta: meta,\n              gpus: gpus\n            }));\n\n          case 4:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _createLocalDockerEnvironment.apply(this, arguments);\n}\n\nfunction createLocalKubernetesEnvironment(_x2) {\n  return _createLocalKubernetesEnvironment.apply(this, arguments);\n}\n\nfunction _createLocalKubernetesEnvironment() {\n  _createLocalKubernetesEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_ref2) {\n    var name, _ref2$meta, meta;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            name = _ref2.name, _ref2$meta = _ref2.meta, meta = _ref2$meta === void 0 ? {\n              tagIds: []\n            } : _ref2$meta;\n            return _context2.abrupt(\"return\", createEnvironment(name, _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentCreationTypes.LocalKubernetesEnvironment, {\n              meta: meta,\n              tls: {\n                skipClientVerify: true,\n                skipVerify: true\n              }\n            }));\n\n          case 2:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n  return _createLocalKubernetesEnvironment.apply(this, arguments);\n}\n\nfunction createAzureEnvironment(_x3) {\n  return _createAzureEnvironment.apply(this, arguments);\n}\n\nfunction _createAzureEnvironment() {\n  _createAzureEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(_ref3) {\n    var name, azure, _ref3$meta, meta;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            name = _ref3.name, azure = _ref3.azure, _ref3$meta = _ref3.meta, meta = _ref3$meta === void 0 ? {\n              tagIds: []\n            } : _ref3$meta;\n            return _context3.abrupt(\"return\", createEnvironment(name, _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentCreationTypes.AzureEnvironment, {\n              meta: meta,\n              azure: azure\n            }));\n\n          case 2:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3);\n  }));\n  return _createAzureEnvironment.apply(this, arguments);\n}\n\nfunction createRemoteEnvironment(_x4) {\n  return _createRemoteEnvironment.apply(this, arguments);\n}\n\nfunction _createRemoteEnvironment() {\n  _createRemoteEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(_ref4) {\n    var creationType, name, url, _ref4$options, options;\n\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            creationType = _ref4.creationType, name = _ref4.name, url = _ref4.url, _ref4$options = _ref4.options, options = _ref4$options === void 0 ? {} : _ref4$options;\n            return _context4.abrupt(\"return\", createEnvironment(name, creationType, _objectSpread(_objectSpread({}, options), {}, {\n              url: \"tcp://\".concat(url)\n            })));\n\n          case 2:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4);\n  }));\n  return _createRemoteEnvironment.apply(this, arguments);\n}\n\nfunction createAgentEnvironment(_ref5) {\n  var name = _ref5.name,\n      environmentUrl = _ref5.environmentUrl,\n      _ref5$meta = _ref5.meta,\n      meta = _ref5$meta === void 0 ? {\n    tagIds: []\n  } : _ref5$meta;\n  return createRemoteEnvironment({\n    name: name,\n    url: environmentUrl,\n    creationType: _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentCreationTypes.AgentEnvironment,\n    options: {\n      meta: meta,\n      tls: {\n        skipVerify: true,\n        skipClientVerify: true\n      }\n    }\n  });\n}\nfunction createEdgeAgentEnvironment(_ref6) {\n  var name = _ref6.name,\n      portainerUrl = _ref6.portainerUrl,\n      _ref6$meta = _ref6.meta,\n      meta = _ref6$meta === void 0 ? {\n    tagIds: []\n  } : _ref6$meta,\n      _ref6$gpus = _ref6.gpus,\n      gpus = _ref6$gpus === void 0 ? [] : _ref6$gpus,\n      isEdgeDevice = _ref6.isEdgeDevice,\n      pollFrequency = _ref6.pollFrequency;\n  return createEnvironment(name, _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentCreationTypes.EdgeAgentEnvironment, {\n    url: portainerUrl,\n    tls: {\n      skipVerify: true,\n      skipClientVerify: true\n    },\n    gpus: gpus,\n    isEdgeDevice: isEdgeDevice,\n    pollFrequency: pollFrequency,\n    meta: meta\n  });\n}\n\nfunction createEnvironment(_x5, _x6, _x7) {\n  return _createEnvironment.apply(this, arguments);\n}\n\nfunction _createEnvironment() {\n  _createEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(name, creationType, options) {\n    var payload, _ref7, groupId, _ref7$tagIds, tagIds, tls, azure, formPayload, _yield$axios$post, data;\n\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            payload = {\n              Name: name,\n              EndpointCreationType: creationType\n            };\n\n            if (options) {\n              _ref7 = options.meta || {}, groupId = _ref7.groupId, _ref7$tagIds = _ref7.tagIds, tagIds = _ref7$tagIds === void 0 ? [] : _ref7$tagIds;\n              payload = _objectSpread(_objectSpread({}, payload), {}, {\n                URL: options.url,\n                PublicURL: options.publicUrl,\n                GroupID: groupId,\n                TagIds: (0,_utils__WEBPACK_IMPORTED_MODULE_13__.arrayToJson)(tagIds),\n                CheckinInterval: options.pollFrequency,\n                IsEdgeDevice: options.isEdgeDevice,\n                Gpus: (0,_utils__WEBPACK_IMPORTED_MODULE_13__.arrayToJson)(options.gpus)\n              });\n              tls = options.tls, azure = options.azure;\n\n              if (tls) {\n                payload = _objectSpread(_objectSpread({}, payload), {}, {\n                  TLS: true,\n                  TLSSkipVerify: tls.skipVerify,\n                  TLSSkipClientVerify: tls.skipClientVerify,\n                  TLSCACertFile: tls.caCertFile,\n                  TLSCertFile: tls.certFile,\n                  TLSKeyFile: tls.keyFile\n                });\n              }\n\n              if (azure) {\n                payload = _objectSpread(_objectSpread({}, payload), {}, {\n                  AzureApplicationID: azure.applicationId,\n                  AzureTenantID: azure.tenantId,\n                  AzureAuthenticationKey: azure.authenticationKey\n                });\n              }\n            }\n\n            formPayload = (0,_utils__WEBPACK_IMPORTED_MODULE_13__.json2formData)(payload);\n            _context5.prev = 3;\n            _context5.next = 6;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__[\"default\"].post((0,_utils__WEBPACK_IMPORTED_MODULE_13__.buildUrl)(), formPayload);\n\n          case 6:\n            _yield$axios$post = _context5.sent;\n            data = _yield$axios$post.data;\n            return _context5.abrupt(\"return\", data);\n\n          case 11:\n            _context5.prev = 11;\n            _context5.t0 = _context5[\"catch\"](3);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__.parseAxiosError)(_context5.t0);\n\n          case 14:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[3, 11]]);\n  }));\n  return _createEnvironment.apply(this, arguments);\n}//# sourceURL=webpack-internal:///94040\n");

}),

5775:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"generateKey\": function() { return /* binding */ generateKey; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction generateKey() {\n  return _generateKey.apply(this, arguments);\n}\n\nfunction _generateKey() {\n  _generateKey = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$post, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(\"/endpoints/edge/generate-key\");\n\n          case 3:\n            _yield$axios$post = _context.sent;\n            data = _yield$axios$post.data;\n            return _context.abrupt(\"return\", data.edgeKey);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to generate key');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _generateKey.apply(this, arguments);\n}//# sourceURL=webpack-internal:///5775\n");

}),

31848:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getEnvironments\": function() { return /* binding */ getEnvironments; },\n/* harmony export */   \"getAgentVersions\": function() { return /* binding */ getAgentVersions; },\n/* harmony export */   \"getEndpoint\": function() { return /* binding */ getEndpoint; },\n/* harmony export */   \"snapshotEndpoints\": function() { return /* binding */ snapshotEndpoints; },\n/* harmony export */   \"snapshotEndpoint\": function() { return /* binding */ snapshotEndpoint; },\n/* harmony export */   \"endpointsByGroup\": function() { return /* binding */ endpointsByGroup; },\n/* harmony export */   \"disassociateEndpoint\": function() { return /* binding */ disassociateEndpoint; },\n/* harmony export */   \"updateEndpoint\": function() { return /* binding */ updateEndpoint; },\n/* harmony export */   \"deleteEndpoint\": function() { return /* binding */ deleteEndpoint; },\n/* harmony export */   \"updatePoolAccess\": function() { return /* binding */ updatePoolAccess; },\n/* harmony export */   \"forceUpdateService\": function() { return /* binding */ forceUpdateService; },\n/* harmony export */   \"updateSettings\": function() { return /* binding */ updateSettings; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ 59690);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils */ 55950);\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction getEnvironments() {\n  return _getEnvironments.apply(this, arguments);\n}\n\nfunction _getEnvironments() {\n  _getEnvironments = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _ref,\n        start,\n        limit,\n        _ref$sort,\n        sort,\n        _ref$query,\n        query,\n        url,\n        params,\n        response,\n        totalCount,\n        totalAvailable,\n        _args = arguments;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {\n              query: {}\n            }, start = _ref.start, limit = _ref.limit, _ref$sort = _ref.sort, sort = _ref$sort === void 0 ? {\n              by: '',\n              order: 'asc'\n            } : _ref$sort, _ref$query = _ref.query, query = _ref$query === void 0 ? {} : _ref$query;\n\n            if (!(query.tagIds && query.tagIds.length === 0)) {\n              _context.next = 3;\n              break;\n            }\n\n            return _context.abrupt(\"return\", {\n              totalCount: 0,\n              value: []\n            });\n\n          case 3:\n            url = (0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)();\n            params = _objectSpread({\n              start: start,\n              limit: limit,\n              sort: sort.by,\n              order: sort.order\n            }, query);\n            _context.prev = 5;\n            _context.next = 8;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].get(url, {\n              params: params\n            });\n\n          case 8:\n            response = _context.sent;\n            totalCount = response.headers['x-total-count'];\n            totalAvailable = response.headers['x-total-available'];\n            return _context.abrupt(\"return\", {\n              totalCount: parseInt(totalCount, 10),\n              value: response.data,\n              totalAvailable: parseInt(totalAvailable, 10)\n            });\n\n          case 14:\n            _context.prev = 14;\n            _context.t0 = _context[\"catch\"](5);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context.t0);\n\n          case 17:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[5, 14]]);\n  }));\n  return _getEnvironments.apply(this, arguments);\n}\n\nfunction getAgentVersions() {\n  return _getAgentVersions.apply(this, arguments);\n}\n\nfunction _getAgentVersions() {\n  _getAgentVersions = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    var response;\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(undefined, 'agent_versions'));\n\n          case 3:\n            response = _context2.sent;\n            return _context2.abrupt(\"return\", response.data);\n\n          case 7:\n            _context2.prev = 7;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context2.t0);\n\n          case 10:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 7]]);\n  }));\n  return _getAgentVersions.apply(this, arguments);\n}\n\nfunction getEndpoint(_x) {\n  return _getEndpoint.apply(this, arguments);\n}\n\nfunction _getEndpoint() {\n  _getEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(id) {\n    var _yield$axios$get, endpoint;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id));\n\n          case 3:\n            _yield$axios$get = _context3.sent;\n            endpoint = _yield$axios$get.data;\n            return _context3.abrupt(\"return\", endpoint);\n\n          case 8:\n            _context3.prev = 8;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context3.t0);\n\n          case 11:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 8]]);\n  }));\n  return _getEndpoint.apply(this, arguments);\n}\n\nfunction snapshotEndpoints() {\n  return _snapshotEndpoints.apply(this, arguments);\n}\n\nfunction _snapshotEndpoints() {\n  _snapshotEndpoints = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].post((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(undefined, 'snapshot'));\n\n          case 3:\n            _context4.next = 8;\n            break;\n\n          case 5:\n            _context4.prev = 5;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context4.t0);\n\n          case 8:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 5]]);\n  }));\n  return _snapshotEndpoints.apply(this, arguments);\n}\n\nfunction snapshotEndpoint(_x2) {\n  return _snapshotEndpoint.apply(this, arguments);\n}\n\nfunction _snapshotEndpoint() {\n  _snapshotEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(id) {\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.prev = 0;\n            _context5.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].post((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id, 'snapshot'));\n\n          case 3:\n            _context5.next = 8;\n            break;\n\n          case 5:\n            _context5.prev = 5;\n            _context5.t0 = _context5[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context5.t0);\n\n          case 8:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[0, 5]]);\n  }));\n  return _snapshotEndpoint.apply(this, arguments);\n}\n\nfunction endpointsByGroup(_x3, _x4, _x5, _x6) {\n  return _endpointsByGroup.apply(this, arguments);\n}\n\nfunction _endpointsByGroup() {\n  _endpointsByGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(groupId, start, limit, query) {\n    return regeneratorRuntime.wrap(function _callee6$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            return _context6.abrupt(\"return\", getEnvironments({\n              start: start,\n              limit: limit,\n              query: _objectSpread({\n                groupIds: [groupId]\n              }, query)\n            }));\n\n          case 1:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee6);\n  }));\n  return _endpointsByGroup.apply(this, arguments);\n}\n\nfunction disassociateEndpoint(_x7) {\n  return _disassociateEndpoint.apply(this, arguments);\n}\n\nfunction _disassociateEndpoint() {\n  _disassociateEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(id) {\n    return regeneratorRuntime.wrap(function _callee7$(_context7) {\n      while (1) {\n        switch (_context7.prev = _context7.next) {\n          case 0:\n            _context7.prev = 0;\n            _context7.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"][\"delete\"]((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id, 'association'));\n\n          case 3:\n            _context7.next = 8;\n            break;\n\n          case 5:\n            _context7.prev = 5;\n            _context7.t0 = _context7[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context7.t0);\n\n          case 8:\n          case \"end\":\n            return _context7.stop();\n        }\n      }\n    }, _callee7, null, [[0, 5]]);\n  }));\n  return _disassociateEndpoint.apply(this, arguments);\n}\n\nfunction uploadTLSFilesForEndpoint(_x8, _x9, _x10, _x11) {\n  return _uploadTLSFilesForEndpoint.apply(this, arguments);\n}\n\nfunction _uploadTLSFilesForEndpoint() {\n  _uploadTLSFilesForEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(id, tlscaCert, tlsCert, tlsKey) {\n    var uploadCert;\n    return regeneratorRuntime.wrap(function _callee8$(_context8) {\n      while (1) {\n        switch (_context8.prev = _context8.next) {\n          case 0:\n            uploadCert = function _uploadCert(type, cert) {\n              if (!cert) {\n                return null;\n              }\n\n              try {\n                return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].post(\"upload/tls/\".concat(type), cert, {\n                  params: {\n                    folder: id\n                  }\n                });\n              } catch (e) {\n                throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(e);\n              }\n            };\n\n            _context8.next = 3;\n            return Promise.all([uploadCert('ca', tlscaCert), uploadCert('cert', tlsCert), uploadCert('key', tlsKey)]);\n\n          case 3:\n          case \"end\":\n            return _context8.stop();\n        }\n      }\n    }, _callee8);\n  }));\n  return _uploadTLSFilesForEndpoint.apply(this, arguments);\n}\n\nfunction updateEndpoint(_x12, _x13) {\n  return _updateEndpoint.apply(this, arguments);\n}\n\nfunction _updateEndpoint() {\n  _updateEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(id, payload) {\n    var _yield$axios$put, endpoint;\n\n    return regeneratorRuntime.wrap(function _callee9$(_context9) {\n      while (1) {\n        switch (_context9.prev = _context9.next) {\n          case 0:\n            _context9.prev = 0;\n            _context9.next = 3;\n            return uploadTLSFilesForEndpoint(id, payload.TLSCACert, payload.TLSCert, payload.TLSKey);\n\n          case 3:\n            _context9.next = 5;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].put((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id), payload);\n\n          case 5:\n            _yield$axios$put = _context9.sent;\n            endpoint = _yield$axios$put.data;\n            return _context9.abrupt(\"return\", endpoint);\n\n          case 10:\n            _context9.prev = 10;\n            _context9.t0 = _context9[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context9.t0, 'Unable to update environment');\n\n          case 13:\n          case \"end\":\n            return _context9.stop();\n        }\n      }\n    }, _callee9, null, [[0, 10]]);\n  }));\n  return _updateEndpoint.apply(this, arguments);\n}\n\nfunction deleteEndpoint(_x14) {\n  return _deleteEndpoint.apply(this, arguments);\n}\n\nfunction _deleteEndpoint() {\n  _deleteEndpoint = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(id) {\n    return regeneratorRuntime.wrap(function _callee10$(_context10) {\n      while (1) {\n        switch (_context10.prev = _context10.next) {\n          case 0:\n            _context10.prev = 0;\n            _context10.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"][\"delete\"]((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id));\n\n          case 3:\n            _context10.next = 8;\n            break;\n\n          case 5:\n            _context10.prev = 5;\n            _context10.t0 = _context10[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context10.t0);\n\n          case 8:\n          case \"end\":\n            return _context10.stop();\n        }\n      }\n    }, _callee10, null, [[0, 5]]);\n  }));\n  return _deleteEndpoint.apply(this, arguments);\n}\n\nfunction updatePoolAccess(_x15, _x16, _x17, _x18, _x19, _x20) {\n  return _updatePoolAccess.apply(this, arguments);\n}\n\nfunction _updatePoolAccess() {\n  _updatePoolAccess = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(id, resourcePool, usersToAdd, teamsToAdd, usersToRemove, teamsToRemove) {\n    return regeneratorRuntime.wrap(function _callee11$(_context11) {\n      while (1) {\n        switch (_context11.prev = _context11.next) {\n          case 0:\n            _context11.prev = 0;\n            _context11.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].put(\"\".concat((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id, 'pools'), \"/\").concat(resourcePool, \"/access\"), {\n              usersToAdd: usersToAdd,\n              teamsToAdd: teamsToAdd,\n              usersToRemove: usersToRemove,\n              teamsToRemove: teamsToRemove\n            });\n\n          case 3:\n            _context11.next = 8;\n            break;\n\n          case 5:\n            _context11.prev = 5;\n            _context11.t0 = _context11[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context11.t0);\n\n          case 8:\n          case \"end\":\n            return _context11.stop();\n        }\n      }\n    }, _callee11, null, [[0, 5]]);\n  }));\n  return _updatePoolAccess.apply(this, arguments);\n}\n\nfunction forceUpdateService(_x21, _x22, _x23) {\n  return _forceUpdateService.apply(this, arguments);\n}\n\nfunction _forceUpdateService() {\n  _forceUpdateService = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(id, serviceID, pullImage) {\n    return regeneratorRuntime.wrap(function _callee12$(_context12) {\n      while (1) {\n        switch (_context12.prev = _context12.next) {\n          case 0:\n            _context12.prev = 0;\n            _context12.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].put((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id, 'forceupdateservice'), {\n              serviceID: serviceID,\n              pullImage: pullImage\n            });\n\n          case 3:\n            _context12.next = 8;\n            break;\n\n          case 5:\n            _context12.prev = 5;\n            _context12.t0 = _context12[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context12.t0);\n\n          case 8:\n          case \"end\":\n            return _context12.stop();\n        }\n      }\n    }, _callee12, null, [[0, 5]]);\n  }));\n  return _forceUpdateService.apply(this, arguments);\n}\n\nfunction updateSettings(_x24, _x25) {\n  return _updateSettings.apply(this, arguments);\n}\n\nfunction _updateSettings() {\n  _updateSettings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(id, settings) {\n    return regeneratorRuntime.wrap(function _callee13$(_context13) {\n      while (1) {\n        switch (_context13.prev = _context13.next) {\n          case 0:\n            _context13.prev = 0;\n            _context13.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].put((0,_utils__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id, 'settings'), settings);\n\n          case 3:\n            _context13.next = 8;\n            break;\n\n          case 5:\n            _context13.prev = 5;\n            _context13.t0 = _context13[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context13.t0);\n\n          case 8:\n          case \"end\":\n            return _context13.stop();\n        }\n      }\n    }, _callee13, null, [[0, 5]]);\n  }));\n  return _updateSettings.apply(this, arguments);\n}//# sourceURL=webpack-internal:///31848\n");

}),

55950:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildUrl\": function() { return /* binding */ buildUrl; },\n/* harmony export */   \"arrayToJson\": function() { return /* binding */ arrayToJson; },\n/* harmony export */   \"json2formData\": function() { return /* binding */ json2formData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildUrl(id, action) {\n  var baseUrl = 'endpoints';\n\n  if (id) {\n    baseUrl += \"/\".concat(id);\n  }\n\n  if (action) {\n    baseUrl += \"/\".concat(action);\n  }\n\n  return baseUrl;\n}\nfunction arrayToJson(arr) {\n  if (!arr) {\n    return '';\n  }\n\n  return JSON.stringify(arr);\n}\nfunction json2formData(json) {\n  var formData = new FormData();\n  Object.entries(json).forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        key = _ref2[0],\n        value = _ref2[1];\n\n    if (typeof value === 'undefined' || value === null) {\n      return;\n    }\n\n    formData.append(key, value);\n  });\n  return formData;\n}//# sourceURL=webpack-internal:///55950\n");

}),

18752:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _azure_endpoint_config_azure_endpoint_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./azure-endpoint-config/azure-endpoint-config */ 19376);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.environments', []).component('azureEndpointConfig', _azure_endpoint_config_azure_endpoint_config__WEBPACK_IMPORTED_MODULE_2__.azureEndpointConfig).name);//# sourceURL=webpack-internal:///18752\n");

}),

61335:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useAgentDetails\": function() { return /* binding */ useAgentDetails; }\n/* harmony export */ });\n/* harmony import */ var _portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/api/status.service */ 9251);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n\n\nfunction useAgentDetails() {\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__.useSettings)(function (settings) {\n    return settings.AgentSecret;\n  });\n  var versionQuery = (0,_portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_0__.useStatus)(function (status) {\n    return status.Version;\n  });\n\n  if (!versionQuery.isSuccess || !settingsQuery.isSuccess) {\n    return null;\n  }\n\n  var agentVersion = versionQuery.data;\n  var agentSecret = settingsQuery.data;\n  return {\n    agentVersion: agentVersion,\n    agentSecret: agentSecret\n  };\n}//# sourceURL=webpack-internal:///61335\n");

}),

95612:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useAgentVersionsList\": function() { return /* binding */ useAgentVersionsList; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _environment_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../environment.service */ 31848);\n\n\nfunction useAgentVersionsList() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', 'agentVersions'], function () {\n    return (0,_environment_service__WEBPACK_IMPORTED_MODULE_1__.getAgentVersions)();\n  });\n}//# sourceURL=webpack-internal:///95612\n");

}),

30417:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCreateAzureEnvironmentMutation\": function() { return /* binding */ useCreateAzureEnvironmentMutation; },\n/* harmony export */   \"useCreateLocalDockerEnvironmentMutation\": function() { return /* binding */ useCreateLocalDockerEnvironmentMutation; },\n/* harmony export */   \"useCreateLocalKubernetesEnvironmentMutation\": function() { return /* binding */ useCreateLocalKubernetesEnvironmentMutation; },\n/* harmony export */   \"useCreateRemoteEnvironmentMutation\": function() { return /* binding */ useCreateRemoteEnvironmentMutation; },\n/* harmony export */   \"useCreateAgentEnvironmentMutation\": function() { return /* binding */ useCreateAgentEnvironmentMutation; },\n/* harmony export */   \"useCreateEdgeAgentEnvironmentMutation\": function() { return /* binding */ useCreateEdgeAgentEnvironmentMutation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _environment_service_create__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../environment.service/create */ 94040);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction useCreateAzureEnvironmentMutation() {\n  return useGenericCreationMutation(_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createAzureEnvironment);\n}\nfunction useCreateLocalDockerEnvironmentMutation() {\n  return useGenericCreationMutation(_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createLocalDockerEnvironment);\n}\nfunction useCreateLocalKubernetesEnvironmentMutation() {\n  return useGenericCreationMutation(_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createLocalKubernetesEnvironment);\n}\nfunction useCreateRemoteEnvironmentMutation(creationType) {\n  return useGenericCreationMutation(function (params) {\n    return (0,_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createRemoteEnvironment)(_objectSpread({\n      creationType: creationType\n    }, params));\n  });\n}\nfunction useCreateAgentEnvironmentMutation() {\n  return useGenericCreationMutation(_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createAgentEnvironment);\n}\nfunction useCreateEdgeAgentEnvironmentMutation() {\n  return useGenericCreationMutation(_environment_service_create__WEBPACK_IMPORTED_MODULE_8__.createEdgeAgentEnvironment);\n}\n\nfunction useGenericCreationMutation(mutation) {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useMutation)(mutation, {\n    onSuccess: function onSuccess() {\n      return queryClient.invalidateQueries(['environments']);\n    },\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to create environment'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///30417\n");

}),

29765:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useEnvironment\": function() { return /* binding */ useEnvironment; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction useEnvironment(id) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQuery)(['environments', id], function () {\n    return id ? (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_8__.getEndpoint)(id) : null;\n  }, _objectSpread(_objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_9__.withError)('Failed loading environment')), {}, {\n    staleTime: 50,\n    enabled: !!id\n  }));\n}//# sourceURL=webpack-internal:///29765\n");

}),

86064:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ENVIRONMENTS_POLLING_INTERVAL\": function() { return /* binding */ ENVIRONMENTS_POLLING_INTERVAL; },\n/* harmony export */   \"refetchIfAnyOffline\": function() { return /* binding */ refetchIfAnyOffline; },\n/* harmony export */   \"useEnvironmentList\": function() { return /* binding */ useEnvironmentList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ 59690);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../types */ 23945);\n/* harmony import */ var _environment_service__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../environment.service */ 31848);\n\n\n\n\n\n\n\nvar _excluded = [\"page\", \"pageLimit\", \"sort\", \"order\"];\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\nvar ENVIRONMENTS_POLLING_INTERVAL = 30000; // in ms\n\nfunction refetchIfAnyOffline(data) {\n  if (!data) {\n    return false;\n  }\n\n  var hasOfflineEnvironment = data.value.some(function (env) {\n    return env.Status === _types__WEBPACK_IMPORTED_MODULE_12__.EnvironmentStatus.Down;\n  });\n\n  if (!hasOfflineEnvironment) {\n    return false;\n  }\n\n  return ENVIRONMENTS_POLLING_INTERVAL;\n}\nfunction useEnvironmentList() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$page = _ref.page,\n      page = _ref$page === void 0 ? 1 : _ref$page,\n      _ref$pageLimit = _ref.pageLimit,\n      pageLimit = _ref$pageLimit === void 0 ? 100 : _ref$pageLimit,\n      sort = _ref.sort,\n      order = _ref.order,\n      query = _objectWithoutProperties(_ref, _excluded);\n\n  var refetchInterval = arguments.length > 1 ? arguments[1] : undefined;\n  var staleTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  var enabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_10__.useQuery)(['environments', _objectSpread({\n    page: page,\n    pageLimit: pageLimit,\n    sort: sort,\n    order: order\n  }, query)], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var start;\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            start = (page - 1) * pageLimit + 1;\n            return _context.abrupt(\"return\", (0,_environment_service__WEBPACK_IMPORTED_MODULE_13__.getEnvironments)({\n              start: start,\n              limit: pageLimit,\n              sort: {\n                by: sort,\n                order: order\n              },\n              query: query\n            }));\n\n          case 2:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  })), _objectSpread({\n    staleTime: staleTime,\n    keepPreviousData: true,\n    refetchInterval: refetchInterval,\n    enabled: enabled\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withError)('Failure retrieving environments'))),\n      isLoading = _useQuery.isLoading,\n      data = _useQuery.data;\n\n  return {\n    isLoading: isLoading,\n    environments: data ? data.value : [],\n    totalCount: data ? data.totalCount : 0,\n    totalAvailable: data ? data.totalAvailable : 0\n  };\n}//# sourceURL=webpack-internal:///86064\n");

}),

23945:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentType\": function() { return /* binding */ EnvironmentType; },\n/* harmony export */   \"EdgeTypes\": function() { return /* binding */ EdgeTypes; },\n/* harmony export */   \"EnvironmentStatus\": function() { return /* binding */ EnvironmentStatus; },\n/* harmony export */   \"EnvironmentCreationTypes\": function() { return /* binding */ EnvironmentCreationTypes; },\n/* harmony export */   \"PlatformType\": function() { return /* binding */ PlatformType; }\n/* harmony export */ });\nvar EnvironmentType;\n\n(function (EnvironmentType) {\n  EnvironmentType[EnvironmentType[\"Docker\"] = 1] = \"Docker\";\n  EnvironmentType[EnvironmentType[\"AgentOnDocker\"] = 2] = \"AgentOnDocker\";\n  EnvironmentType[EnvironmentType[\"Azure\"] = 3] = \"Azure\";\n  EnvironmentType[EnvironmentType[\"EdgeAgentOnDocker\"] = 4] = \"EdgeAgentOnDocker\";\n  EnvironmentType[EnvironmentType[\"KubernetesLocal\"] = 5] = \"KubernetesLocal\";\n  EnvironmentType[EnvironmentType[\"AgentOnKubernetes\"] = 6] = \"AgentOnKubernetes\";\n  EnvironmentType[EnvironmentType[\"EdgeAgentOnKubernetes\"] = 7] = \"EdgeAgentOnKubernetes\";\n})(EnvironmentType || (EnvironmentType = {}));\n\nvar EdgeTypes = [EnvironmentType.EdgeAgentOnDocker, EnvironmentType.EdgeAgentOnKubernetes];\nvar EnvironmentStatus;\n\n(function (EnvironmentStatus) {\n  EnvironmentStatus[EnvironmentStatus[\"Up\"] = 1] = \"Up\";\n  EnvironmentStatus[EnvironmentStatus[\"Down\"] = 2] = \"Down\";\n})(EnvironmentStatus || (EnvironmentStatus = {}));\n\n/**\n * TS reference of endpoint_create.go#EndpointCreationType iota\n */\nvar EnvironmentCreationTypes;\n\n(function (EnvironmentCreationTypes) {\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"LocalDockerEnvironment\"] = 1] = \"LocalDockerEnvironment\";\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"AgentEnvironment\"] = 2] = \"AgentEnvironment\";\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"AzureEnvironment\"] = 3] = \"AzureEnvironment\";\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"EdgeAgentEnvironment\"] = 4] = \"EdgeAgentEnvironment\";\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"LocalKubernetesEnvironment\"] = 5] = \"LocalKubernetesEnvironment\";\n  EnvironmentCreationTypes[EnvironmentCreationTypes[\"KubeConfigEnvironment\"] = 6] = \"KubeConfigEnvironment\";\n})(EnvironmentCreationTypes || (EnvironmentCreationTypes = {}));\n\nvar PlatformType;\n\n(function (PlatformType) {\n  PlatformType[PlatformType[\"Docker\"] = 0] = \"Docker\";\n  PlatformType[PlatformType[\"Kubernetes\"] = 1] = \"Kubernetes\";\n  PlatformType[PlatformType[\"Azure\"] = 2] = \"Azure\";\n})(PlatformType || (PlatformType = {}));//# sourceURL=webpack-internal:///23945\n");

}),

57941:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPlatformType\": function() { return /* binding */ getPlatformType; },\n/* harmony export */   \"isDockerEnvironment\": function() { return /* binding */ isDockerEnvironment; },\n/* harmony export */   \"isKubernetesEnvironment\": function() { return /* binding */ isKubernetesEnvironment; },\n/* harmony export */   \"isAgentEnvironment\": function() { return /* binding */ isAgentEnvironment; },\n/* harmony export */   \"isEdgeEnvironment\": function() { return /* binding */ isEdgeEnvironment; },\n/* harmony export */   \"isUnassociatedEdgeEnvironment\": function() { return /* binding */ isUnassociatedEdgeEnvironment; },\n/* harmony export */   \"getRoute\": function() { return /* binding */ getRoute; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ 23945);\n\n\n\nfunction getPlatformType(envType) {\n  switch (envType) {\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.KubernetesLocal:\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.AgentOnKubernetes:\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.EdgeAgentOnKubernetes:\n      return _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Kubernetes;\n\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.Docker:\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.AgentOnDocker:\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.EdgeAgentOnDocker:\n      return _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Docker;\n\n    case _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.Azure:\n      return _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Azure;\n\n    default:\n      throw new Error(\"\".concat(envType, \" is not a supported environment type\"));\n  }\n}\nfunction isDockerEnvironment(envType) {\n  return getPlatformType(envType) === _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Docker;\n}\nfunction isKubernetesEnvironment(envType) {\n  return getPlatformType(envType) === _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Kubernetes;\n}\nfunction isAgentEnvironment(envType) {\n  return isEdgeEnvironment(envType) || [_types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.AgentOnDocker, _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.AgentOnKubernetes].includes(envType);\n}\nfunction isEdgeEnvironment(envType) {\n  return [_types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.EdgeAgentOnDocker, _types__WEBPACK_IMPORTED_MODULE_2__.EnvironmentType.EdgeAgentOnKubernetes].includes(envType);\n}\nfunction isUnassociatedEdgeEnvironment(env) {\n  return isEdgeEnvironment(env.Type) && !env.EdgeID;\n}\nfunction getRoute(environment) {\n  if (isEdgeEnvironment(environment.Type) && !environment.EdgeID) {\n    return 'portainer.endpoints.endpoint';\n  }\n\n  var platform = getPlatformType(environment.Type);\n\n  switch (platform) {\n    case _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Azure:\n      return 'azure.dashboard';\n\n    case _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Docker:\n      return 'docker.dashboard';\n\n    case _types__WEBPACK_IMPORTED_MODULE_2__.PlatformType.Kubernetes:\n      return 'kubernetes.dashboard';\n\n    default:\n      return '';\n  }\n}//# sourceURL=webpack-internal:///57941\n");

}),

20023:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PortainerError; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.set-prototype-of.js */ 42086);\n/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.get-prototype-of.js */ 87028);\n/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.reflect.construct.js */ 90029);\n/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.map.js */ 5434);\n/* harmony import */ var core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } Object.defineProperty(subClass, \"prototype\", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar PortainerError = /*#__PURE__*/function (_Error) {\n  _inherits(PortainerError, _Error);\n\n  var _super = _createSuper(PortainerError);\n\n  function PortainerError(msg, err) {\n    var _this;\n\n    _classCallCheck(this, PortainerError);\n\n    _this = _super.call(this, msg);\n    _this.err = err;\n    return _this;\n  }\n\n  return _createClass(PortainerError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\n//# sourceURL=webpack-internal:///20023\n");

}),

26196:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Edition\": function() { return /* binding */ Edition; },\n/* harmony export */   \"FeatureState\": function() { return /* binding */ FeatureState; },\n/* harmony export */   \"FeatureId\": function() { return /* binding */ FeatureId; }\n/* harmony export */ });\nvar Edition;\n\n(function (Edition) {\n  Edition[Edition[\"CE\"] = 0] = \"CE\";\n  Edition[Edition[\"BE\"] = 1] = \"BE\";\n})(Edition || (Edition = {}));\n\nvar FeatureState;\n\n(function (FeatureState) {\n  FeatureState[FeatureState[\"HIDDEN\"] = 0] = \"HIDDEN\";\n  FeatureState[FeatureState[\"VISIBLE\"] = 1] = \"VISIBLE\";\n  FeatureState[FeatureState[\"LIMITED_BE\"] = 2] = \"LIMITED_BE\";\n})(FeatureState || (FeatureState = {}));\n\nvar FeatureId;\n\n(function (FeatureId) {\n  FeatureId[\"K8S_RESOURCE_POOL_LB_QUOTA\"] = \"k8s-resourcepool-Ibquota\";\n  FeatureId[\"K8S_RESOURCE_POOL_STORAGE_QUOTA\"] = \"k8s-resourcepool-storagequota\";\n  FeatureId[\"K8S_CREATE_FROM_KUBECONFIG\"] = \"k8s-create-from-kubeconfig\";\n  FeatureId[\"KAAS_PROVISIONING\"] = \"kaas-provisioning\";\n  FeatureId[\"NOMAD\"] = \"nomad\";\n  FeatureId[\"RBAC_ROLES\"] = \"rbac-roles\";\n  FeatureId[\"REGISTRY_MANAGEMENT\"] = \"registry-management\";\n  FeatureId[\"K8S_SETUP_DEFAULT\"] = \"k8s-setup-default\";\n  FeatureId[\"S3_BACKUP_SETTING\"] = \"s3-backup-setting\";\n  FeatureId[\"HIDE_INTERNAL_AUTHENTICATION_PROMPT\"] = \"hide-internal-authentication-prompt\";\n  FeatureId[\"TEAM_MEMBERSHIP\"] = \"team-membership\";\n  FeatureId[\"HIDE_INTERNAL_AUTH\"] = \"hide-internal-auth\";\n  FeatureId[\"EXTERNAL_AUTH_LDAP\"] = \"external-auth-ldap\";\n  FeatureId[\"ACTIVITY_AUDIT\"] = \"activity-audit\";\n  FeatureId[\"FORCE_REDEPLOYMENT\"] = \"force-redeployment\";\n  FeatureId[\"HIDE_AUTO_UPDATE_WINDOW\"] = \"hide-auto-update-window\";\n  FeatureId[\"STACK_PULL_IMAGE\"] = \"stack-pull-image\";\n  FeatureId[\"STACK_WEBHOOK\"] = \"stack-webhook\";\n  FeatureId[\"CONTAINER_WEBHOOK\"] = \"container-webhook\";\n  FeatureId[\"POD_SECURITY_POLICY_CONSTRAINT\"] = \"pod-security-policy-constraint\";\n  FeatureId[\"HIDE_DOCKER_HUB_ANONYMOUS\"] = \"hide-docker-hub-anonymous\";\n  FeatureId[\"CUSTOM_LOGIN_BANNER\"] = \"custom-login-banner\";\n})(FeatureId || (FeatureId = {}));//# sourceURL=webpack-internal:///26196\n");

}),

20037:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isBE\": function() { return /* binding */ isBE; },\n/* harmony export */   \"init\": function() { return /* binding */ init; },\n/* harmony export */   \"selectShow\": function() { return /* binding */ selectShow; },\n/* harmony export */   \"isLimitedToBE\": function() { return /* binding */ isLimitedToBE; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./enums */ 26196);\n\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nvar isBE = \"CE\" === 'BE';\nvar state = {\n  currentEdition: _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.CE,\n  features: {}\n};\nfunction init(_x) {\n  return _init.apply(this, arguments);\n}\n\nfunction _init() {\n  _init = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(edition) {\n    var _features;\n\n    var currentEdition, features;\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            // will be loaded on runtime\n            currentEdition = edition;\n            features = (_features = {}, _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.K8S_RESOURCE_POOL_LB_QUOTA, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.K8S_CREATE_FROM_KUBECONFIG, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.KAAS_PROVISIONING, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.NOMAD, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.ACTIVITY_AUDIT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.EXTERNAL_AUTH_LDAP, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.HIDE_INTERNAL_AUTH, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.HIDE_INTERNAL_AUTHENTICATION_PROMPT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.K8S_SETUP_DEFAULT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.RBAC_ROLES, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.REGISTRY_MANAGEMENT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.S3_BACKUP_SETTING, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.TEAM_MEMBERSHIP, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.FORCE_REDEPLOYMENT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.HIDE_AUTO_UPDATE_WINDOW, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.STACK_PULL_IMAGE, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.STACK_WEBHOOK, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.CONTAINER_WEBHOOK, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.POD_SECURITY_POLICY_CONSTRAINT, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.HIDE_DOCKER_HUB_ANONYMOUS, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _defineProperty(_features, _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureId.CUSTOM_LOGIN_BANNER, _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE), _features);\n            state.currentEdition = currentEdition;\n            state.features = features;\n\n          case 4:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _init.apply(this, arguments);\n}\n\nfunction selectShow(featureId) {\n  if (!featureId) {\n    return _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.VISIBLE;\n  }\n\n  if (!state.features[featureId]) {\n    return _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.HIDDEN;\n  }\n\n  if (state.features[featureId] <= state.currentEdition) {\n    return _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.VISIBLE;\n  }\n\n  if (state.features[featureId] === _enums__WEBPACK_IMPORTED_MODULE_3__.Edition.BE) {\n    return _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.LIMITED_BE;\n  }\n\n  return _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.HIDDEN;\n}\nfunction isLimitedToBE(featureId) {\n  return selectShow(featureId) === _enums__WEBPACK_IMPORTED_MODULE_3__.FeatureState.LIMITED_BE;\n}//# sourceURL=webpack-internal:///20037\n");

}),

48851:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _limited_feature_directive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./limited-feature.directive */ 42134);\n/* harmony import */ var _feature_flags_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./feature-flags.css */ 27840);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.feature-flags', []).directive('limitedFeatureDir', _limited_feature_directive__WEBPACK_IMPORTED_MODULE_2__.limitedFeatureDirective).name);//# sourceURL=webpack-internal:///48851\n");

}),

42134:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"limitedFeatureDirective\": function() { return /* binding */ limitedFeatureDirective; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/kebabCase */ 83161);\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_kebabCase__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59886);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ 24378);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _feature_flags_service__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./feature-flags.service */ 20037);\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BASENAME = 'limitedFeature';\n/* @ngInject */\n\nfunction limitedFeatureDirective() {\n  return {\n    restrict: 'A',\n    link: link\n  };\n\n  function link(scope, elem, attrs) {\n    var featureId = attrs.limitedFeatureDir;\n\n    if (!featureId) {\n      return;\n    }\n\n    var limitedFeatureAttrs = Object.keys(attrs).filter(function (attr) {\n      return attr.startsWith(BASENAME) && attr !== \"\".concat(BASENAME, \"Dir\");\n    }).map(function (attr) {\n      return [lodash_kebabCase__WEBPACK_IMPORTED_MODULE_9___default()(attr.replace(BASENAME, '')), attrs[attr]];\n    });\n    var state = (0,_feature_flags_service__WEBPACK_IMPORTED_MODULE_21__.selectShow)(featureId);\n\n    if (state === _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_20__.FeatureState.HIDDEN) {\n      elem.hide();\n      return;\n    }\n\n    if (state === _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_20__.FeatureState.VISIBLE) {\n      return;\n    }\n\n    limitedFeatureAttrs.forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          attr = _ref2[0],\n          _ref2$ = _ref2[1],\n          value = _ref2$ === void 0 ? attr : _ref2$;\n\n      var currentValue = elem.attr(attr) || '';\n      elem.attr(attr, \"\".concat(currentValue, \" \").concat(value).trim());\n    });\n  }\n}//# sourceURL=webpack-internal:///42134\n");

}),

31947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FeatureFlag\": function() { return /* binding */ FeatureFlag; },\n/* harmony export */   \"useFeatureFlag\": function() { return /* binding */ useFeatureFlag; },\n/* harmony export */   \"useRedirectFeatureFlag\": function() { return /* binding */ useRedirectFeatureFlag; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n\n\nvar FeatureFlag;\n\n(function (FeatureFlag) {\n  FeatureFlag[\"EdgeRemoteUpdate\"] = \"edgeRemoteUpdate\";\n})(FeatureFlag || (FeatureFlag = {}));\n\nfunction useFeatureFlag(flag) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      onSuccess = _ref.onSuccess;\n\n  return (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__.usePublicSettings)({\n    select: function select(settings) {\n      return settings.Features[flag];\n    },\n    onSuccess: onSuccess\n  });\n}\nfunction useRedirectFeatureFlag(flag) {\n  var to = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'portainer.home';\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useRouter)();\n  useFeatureFlag(flag, {\n    onSuccess: function onSuccess(isEnabled) {\n      if (!isEnabled) {\n        router.stateService.go(to);\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///31947\n");

}),

19990:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"promiseSequence\": function() { return /* binding */ promiseSequence; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * runs the provided promises in a sequence, and returns a promise that resolves when all promises have resolved\n *\n * @param promises a list of functions that return promises\n */\nfunction promiseSequence(promises) {\n  return promises.reduce(function (promise, nextPromise) {\n    return promise.then(function () {\n      return nextPromise();\n    });\n  }, Promise.resolve(undefined));\n}//# sourceURL=webpack-internal:///19990\n");

}),

23514:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"pluralize\": function() { return /* binding */ pluralize; },\n/* harmony export */   \"addPlural\": function() { return /* binding */ addPlural; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction pluralize(val, word) {\n  var plural = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\".concat(word, \"s\");\n  return [1, -1].includes(Number(val)) ? word : plural;\n}\nfunction addPlural(value, word) {\n  var plural = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\".concat(word, \"s\");\n  return \"\".concat(value, \" \").concat(pluralize(value, word, plural));\n}//# sourceURL=webpack-internal:///23514\n");

}),

17012:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"file\": function() { return /* binding */ file; },\n/* harmony export */   \"withFileSize\": function() { return /* binding */ withFileSize; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! yup */ 95085);\n\n\nfunction file() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_1__.mixed)();\n}\nfunction withFileSize(fileValidation, maxSize) {\n  return fileValidation.test('fileSize', 'Selected file is too big.', validateFileSize);\n\n  function validateFileSize(file) {\n    if (!file) {\n      return true;\n    }\n\n    return file.size <= maxSize;\n  }\n}//# sourceURL=webpack-internal:///17012\n");

}),

26459:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BackupFailedPanel\": function() { return /* binding */ BackupFailedPanel; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/InformationPanel */ 83302);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _services_api_backup_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../services/api/backup.service */ 55202);\n/* harmony import */ var _filters_filters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../filters/filters */ 41066);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction BackupFailedPanel() {\n  var _useBackupStatus = useBackupStatus(),\n      status = _useBackupStatus.status,\n      isLoading = _useBackupStatus.isLoading;\n\n  if (isLoading || !status || !status.Failed) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_InformationPanel__WEBPACK_IMPORTED_MODULE_2__.InformationPanel, {\n    title: \"Information\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_3__.TextTip, {\n      children: [\"The latest automated backup has failed at \", (0,_filters_filters__WEBPACK_IMPORTED_MODULE_6__.isoDate)(status.TimestampUTC), \". For details please see the log files and have a look at the\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_4__.Link, {\n        to: \"portainer.settings\",\n        children: \"settings\"\n      }), \" to verify the backup configuration.\"]\n    })\n  });\n}\n\nfunction useBackupStatus() {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['backup', 'status'], function () {\n    return (0,_services_api_backup_service__WEBPACK_IMPORTED_MODULE_5__.getBackupStatus)();\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', error, 'Failed to get license info');\n    }\n  }),\n      data = _useQuery.data,\n      isLoading = _useQuery.isLoading;\n\n  return {\n    status: data,\n    isLoading: isLoading\n  };\n}//# sourceURL=webpack-internal:///26459\n");

}),

73494:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeLoadingSpinner\": function() { return /* binding */ EdgeLoadingSpinner; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _EdgeLoadingSpinner_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EdgeLoadingSpinner.module.css */ 7949);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction EdgeLoadingSpinner() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('row', _EdgeLoadingSpinner_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].root),\n    children: [\"Connecting to the Edge environment...\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n      className: \"fa fa-cog fa-spin space-left\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///73494\n");

}),

39778:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AgentVersionTag\": function() { return /* binding */ AgentVersionTag; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-feather */ 48837);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction AgentVersionTag(_ref) {\n  var type = _ref.type,\n      version = _ref.version;\n\n  if (!(0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_0__.isAgentEnvironment)(type)) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"span\", {\n    className: \"space-x-1\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"span\", {\n      children: [\"+ \", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        className: \"icon icon-xs vertical-center\",\n        \"aria-hidden\": \"true\"\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n      children: (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_0__.isEdgeEnvironment)(type) ? 'Edge Agent' : 'Agent'\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n      children: version\n    })]\n  });\n}//# sourceURL=webpack-internal:///39778\n");

}),

63504:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeIndicator\": function() { return /* binding */ EdgeIndicator; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EdgeIndicator(_ref) {\n  var environment = _ref.environment,\n      _ref$showLastCheckInD = _ref.showLastCheckInDate,\n      showLastCheckInDate = _ref$showLastCheckInD === void 0 ? false : _ref$showLastCheckInD;\n  var associated = !!environment.EdgeID;\n  var isValid = useHasHeartbeat(environment, associated);\n\n  if (isValid === null) {\n    return null;\n  }\n\n  if (!associated) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      role: \"status\",\n      \"aria-label\": \"edge-status\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n        className: \"label label-default\",\n        \"aria-label\": \"unassociated\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"s\", {\n          children: \"associated\"\n        })\n      })\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n    role: \"status\",\n    \"aria-label\": \"edge-status\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('label', {\n        'label-danger': !isValid,\n        'label-success': isValid\n      }),\n      \"aria-label\": \"edge-heartbeat\",\n      children: \"heartbeat\"\n    }), showLastCheckInDate && !!environment.LastCheckInDate && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      className: \"space-left small text-muted\",\n      \"aria-label\": \"edge-last-checkin\",\n      children: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_13__.isoDateFromTimestamp)(environment.LastCheckInDate)\n    })]\n  });\n}\n\nfunction useHasHeartbeat(environment, associated) {\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_14__.usePublicSettings)({\n    enabled: associated\n  });\n\n  if (!associated) {\n    return false;\n  }\n\n  var LastCheckInDate = environment.LastCheckInDate,\n      QueryDate = environment.QueryDate;\n  var settings = settingsQuery.data;\n\n  if (!settings) {\n    return null;\n  }\n\n  var checkInInterval = getCheckinInterval(environment, settings);\n\n  if (checkInInterval && QueryDate && LastCheckInDate) {\n    return QueryDate - LastCheckInDate <= checkInInterval * 2 + 20;\n  }\n\n  return false;\n}\n\nfunction getCheckinInterval(environment, settings) {\n  var asyncMode = environment.Edge.AsyncMode;\n\n  if (asyncMode) {\n    var intervals = [environment.Edge.PingInterval > 0 ? environment.Edge.PingInterval : settings.Edge.PingInterval, environment.Edge.SnapshotInterval > 0 ? environment.Edge.SnapshotInterval : settings.Edge.SnapshotInterval, environment.Edge.CommandInterval > 0 ? environment.Edge.CommandInterval : settings.Edge.CommandInterval].filter(function (n) {\n      return n > 0;\n    });\n    return intervals.length > 0 ? Math.min.apply(Math, _toConsumableArray(intervals)) : 60;\n  }\n\n  if (!environment.EdgeCheckinInterval || environment.EdgeCheckinInterval === 0) {\n    return settings.Edge.CheckinInterval;\n  }\n\n  return environment.EdgeCheckinInterval;\n}//# sourceURL=webpack-internal:///63504\n");

}),

20585:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentIcon\": function() { return /* binding */ EnvironmentIcon; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _assets_images_edge_endpoint_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/images/edge_endpoint.png */ 69962);\n/* harmony import */ var _assets_images_kubernetes_endpoint_png__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/images/kubernetes_endpoint.png */ 51070);\n/* harmony import */ var _assets_images_kubernetes_edge_endpoint_png__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/assets/images/kubernetes_edge_endpoint.png */ 94233);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _assets_ico_vendor_azure_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/assets/ico/vendor/azure.svg */ 93261);\n/* harmony import */ var _assets_ico_vendor_docker_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/assets/ico/vendor/docker.svg */ 84670);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction EnvironmentIcon(_ref) {\n  var type = _ref.type;\n\n  switch (type) {\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.AgentOnDocker:\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.Docker:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n        src: _assets_ico_vendor_docker_svg__WEBPACK_IMPORTED_MODULE_7__,\n        width: \"60\",\n        alt: \"azure endpoint\",\n        \"aria-hidden\": \"true\"\n      });\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.Azure:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n        src: _assets_ico_vendor_azure_svg__WEBPACK_IMPORTED_MODULE_6__,\n        width: \"60\",\n        alt: \"azure endpoint\",\n        \"aria-hidden\": \"true\"\n      });\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.EdgeAgentOnDocker:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n        src: _assets_images_edge_endpoint_png__WEBPACK_IMPORTED_MODULE_2__,\n        alt: \"docker edge endpoint\",\n        \"aria-hidden\": \"true\"\n      });\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.KubernetesLocal:\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.AgentOnKubernetes:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n        src: _assets_images_kubernetes_endpoint_png__WEBPACK_IMPORTED_MODULE_3__,\n        alt: \"kubernetes endpoint\",\n        \"aria-hidden\": \"true\"\n      });\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_5__.EnvironmentType.EdgeAgentOnKubernetes:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n        src: _assets_images_kubernetes_edge_endpoint_png__WEBPACK_IMPORTED_MODULE_4__,\n        alt: \"kubernetes edge endpoint\",\n        \"aria-hidden\": \"true\"\n      });\n\n    default:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"i\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('fa-4x', 'blue-icon', (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__.environmentTypeIcon)(type)),\n        \"aria-hidden\": \"true\"\n      });\n  }\n}//# sourceURL=webpack-internal:///20585\n");

}),

13487:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentItem\": function() { return /* binding */ EnvironmentItem; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react-feather */ 86225);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react-feather */ 51355);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react-feather */ 3915);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _portainer_tags_queries__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/tags/queries */ 22878);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _EnvironmentIcon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./EnvironmentIcon */ 20585);\n/* harmony import */ var _EdgeIndicator__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./EdgeIndicator */ 63504);\n/* harmony import */ var _EnvironmentStats__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./EnvironmentStats */ 17704);\n/* harmony import */ var _EnvironmentItem_module_css__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./EnvironmentItem.module.css */ 21001);\n/* harmony import */ var _EnvironmentStatusBadge__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./EnvironmentStatusBadge */ 13743);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EnvironmentItem(_ref) {\n  var _environment$Gpus;\n\n  var environment = _ref.environment,\n      onClick = _ref.onClick,\n      groupName = _ref.groupName;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_11__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var isEdge = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__.isEdgeEnvironment)(environment.Type);\n  var snapshotTime = getSnapshotTime(environment);\n  var tags = useEnvironmentTagNames(environment.TagIds);\n  var route = getRoute(environment);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n    className: _EnvironmentItem_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].root,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"button\", {\n      type: \"button\",\n      onClick: function (_onClick) {\n        function onClick() {\n          return _onClick.apply(this, arguments);\n        }\n\n        onClick.toString = function () {\n          return _onClick.toString();\n        };\n\n        return onClick;\n      }(function () {\n        return onClick(environment);\n      }),\n      className: _EnvironmentItem_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].wrapperButton,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('blocklist-item no-link', _EnvironmentItem_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].item),\n        to: route,\n        params: {\n          endpointId: environment.Id,\n          id: environment.Id\n        },\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n          className: \"blocklist-item-box\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('blocklist-item-logo', 'endpoint-item'),\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_EnvironmentIcon__WEBPACK_IMPORTED_MODULE_15__.EnvironmentIcon, {\n              type: environment.Type\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n            className: \"col-sm-12\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n              className: \"blocklist-item-line endpoint-item\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                  className: \"blocklist-item-title endpoint-item\",\n                  children: environment.Name\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                  className: \"space-left blocklist-item-subtitle\",\n                  children: isEdge ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_EdgeIndicator__WEBPACK_IMPORTED_MODULE_16__.EdgeIndicator, {\n                    environment: environment,\n                    showLastCheckInDate: true\n                  }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_EnvironmentStatusBadge__WEBPACK_IMPORTED_MODULE_19__.EnvironmentStatusBadge, {\n                      status: environment.Status\n                    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                      className: \"space-left small text-muted\",\n                      children: snapshotTime\n                    })]\n                  })\n                })]\n              }), groupName && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n                className: \"small space-right\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                  children: \"\\u7FA4\\u7EC4: \"\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                  children: groupName\n                })]\n              })]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_EnvironmentStats__WEBPACK_IMPORTED_MODULE_17__.EnvironmentStats, {\n              environment: environment\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n              className: \"blocklist-item-line endpoint-item\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n                className: \"small text-muted space-x-2\",\n                children: [(0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__.isDockerEnvironment)(environment.Type) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                  children: environment.Snapshots.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n                    className: \"small text-muted vertical-center\",\n                    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n                      className: \"icon icon-sm space-right\",\n                      \"aria-hidden\": \"true\"\n                    }), environment.Snapshots[0].TotalCPU, \" CPU\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_12__.Icon, {\n                      icon: \"svg-memory\",\n                      className: \"icon icon-sm space-right\"\n                    }), (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_7__.humanize)(environment.Snapshots[0].TotalMemory), \" RAM\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n                      className: \"icon icon-sm space-right\",\n                      \"aria-hidden\": \"true\"\n                    }), (_environment$Gpus = environment.Gpus) === null || _environment$Gpus === void 0 ? void 0 : _environment$Gpus.length, \" GPU\"]\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"span\", {\n                  className: \"vertical-center\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n                    className: \"icon icon-sm space-right\",\n                    \"aria-hidden\": \"true\"\n                  }), tags]\n                })]\n              }), !isEdge && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"span\", {\n                className: \"small text-muted\",\n                children: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_7__.stripProtocol)(environment.URL)\n              })]\n            })]\n          })]\n        })\n      })\n    }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n      to: \"portainer.endpoints.endpoint\",\n      params: {\n        id: environment.Id\n      },\n      className: _EnvironmentItem_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].editButton,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n        color: \"link\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n          className: \"icon icon-md\",\n          \"aria-hidden\": \"true\"\n        })\n      })\n    })]\n  });\n}\n\nfunction useEnvironmentTagNames(tagIds) {\n  var _useTags = (0,_portainer_tags_queries__WEBPACK_IMPORTED_MODULE_10__.useTags)(function (tags) {\n    if (!tagIds) {\n      return [];\n    }\n\n    return lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(tagIds.map(function (id) {\n      return tags.find(function (tag) {\n        return tag.ID === id;\n      });\n    }).map(function (tag) {\n      return tag === null || tag === void 0 ? void 0 : tag.Name;\n    }));\n  }),\n      tags = _useTags.tags,\n      isLoading = _useTags.isLoading;\n\n  if (tags && tags.length > 0) {\n    return tags.join(', ');\n  }\n\n  if (isLoading) {\n    return '正在加载标记...';\n  }\n\n  return '没有标记';\n}\n\nfunction getSnapshotTime(environment) {\n  var platform = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__.getPlatformType)(environment.Type);\n\n  switch (platform) {\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__.PlatformType.Docker:\n      return environment.Snapshots.length > 0 ? (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_7__.isoDateFromTimestamp)(environment.Snapshots[0].Time) : null;\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__.PlatformType.Kubernetes:\n      return environment.Kubernetes.Snapshots && environment.Kubernetes.Snapshots.length > 0 ? (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_7__.isoDateFromTimestamp)(environment.Kubernetes.Snapshots[0].Time) : null;\n\n    default:\n      return null;\n  }\n}\n\nfunction getRoute(environment) {\n  if ((0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__.isEdgeEnvironment)(environment.Type) && !environment.EdgeID) {\n    return 'portainer.endpoints.endpoint';\n  }\n\n  var platform = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_9__.getPlatformType)(environment.Type);\n\n  switch (platform) {\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__.PlatformType.Azure:\n      return 'azure.dashboard';\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__.PlatformType.Docker:\n      return 'docker.dashboard';\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_8__.PlatformType.Kubernetes:\n      return 'kubernetes.dashboard';\n\n    default:\n      return '';\n  }\n}//# sourceURL=webpack-internal:///13487\n");

}),

17704:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentStats\": function() { return /* binding */ EnvironmentStats; }\n/* harmony export */ });\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _EnvironmentStatsDocker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EnvironmentStatsDocker */ 79966);\n/* harmony import */ var _EnvironmentStatsKubernetes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EnvironmentStatsKubernetes */ 12315);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction EnvironmentStats(_ref) {\n  var environment = _ref.environment;\n  var platform = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_1__.getPlatformType)(environment.Type);\n\n  switch (platform) {\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_0__.PlatformType.Kubernetes:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_EnvironmentStatsKubernetes__WEBPACK_IMPORTED_MODULE_3__.EnvironmentStatsKubernetes, {\n        snapshots: environment.Kubernetes.Snapshots || [],\n        type: environment.Type,\n        agentVersion: environment.Agent.Version\n      });\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_0__.PlatformType.Docker:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_EnvironmentStatsDocker__WEBPACK_IMPORTED_MODULE_2__.EnvironmentStatsDocker, {\n        snapshots: environment.Snapshots,\n        type: environment.Type,\n        agentVersion: environment.Agent.Version\n      });\n\n    default:\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n        className: \"blocklist-item-line endpoint-item\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n          className: \"blocklist-item-desc\",\n          children: \"-\"\n        })\n      });\n  }\n}//# sourceURL=webpack-internal:///17704\n");

}),

79966:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentStatsDocker\": function() { return /* binding */ EnvironmentStatsDocker; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/strings */ 23514);\n/* harmony import */ var _AgentVersionTag__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AgentVersionTag */ 39778);\n/* harmony import */ var _EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EnvironmentStatsItem */ 64867);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction EnvironmentStatsDocker(_ref) {\n  var _ref$snapshots = _ref.snapshots,\n      snapshots = _ref$snapshots === void 0 ? [] : _ref$snapshots,\n      type = _ref.type,\n      agentVersion = _ref.agentVersion;\n\n  if (snapshots.length === 0) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n      className: \"blocklist-item-line endpoint-item\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n        className: \"blocklist-item-desc\",\n        children: \"No snapshot available\"\n      })\n    });\n  }\n\n  var snapshot = snapshots[0];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n    className: \"blocklist-item-line endpoint-item\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n      className: \"blocklist-item-desc\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(snapshot.StackCount, 'stack'),\n        icon: \"layers\",\n        featherIcon: true\n      }), !!snapshot.Swarm && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(snapshot.ServiceCount, 'service'),\n        icon: \"shuffle\",\n        featherIcon: true\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ContainerStats, {\n        running: snapshot.RunningContainerCount,\n        stopped: snapshot.StoppedContainerCount,\n        healthy: snapshot.HealthyContainerCount,\n        unhealthy: snapshot.UnhealthyContainerCount\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(snapshot.VolumeCount, 'volume'),\n        icon: \"database\",\n        featherIcon: true\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(snapshot.ImageCount, 'image'),\n        icon: \"list\",\n        featherIcon: true\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n      className: \"small text-muted space-x-2 vertical-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n        children: [snapshot.Swarm ? 'Swarm' : 'Standalone', \" \", snapshot.DockerVersion]\n      }), snapshot.Swarm && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(snapshot.NodeCount, 'node'),\n        icon: \"hard-drive\",\n        featherIcon: true\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_AgentVersionTag__WEBPACK_IMPORTED_MODULE_1__.AgentVersionTag, {\n        version: agentVersion,\n        type: type\n      })]\n    })]\n  });\n}\n\nfunction ContainerStats(_ref2) {\n  var running = _ref2.running,\n      stopped = _ref2.stopped,\n      healthy = _ref2.healthy,\n      unhealthy = _ref2.unhealthy;\n  var containersCount = running + stopped;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n    value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_0__.addPlural)(containersCount, 'container'),\n    icon: \"box\",\n    featherIcon: true,\n    children: containersCount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n      className: \"space-x-2 space-right\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: running,\n        icon: \"power\",\n        featherIcon: true,\n        iconClass: \"icon-success\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: stopped,\n        icon: \"power\",\n        featherIcon: true,\n        iconClass: \"icon-danger\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: healthy,\n        icon: \"heart\",\n        featherIcon: true,\n        iconClass: \"icon-success\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_2__.Stat, {\n        value: unhealthy,\n        icon: \"heart\",\n        featherIcon: true,\n        iconClass: \"icon-warning\"\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///79966\n");

}),

64867:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Stat\": function() { return /* binding */ Stat; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction Stat(_ref) {\n  var value = _ref.value,\n      icon = _ref.icon,\n      children = _ref.children,\n      featherIcon = _ref.featherIcon,\n      iconClass = _ref.iconClass;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"span\", {\n    className: \"vertical-center space-right\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('icon icon-sm space-right', iconClass),\n      icon: icon,\n      feather: featherIcon\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      children: value\n    }), children && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      className: \"space-left\",\n      children: children\n    })]\n  });\n}//# sourceURL=webpack-internal:///64867\n");

}),

12315:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentStatsKubernetes\": function() { return /* binding */ EnvironmentStatsKubernetes; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/helpers/strings */ 23514);\n/* harmony import */ var _AgentVersionTag__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AgentVersionTag */ 39778);\n/* harmony import */ var _EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EnvironmentStatsItem */ 64867);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction EnvironmentStatsKubernetes(_ref) {\n  var _ref$snapshots = _ref.snapshots,\n      snapshots = _ref$snapshots === void 0 ? [] : _ref$snapshots,\n      type = _ref.type,\n      agentVersion = _ref.agentVersion;\n\n  if (snapshots.length === 0) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"blocklist-item-line endpoint-item\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        className: \"blocklist-item-desc\",\n        children: \"No snapshot available\"\n      })\n    });\n  }\n\n  var snapshot = snapshots[0];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: \"blocklist-item-line endpoint-item\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n      className: \"blocklist-item-desc space-x-1\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_3__.Stat, {\n        icon: \"cpu\",\n        featherIcon: true,\n        value: \"\".concat(snapshot.TotalCPU, \" CPU\")\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_3__.Stat, {\n        icon: \"svg-memory\",\n        featherIcon: true,\n        value: \"\".concat((0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.humanize)(snapshot.TotalMemory), \" RAM\")\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n      className: \"small text-muted space-x-2 vertical-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n        children: [\"Kubernetes \", snapshot.KubernetesVersion]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_EnvironmentStatsItem__WEBPACK_IMPORTED_MODULE_3__.Stat, {\n        value: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_1__.addPlural)(snapshot.NodeCount, 'node'),\n        icon: \"hard-drive\",\n        featherIcon: true\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_AgentVersionTag__WEBPACK_IMPORTED_MODULE_2__.AgentVersionTag, {\n        type: type,\n        version: agentVersion\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///12315\n");

}),

13743:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentStatusBadge\": function() { return /* binding */ EnvironmentStatusBadge; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction EnvironmentStatusBadge(_ref) {\n  var status = _ref.status;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('label', \"label-\".concat(environmentStatusBadge(status))),\n    children: status === _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentStatus.Up ? 'up' : 'down'\n  });\n}\n\nfunction environmentStatusBadge(status) {\n  if (status === _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentStatus.Down) {\n    return 'danger';\n  }\n\n  return 'success';\n}//# sourceURL=webpack-internal:///13743\n");

}),

13316:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentItem\": function() { return /* reexport safe */ _EnvironmentItem__WEBPACK_IMPORTED_MODULE_0__.EnvironmentItem; },\n/* harmony export */   \"EdgeIndicator\": function() { return /* reexport safe */ _EdgeIndicator__WEBPACK_IMPORTED_MODULE_1__.EdgeIndicator; }\n/* harmony export */ });\n/* harmony import */ var _EnvironmentItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EnvironmentItem */ 13487);\n/* harmony import */ var _EdgeIndicator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EdgeIndicator */ 63504);\n\n//# sourceURL=webpack-internal:///13316\n");

}),

39433:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentList\": function() { return /* binding */ EnvironmentList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_intersection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/intersection */ 63209);\n/* harmony import */ var lodash_intersection__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_intersection__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.map.js */ 5434);\n/* harmony import */ var core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_map_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ 89999);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ 58613);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.set.js */ 89024);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! react-feather */ 9090);\n/* harmony import */ var _portainer_hooks_usePaginationLimitState__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/portainer/hooks/usePaginationLimitState */ 86167);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/portainer/home/HomepageFilter */ 23940);\n/* harmony import */ var _portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/portainer/hooks/useDebounce */ 73903);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @/portainer/environment-groups/queries */ 43145);\n/* harmony import */ var _portainer_tags_queries__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @/portainer/tags/queries */ 22878);\n/* harmony import */ var _portainer_environments_queries_useAgentVersionsList__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @/portainer/environments/queries/useAgentVersionsList */ 95612);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_SortbySelector__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @@/datatables/SortbySelector */ 46785);\n/* harmony import */ var _datatables_FilterSearchBar__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @@/datatables/FilterSearchBar */ 1301);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _EnvironmentItem__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./EnvironmentItem */ 13316);\n/* harmony import */ var _KubeconfigButton__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./KubeconfigButton */ 78607);\n/* harmony import */ var _NoEnvironmentsInfoPanel__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./NoEnvironmentsInfoPanel */ 1465);\n/* harmony import */ var _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./EnvironmentList.module.css */ 67357);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar status = [{\n  value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentStatus.Up,\n  label: 'Up'\n}, {\n  value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentStatus.Down,\n  label: 'Down'\n}];\nvar sortByOptions = [{\n  value: 1,\n  label: '名称'\n}, {\n  value: 2,\n  label: '群组'\n}, {\n  value: 3,\n  label: '状态'\n}];\nvar ConnectionType;\n\n(function (ConnectionType) {\n  ConnectionType[ConnectionType[\"API\"] = 0] = \"API\";\n  ConnectionType[ConnectionType[\"Agent\"] = 1] = \"Agent\";\n  ConnectionType[ConnectionType[\"EdgeAgent\"] = 2] = \"EdgeAgent\";\n  ConnectionType[ConnectionType[\"EdgeDevice\"] = 3] = \"EdgeDevice\";\n})(ConnectionType || (ConnectionType = {}));\n\nvar storageKey = 'home_endpoints';\nfunction EnvironmentList(_ref) {\n  var _agentVersionsQuery$d;\n\n  var onClickItem = _ref.onClickItem,\n      onRefresh = _ref.onRefresh;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_34__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var _useHomePageFilter = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('platformType', []),\n      _useHomePageFilter2 = _slicedToArray(_useHomePageFilter, 2),\n      platformTypes = _useHomePageFilter2[0],\n      setPlatformTypes = _useHomePageFilter2[1];\n\n  var _useSearchBarState = (0,_datatables_FilterSearchBar__WEBPACK_IMPORTED_MODULE_38__.useSearchBarState)(storageKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      searchBarValue = _useSearchBarState2[0],\n      setSearchBarValue = _useSearchBarState2[1];\n\n  var _usePaginationLimitSt = (0,_portainer_hooks_usePaginationLimitState__WEBPACK_IMPORTED_MODULE_26__.usePaginationLimitState)(storageKey),\n      _usePaginationLimitSt2 = _slicedToArray(_usePaginationLimitSt, 2),\n      pageLimit = _usePaginationLimitSt2[0],\n      setPageLimit = _usePaginationLimitSt2[1];\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_24__.useState)(1),\n      _useState2 = _slicedToArray(_useState, 2),\n      page = _useState2[0],\n      setPage = _useState2[1];\n\n  var debouncedTextFilter = (0,_portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_29__.useDebounce)(searchBarValue);\n\n  var _useHomePageFilter3 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('connectionTypes', []),\n      _useHomePageFilter4 = _slicedToArray(_useHomePageFilter3, 2),\n      connectionTypes = _useHomePageFilter4[0],\n      setConnectionTypes = _useHomePageFilter4[1];\n\n  var _useHomePageFilter5 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('status', []),\n      _useHomePageFilter6 = _slicedToArray(_useHomePageFilter5, 2),\n      statusFilter = _useHomePageFilter6[0],\n      setStatusFilter = _useHomePageFilter6[1];\n\n  var _useHomePageFilter7 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('tag', []),\n      _useHomePageFilter8 = _slicedToArray(_useHomePageFilter7, 2),\n      tagFilter = _useHomePageFilter8[0],\n      setTagFilter = _useHomePageFilter8[1];\n\n  var _useHomePageFilter9 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('group', []),\n      _useHomePageFilter10 = _slicedToArray(_useHomePageFilter9, 2),\n      groupFilter = _useHomePageFilter10[0],\n      setGroupFilter = _useHomePageFilter10[1];\n\n  var _useSearchBarState3 = (0,_datatables_FilterSearchBar__WEBPACK_IMPORTED_MODULE_38__.useSearchBarState)('sortBy'),\n      _useSearchBarState4 = _slicedToArray(_useSearchBarState3, 2),\n      sortByFilter = _useSearchBarState4[0],\n      setSortByFilter = _useSearchBarState4[1];\n\n  var _useHomePageFilter11 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('sortOrder', false),\n      _useHomePageFilter12 = _slicedToArray(_useHomePageFilter11, 2),\n      sortByDescending = _useHomePageFilter12[0],\n      setSortByDescending = _useHomePageFilter12[1];\n\n  var _useHomePageFilter13 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('sortByButton', false),\n      _useHomePageFilter14 = _slicedToArray(_useHomePageFilter13, 2),\n      sortByButton = _useHomePageFilter14[0],\n      setSortByButton = _useHomePageFilter14[1];\n\n  var _useHomePageFilter15 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('status_state', []),\n      _useHomePageFilter16 = _slicedToArray(_useHomePageFilter15, 2),\n      statusState = _useHomePageFilter16[0],\n      setStatusState = _useHomePageFilter16[1];\n\n  var _useHomePageFilter17 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('tag_state', []),\n      _useHomePageFilter18 = _slicedToArray(_useHomePageFilter17, 2),\n      tagState = _useHomePageFilter18[0],\n      setTagState = _useHomePageFilter18[1];\n\n  var _useHomePageFilter19 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('group_state', []),\n      _useHomePageFilter20 = _slicedToArray(_useHomePageFilter19, 2),\n      groupState = _useHomePageFilter20[0],\n      setGroupState = _useHomePageFilter20[1];\n\n  var _useHomePageFilter21 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('sort_by_state', undefined),\n      _useHomePageFilter22 = _slicedToArray(_useHomePageFilter21, 2),\n      sortByState = _useHomePageFilter22[0],\n      setSortByState = _useHomePageFilter22[1];\n\n  var _useHomePageFilter23 = (0,_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.useHomePageFilter)('agentVersions', []),\n      _useHomePageFilter24 = _slicedToArray(_useHomePageFilter23, 2),\n      agentVersions = _useHomePageFilter24[0],\n      setAgentVersions = _useHomePageFilter24[1];\n\n  var groupsQuery = (0,_portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_31__.useGroups)();\n  var environmentsQueryParams = {\n    types: getTypes(platformTypes.map(function (p) {\n      return p.value;\n    }), connectionTypes.map(function (p) {\n      return p.value;\n    })),\n    search: debouncedTextFilter,\n    status: statusFilter,\n    tagIds: tagFilter !== null && tagFilter !== void 0 && tagFilter.length ? tagFilter : undefined,\n    groupIds: groupFilter,\n    edgeDevice: false,\n    tagsPartialMatch: true,\n    agentVersions: agentVersions.map(function (a) {\n      return a.value;\n    })\n  };\n  var tagsQuery = (0,_portainer_tags_queries__WEBPACK_IMPORTED_MODULE_32__.useTags)();\n\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_30__.useEnvironmentList)(_objectSpread({\n    page: page,\n    pageLimit: pageLimit,\n    sort: sortByFilter,\n    order: sortByDescending ? 'desc' : 'asc'\n  }, environmentsQueryParams), _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_30__.refetchIfAnyOffline),\n      isLoading = _useEnvironmentList.isLoading,\n      environments = _useEnvironmentList.environments,\n      totalCount = _useEnvironmentList.totalCount,\n      totalAvailable = _useEnvironmentList.totalAvailable;\n\n  var agentVersionsQuery = (0,_portainer_environments_queries_useAgentVersionsList__WEBPACK_IMPORTED_MODULE_33__.useAgentVersionsList)();\n  (0,react__WEBPACK_IMPORTED_MODULE_24__.useEffect)(function () {\n    setPage(1);\n  }, [searchBarValue]);\n\n  var groupOptions = _toConsumableArray(groupsQuery.data || []);\n\n  var uniqueGroup = _toConsumableArray(new Map(groupOptions.map(function (item) {\n    return [item.Id, item];\n  })).values()).map(function (_ref2) {\n    var value = _ref2.Id,\n        label = _ref2.Name;\n    return {\n      value: value,\n      label: label\n    };\n  });\n\n  var tagOptions = _toConsumableArray(tagsQuery.tags || []);\n\n  var uniqueTag = _toConsumableArray(new Map(tagOptions.map(function (item) {\n    return [item.ID, item];\n  })).values()).map(function (_ref3) {\n    var value = _ref3.ID,\n        label = _ref3.Name;\n    return {\n      value: value,\n      label: label\n    };\n  });\n\n  var connectionTypeOptions = getConnectionTypeOptions(platformTypes);\n  var platformTypeOptions = getPlatformTypeOptions(connectionTypes);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.Fragment, {\n    children: [totalAvailable === 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_NoEnvironmentsInfoPanel__WEBPACK_IMPORTED_MODULE_43__.NoEnvironmentsInfoPanel, {\n      isAdmin: isAdmin\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_36__.TableContainer, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_36__.TableTitle, {\n            icon: \"hard-drive\",\n            featherIcon: true,\n            label: \"\\u73AF\\u5883\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_36__.TableActions, {\n            className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].actionBar,\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].description,\n              children: \"\\u5355\\u51FB\\u8981\\u7BA1\\u7406\\u7684\\u73AF\\u5883\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].actionButton,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n                className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].refreshButton,\n                children: isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_39__.Button, {\n                  onClick: onRefresh,\n                  \"data-cy\": \"home-refreshEndpointsButton\",\n                  size: \"medium\",\n                  color: \"secondary\",\n                  className: (0,clsx__WEBPACK_IMPORTED_MODULE_25__[\"default\"])('vertical-center !ml-0', _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].refreshEnvironmentsButton),\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_46__[\"default\"], {\n                    className: \"feather icon-sm icon-white\",\n                    \"aria-hidden\": \"true\"\n                  }), \"\\u5237\\u65B0\"]\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n                className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].kubeconfigButton,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_KubeconfigButton__WEBPACK_IMPORTED_MODULE_42__.KubeconfigButton, {\n                  environments: environments,\n                  envQueryParams: _objectSpread(_objectSpread({}, environmentsQueryParams), {}, {\n                    sort: sortByFilter,\n                    order: sortByDescending ? 'desc' : 'asc'\n                  })\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n                className: (0,clsx__WEBPACK_IMPORTED_MODULE_25__[\"default\"])(_EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterSearchbar, 'ml-3'),\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_datatables_FilterSearchBar__WEBPACK_IMPORTED_MODULE_38__.FilterSearchBar, {\n                  value: searchBarValue,\n                  onChange: setSearchBarValue,\n                  placeholder: \"\\u6309\\u540D\\u79F0\\u3001\\u7EC4\\u3001\\u6807\\u8BB0\\u3001\\u72B6\\u6001\\u548CURL\\u641C\\u7D22...\",\n                  \"data-cy\": \"home-endpointsSearchInput\"\n                })\n              })]\n            })]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsxs)(\"div\", {\n            className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterContainer,\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: platformTypeOptions,\n                onChange: setPlatformTypes,\n                placeHolder: \"\\u5E73\\u53F0\",\n                value: platformTypes\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: connectionTypeOptions,\n                onChange: setConnectionTypes,\n                placeHolder: \"\\u8FDE\\u63A5\\u7C7B\\u578B\",\n                value: connectionTypes\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: status,\n                onChange: statusOnChange,\n                placeHolder: \"\\u72B6\\u6001\",\n                value: statusState\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: uniqueTag,\n                onChange: tagOnChange,\n                placeHolder: \"\\u6807\\u8BB0\",\n                value: tagState\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: uniqueGroup,\n                onChange: groupOnChange,\n                placeHolder: \"\\u7FA4\\u7EC4\",\n                value: groupState\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterLeft,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_portainer_home_HomepageFilter__WEBPACK_IMPORTED_MODULE_28__.HomepageFilter, {\n                filterOptions: ((_agentVersionsQuery$d = agentVersionsQuery.data) === null || _agentVersionsQuery$d === void 0 ? void 0 : _agentVersionsQuery$d.map(function (v) {\n                  return {\n                    label: v,\n                    value: v\n                  };\n                })) || [],\n                onChange: setAgentVersions,\n                placeHolder: \"\\u4EE3\\u7406\\u7248\\u672C\",\n                value: agentVersions\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"button\", {\n              type: \"button\",\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].clearButton,\n              onClick: clearFilter,\n              children: \"\\u6E05\\u9664\\u5168\\u90E8\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n              className: _EnvironmentList_module_css__WEBPACK_IMPORTED_MODULE_44__[\"default\"].filterRight,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_datatables_SortbySelector__WEBPACK_IMPORTED_MODULE_37__.SortbySelector, {\n                filterOptions: sortByOptions,\n                onChange: sortOnchange,\n                onDescending: sortOnDescending,\n                placeHolder: \"\\u6392\\u5E8F\\u4F9D\\u636E\",\n                sortByDescending: sortByDescending,\n                sortByButton: sortByButton,\n                value: sortByState\n              })\n            })]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n            className: \"blocklist\",\n            \"data-cy\": \"home-endpointList\",\n            children: renderItems(isLoading, totalCount, environments.map(function (env) {\n              var _groupsQuery$data, _groupsQuery$data$fin;\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_EnvironmentItem__WEBPACK_IMPORTED_MODULE_41__.EnvironmentItem, {\n                environment: env,\n                groupName: (_groupsQuery$data = groupsQuery.data) === null || _groupsQuery$data === void 0 ? void 0 : (_groupsQuery$data$fin = _groupsQuery$data.find(function (g) {\n                  return g.Id === env.GroupId;\n                })) === null || _groupsQuery$data$fin === void 0 ? void 0 : _groupsQuery$data$fin.Name,\n                onClick: onClickItem\n              }, env.Id);\n            }))\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_35__.TableFooter, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_40__.PaginationControls, {\n              showAll: totalCount <= 100,\n              pageLimit: pageLimit,\n              page: page,\n              onPageChange: setPage,\n              totalCount: totalCount,\n              onPageLimitChange: setPageLimit\n            })\n          })]\n        })\n      })\n    })]\n  });\n\n  function getTypes(platformTypes, connectionTypes) {\n    var _typesByPlatform, _typesByConnection;\n\n    if (platformTypes.length === 0 && connectionTypes.length === 0) {\n      return [];\n    }\n\n    var typesByPlatform = (_typesByPlatform = {}, _defineProperty(_typesByPlatform, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.Docker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.AgentOnDocker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.EdgeAgentOnDocker]), _defineProperty(_typesByPlatform, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Azure, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.Azure]), _defineProperty(_typesByPlatform, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.KubernetesLocal, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.AgentOnKubernetes, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.EdgeAgentOnKubernetes]), _typesByPlatform);\n    var typesByConnection = (_typesByConnection = {}, _defineProperty(_typesByConnection, ConnectionType.API, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.Azure, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.KubernetesLocal, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.Docker]), _defineProperty(_typesByConnection, ConnectionType.Agent, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.AgentOnDocker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EnvironmentType.AgentOnKubernetes]), _defineProperty(_typesByConnection, ConnectionType.EdgeAgent, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EdgeTypes), _defineProperty(_typesByConnection, ConnectionType.EdgeDevice, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.EdgeTypes), _typesByConnection);\n    var selectedTypesByPlatform = platformTypes.flatMap(function (platformType) {\n      return typesByPlatform[platformType];\n    });\n    var selectedTypesByConnection = connectionTypes.flatMap(function (connectionType) {\n      return typesByConnection[connectionType];\n    });\n\n    if (selectedTypesByPlatform.length === 0) {\n      return selectedTypesByConnection;\n    }\n\n    if (selectedTypesByConnection.length === 0) {\n      return selectedTypesByPlatform;\n    }\n\n    return lodash_intersection__WEBPACK_IMPORTED_MODULE_11___default()(selectedTypesByConnection, selectedTypesByPlatform);\n  }\n\n  function statusOnChange(filterOptions) {\n    setStatusState(filterOptions);\n\n    if (filterOptions.length === 0) {\n      setStatusFilter([]);\n    } else {\n      var filteredStatus = _toConsumableArray(new Set(filterOptions.map(function (filterOptions) {\n        return filterOptions.value;\n      })));\n\n      setStatusFilter(filteredStatus);\n    }\n  }\n\n  function groupOnChange(filterOptions) {\n    setGroupState(filterOptions);\n\n    if (filterOptions.length === 0) {\n      setGroupFilter([]);\n    } else {\n      var filteredGroups = _toConsumableArray(new Set(filterOptions.map(function (filterOptions) {\n        return filterOptions.value;\n      })));\n\n      setGroupFilter(filteredGroups);\n    }\n  }\n\n  function tagOnChange(filterOptions) {\n    setTagState(filterOptions);\n\n    if (filterOptions.length === 0) {\n      setTagFilter([]);\n    } else {\n      var filteredTags = _toConsumableArray(new Set(filterOptions.map(function (filterOptions) {\n        return filterOptions.value;\n      })));\n\n      setTagFilter(filteredTags);\n    }\n  }\n\n  function clearFilter() {\n    setPlatformTypes([]);\n    setStatusState([]);\n    setStatusFilter([]);\n    setTagState([]);\n    setTagFilter([]);\n    setGroupState([]);\n    setGroupFilter([]);\n    setAgentVersions([]);\n    setConnectionTypes([]);\n  }\n\n  function sortOnchange(filterOptions) {\n    if (filterOptions !== null) {\n      setSortByFilter(filterOptions.label);\n      setSortByButton(true);\n      setSortByState(filterOptions);\n    } else {\n      setSortByFilter('');\n      setSortByButton(true);\n      setSortByState(undefined);\n    }\n  }\n\n  function sortOnDescending() {\n    setSortByDescending(!sortByDescending);\n  }\n}\n\nfunction getConnectionTypeOptions(platformTypes) {\n  var _platformTypeConnecti;\n\n  var platformTypeConnectionType = (_platformTypeConnecti = {}, _defineProperty(_platformTypeConnecti, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker, [ConnectionType.API, ConnectionType.Agent, ConnectionType.EdgeAgent, ConnectionType.EdgeDevice]), _defineProperty(_platformTypeConnecti, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Azure, [ConnectionType.API]), _defineProperty(_platformTypeConnecti, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes, [ConnectionType.Agent, ConnectionType.EdgeAgent, ConnectionType.EdgeDevice]), _platformTypeConnecti);\n  var connectionTypesDefaultOptions = [{\n    value: ConnectionType.API,\n    label: 'API'\n  }, {\n    value: ConnectionType.Agent,\n    label: 'Agent'\n  }, {\n    value: ConnectionType.EdgeAgent,\n    label: 'Edge Agent'\n  }];\n\n  if (platformTypes.length === 0) {\n    return connectionTypesDefaultOptions;\n  }\n\n  return lodash_compact__WEBPACK_IMPORTED_MODULE_10___default()(lodash_intersection__WEBPACK_IMPORTED_MODULE_11___default().apply(void 0, _toConsumableArray(platformTypes.map(function (p) {\n    return platformTypeConnectionType[p.value];\n  }))).map(function (c) {\n    return connectionTypesDefaultOptions.find(function (o) {\n      return o.value === c;\n    });\n  }));\n}\n\nfunction getPlatformTypeOptions(connectionTypes) {\n  var _connectionTypePlatfo;\n\n  var platformDefaultOptions = [{\n    value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker,\n    label: 'Docker'\n  }, {\n    value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Azure,\n    label: 'Azure'\n  }, {\n    value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes,\n    label: 'Kubernetes'\n  }];\n\n  if (connectionTypes.length === 0) {\n    return platformDefaultOptions;\n  }\n\n  var connectionTypePlatformType = (_connectionTypePlatfo = {}, _defineProperty(_connectionTypePlatfo, ConnectionType.API, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Azure]), _defineProperty(_connectionTypePlatfo, ConnectionType.Agent, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes]), _defineProperty(_connectionTypePlatfo, ConnectionType.EdgeAgent, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker]), _defineProperty(_connectionTypePlatfo, ConnectionType.EdgeDevice, [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Docker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_27__.PlatformType.Kubernetes]), _connectionTypePlatfo);\n  return lodash_compact__WEBPACK_IMPORTED_MODULE_10___default()(lodash_intersection__WEBPACK_IMPORTED_MODULE_11___default().apply(void 0, _toConsumableArray(connectionTypes.map(function (p) {\n    return connectionTypePlatformType[p.value];\n  }))).map(function (c) {\n    return platformDefaultOptions.find(function (o) {\n      return o.value === c;\n    });\n  }));\n}\n\nfunction renderItems(isLoading, totalCount, items) {\n  if (isLoading) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n      className: \"text-center text-muted\",\n      \"data-cy\": \"home-loadingEndpoints\",\n      children: \"\\u52A0\\u8F7D\\u4E2D...\"\n    });\n  }\n\n  if (!totalCount) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_45__.jsx)(\"div\", {\n      className: \"text-center text-muted\",\n      \"data-cy\": \"home-noEndpoints\",\n      children: \"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u73AF\\u5883\\u3002\"\n    });\n  }\n\n  return items;\n}//# sourceURL=webpack-internal:///39433\n");

}),

28841:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubeconfigButton\": function() { return /* binding */ KubeconfigButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 63616);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/angulartics.matomo/analytics-services */ 45119);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _KubeconfigPrompt__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./KubeconfigPrompt */ 6477);\n/* harmony import */ var _reach_dialog_styles_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @reach/dialog/styles.css */ 13559);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\nfunction KubeconfigButton(_ref) {\n  var environments = _ref.environments,\n      envQueryParams = _ref.envQueryParams;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isOpen = _useState2[0],\n      setIsOpen = _useState2[1];\n\n  if (!environments) {\n    return null;\n  }\n\n  if (!isKubeconfigButtonVisible(environments)) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n      onClick: handleClick,\n      size: \"medium\",\n      className: \"!ml-3\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n        className: \"feather icon-white\",\n        \"aria-hidden\": \"true\"\n      }), ' ', \"Kubeconfig\"]\n    }), prompt()]\n  });\n\n  function handleClick() {\n    if (!environments) {\n      return;\n    }\n\n    (0,_angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_13__.trackEvent)('kubernetes-kubectl-kubeconfig-multi', {\n      category: 'kubernetes'\n    });\n    setIsOpen(true);\n  }\n\n  function handleClose() {\n    setIsOpen(false);\n  }\n\n  function isKubeconfigButtonVisible(environments) {\n    if (window.location.protocol !== 'https:') {\n      return false;\n    }\n\n    return environments.some(function (env) {\n      return (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_12__.isKubernetesEnvironment)(env.Type);\n    });\n  }\n\n  function prompt() {\n    return isOpen && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_KubeconfigPrompt__WEBPACK_IMPORTED_MODULE_15__.KubeconfigPrompt, {\n      envQueryParams: envQueryParams,\n      onClose: handleClose\n    });\n  }\n}//# sourceURL=webpack-internal:///28841\n");

}),

6477:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubeconfigPrompt\": function() { return /* binding */ KubeconfigPrompt; },\n/* harmony export */   \"expiryMessage\": function() { return /* binding */ expiryMessage; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! react-feather */ 14434);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _reach_dialog__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @reach/dialog */ 34460);\n/* harmony import */ var _kubernetes_services_kubeconfig_service__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/kubernetes/services/kubeconfig.service */ 52503);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_hooks_usePaginationLimitState__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/portainer/hooks/usePaginationLimitState */ 86167);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _KubeconfigSelection__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./KubeconfigSelection */ 75819);\n/* harmony import */ var _KubeconfigPrompt_module_css__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./KubeconfigPrompt.module.css */ 76211);\n/* harmony import */ var _reach_dialog_styles_css__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @reach/dialog/styles.css */ 13559);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar storageKey = 'home_endpoints';\nfunction KubeconfigPrompt(_ref) {\n  var envQueryParams = _ref.envQueryParams,\n      onClose = _ref.onClose;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_22__.useState)(1),\n      _useState2 = _slicedToArray(_useState, 2),\n      page = _useState2[0],\n      setPage = _useState2[1];\n\n  var _usePaginationLimitSt = (0,_portainer_hooks_usePaginationLimitState__WEBPACK_IMPORTED_MODULE_26__.usePaginationLimitState)(storageKey),\n      _usePaginationLimitSt2 = _slicedToArray(_usePaginationLimitSt, 2),\n      pageLimit = _usePaginationLimitSt2[0],\n      setPageLimit = _usePaginationLimitSt2[1];\n\n  var expiryQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_27__.usePublicSettings)({\n    select: function select(settings) {\n      return expiryMessage(settings.KubeconfigExpiry);\n    }\n  });\n\n  var _useSelection = (0,_KubeconfigSelection__WEBPACK_IMPORTED_MODULE_32__.useSelection)(),\n      selection = _useSelection.selection,\n      toggleSelection = _useSelection.toggle,\n      selectionSize = _useSelection.selectionSize;\n\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_28__.useEnvironmentList)(_objectSpread(_objectSpread({}, envQueryParams), {}, {\n    page: page,\n    pageLimit: pageLimit,\n    types: [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_25__.EnvironmentType.KubernetesLocal, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_25__.EnvironmentType.AgentOnKubernetes, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_25__.EnvironmentType.EdgeAgentOnKubernetes]\n  })),\n      environments = _useEnvironmentList.environments,\n      totalCount = _useEnvironmentList.totalCount;\n\n  var isAllPageSelected = environments.every(function (env) {\n    return selection[env.Id];\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_reach_dialog__WEBPACK_IMPORTED_MODULE_36__.DialogOverlay, {\n    className: _KubeconfigPrompt_module_css__WEBPACK_IMPORTED_MODULE_33__[\"default\"].dialog,\n    \"aria-label\": \"Kubeconfig View\",\n    role: \"dialog\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n      className: \"modal-dialog\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n        className: \"modal-content\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n          className: \"modal-header\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"button\", {\n            type: \"button\",\n            className: \"close\",\n            onClick: onClose,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_37__[\"default\"], {})\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"h5\", {\n            className: \"modal-title\",\n            children: \"Download kubeconfig file\"\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n          className: \"modal-body\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"form\", {\n            className: \"bootbox-form\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n              className: \"bootbox-prompt-message\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"span\", {\n                children: \"Select the kubernetes environments to add to the kubeconfig file. You may select across multiple pages.\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"span\", {\n                className: \"space-left\",\n                children: expiryQuery.data\n              })]\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"br\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n            className: \"h-8 flex items-center\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_30__.Checkbox, {\n              id: \"settings-container-truncate-name\",\n              label: \"Select all (in this page)\",\n              checked: isAllPageSelected,\n              onChange: handleSelectAll\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n            className: \"datatable\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n              className: \"bootbox-checkbox-list\",\n              children: environments.map(function (env) {\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n                  className: (0,clsx__WEBPACK_IMPORTED_MODULE_21__[\"default\"])(_KubeconfigPrompt_module_css__WEBPACK_IMPORTED_MODULE_33__[\"default\"].checkbox, 'h-8 flex items-center pt-1'),\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_30__.Checkbox, {\n                    id: \"\".concat(env.Id),\n                    label: \"\".concat(env.Name, \" (\").concat(env.URL, \")\"),\n                    checked: !!selection[env.Id],\n                    onChange: function onChange() {\n                      return toggleSelection(env.Id, !selection[env.Id]);\n                    }\n                  })\n                }, env.Id);\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n              className: \"pt-3 flex justify-end w-full\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_29__.PaginationControls, {\n                showAll: totalCount <= 100,\n                page: page,\n                onPageChange: setPage,\n                pageLimit: pageLimit,\n                onPageLimitChange: setPageLimit,\n                totalCount: totalCount\n              })\n            })]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(\"div\", {\n          className: \"modal-footer\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_31__.Button, {\n            onClick: onClose,\n            color: \"default\",\n            children: \"Cancel\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_31__.Button, {\n            onClick: handleDownload,\n            disabled: selectionSize < 1,\n            children: \"Download File\"\n          })]\n        })]\n      })\n    })\n  });\n\n  function handleSelectAll() {\n    environments.forEach(function (env) {\n      return toggleSelection(env.Id, !isAllPageSelected);\n    });\n  }\n\n  function handleDownload() {\n    confirmKubeconfigSelection();\n  }\n\n  function confirmKubeconfigSelection() {\n    return _confirmKubeconfigSelection.apply(this, arguments);\n  }\n\n  function _confirmKubeconfigSelection() {\n    _confirmKubeconfigSelection = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              if (!(selectionSize === 0)) {\n                _context.next = 3;\n                break;\n              }\n\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_24__.warning('No environment was selected', '');\n              return _context.abrupt(\"return\");\n\n            case 3:\n              _context.prev = 3;\n              _context.next = 6;\n              return _kubernetes_services_kubeconfig_service__WEBPACK_IMPORTED_MODULE_23__.downloadKubeconfigFile(Object.keys(selection).map(Number));\n\n            case 6:\n              onClose();\n              _context.next = 12;\n              break;\n\n            case 9:\n              _context.prev = 9;\n              _context.t0 = _context[\"catch\"](3);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_24__.error('Failed downloading kubeconfig file', _context.t0);\n\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[3, 9]]);\n    }));\n    return _confirmKubeconfigSelection.apply(this, arguments);\n  }\n}\nfunction expiryMessage(expiry) {\n  var prefix = 'The kubeconfig file will';\n\n  switch (expiry) {\n    case '24h':\n      return \"\".concat(prefix, \" expire in 1 day.\");\n\n    case '168h':\n      return \"\".concat(prefix, \" expire in 7 days.\");\n\n    case '720h':\n      return \"\".concat(prefix, \" expire in 30 days.\");\n\n    case '8640h':\n      return \"\".concat(prefix, \" expire in 1 year.\");\n\n    case '0':\n    default:\n      return \"\".concat(prefix, \" not expire.\");\n  }\n}//# sourceURL=webpack-internal:///6477\n");

}),

75819:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSelection\": function() { return /* binding */ useSelection; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react */ 95004);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nfunction useSelection() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_16__.useState)({}),\n      _useState2 = _slicedToArray(_useState, 2),\n      selection = _useState2[0],\n      setSelection = _useState2[1];\n\n  var selectionSize = Object.keys(selection).length;\n  return {\n    selection: selection,\n    toggle: toggle,\n    selectionSize: selectionSize\n  };\n\n  function toggle(id, selected) {\n    setSelection(function (prevSelection) {\n      var newSelection = _objectSpread({}, prevSelection);\n\n      if (!selected) {\n        delete newSelection[id];\n      } else {\n        newSelection[id] = true;\n      }\n\n      return newSelection;\n    });\n  }\n}//# sourceURL=webpack-internal:///75819\n");

}),

78607:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "KubeconfigButton": function() { return /* reexport safe */ _KubeconfigButton__WEBPACK_IMPORTED_MODULE_0__.KubeconfigButton; }
/* harmony export */ });
/* harmony import */ var _KubeconfigButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./KubeconfigButton */ 28841);


}),

1465:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoEnvironmentsInfoPanel\": function() { return /* binding */ NoEnvironmentsInfoPanel; }\n/* harmony export */ });\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/InformationPanel */ 83302);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction NoEnvironmentsInfoPanel(_ref) {\n  var isAdmin = _ref.isAdmin;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_InformationPanel__WEBPACK_IMPORTED_MODULE_0__.InformationPanel, {\n    title: \"Information\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_2__.TextTip, {\n      children: isAdmin ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n        children: [\"\\u6CA1\\u6709\\u53EF\\u4F9B\\u7BA1\\u7406\\u7684\\u73AF\\u5883\\u3002\\u8BF7\\u524D\\u5F80\", ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_1__.Link, {\n          to: \"portainer.wizard.endpoints\",\n          children: \"\\u73AF\\u5883\\u5411\\u5BFC\"\n        }), \" to \\u6DFB\\u52A0\\u4E00\\u4E2A\\u73AF\\u5883\\u3002\"]\n      }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n        children: \"\\u4F60\\u6CA1\\u6709\\u673A\\u4F1A\\u8FDB\\u5165\\u4EFB\\u4F55\\u73AF\\u5883\\u3002\\u8BF7\\u8054\\u7CFB\\u4F60\\u7684 \\u7BA1\\u7406\\u5458\\u3002\"\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///1465\n");

}),

94043:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentList\": function() { return /* reexport safe */ _EnvironmentList__WEBPACK_IMPORTED_MODULE_1__.EnvironmentList; },\n/* harmony export */   \"EnvironmentListAngular\": function() { return /* binding */ EnvironmentListAngular; }\n/* harmony export */ });\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _EnvironmentList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EnvironmentList */ 39433);\n\n\n\nvar EnvironmentListAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__.react2angular)(_EnvironmentList__WEBPACK_IMPORTED_MODULE_1__.EnvironmentList, ['onClickItem', 'onRefresh']);//# sourceURL=webpack-internal:///94043\n");

}),

79059:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HomeView\": function() { return /* binding */ HomeView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _services_notifications__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../services/notifications */ 46021);\n/* harmony import */ var _environments_environment_service__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../environments/environment.service */ 31848);\n/* harmony import */ var _environments_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../environments/utils */ 57941);\n/* harmony import */ var _services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../services/modal.service/confirm */ 46980);\n/* harmony import */ var _services_modal_service_utils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../services/modal.service/utils */ 89230);\n/* harmony import */ var _EnvironmentList__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./EnvironmentList */ 94043);\n/* harmony import */ var _EdgeLoadingSpinner__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./EdgeLoadingSpinner */ 73494);\n/* harmony import */ var _MotdPanel__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./MotdPanel */ 61856);\n/* harmony import */ var _LicenseNodePanel__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./LicenseNodePanel */ 46860);\n/* harmony import */ var _BackupFailedPanel__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./BackupFailedPanel */ 26459);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction HomeView() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_14__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      connectingToEdgeEndpoint = _useState2[0],\n      setConnectingToEdgeEndpoint = _useState2[1];\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_13__.useRouter)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_15__.PageHeader, {\n      reload: true,\n      title: \"Home\",\n      breadcrumbs: [{\n        label: 'Environments'\n      }]\n    }),  false && /*#__PURE__*/0, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.jsx)(_MotdPanel__WEBPACK_IMPORTED_MODULE_23__.MotdPanel, {}),  false && /*#__PURE__*/0, connectingToEdgeEndpoint ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.jsx)(_EdgeLoadingSpinner__WEBPACK_IMPORTED_MODULE_22__.EdgeLoadingSpinner, {}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_26__.jsx)(_EnvironmentList__WEBPACK_IMPORTED_MODULE_21__.EnvironmentList, {\n      onClickItem: handleClickItem,\n      onRefresh: confirmTriggerSnapshot\n    })]\n  });\n\n  function confirmTriggerSnapshot() {\n    return _confirmTriggerSnapshot.apply(this, arguments);\n  }\n\n  function _confirmTriggerSnapshot() {\n    _confirmTriggerSnapshot = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var result;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return confirmEndpointSnapshot();\n\n            case 2:\n              result = _context.sent;\n\n              if (result) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 5:\n              _context.prev = 5;\n              _context.next = 8;\n              return (0,_environments_environment_service__WEBPACK_IMPORTED_MODULE_17__.snapshotEndpoints)();\n\n            case 8:\n              _services_notifications__WEBPACK_IMPORTED_MODULE_16__.success('Success', 'Environments updated');\n              router.stateService.reload();\n              _context.next = 15;\n              break;\n\n            case 12:\n              _context.prev = 12;\n              _context.t0 = _context[\"catch\"](5);\n              _services_notifications__WEBPACK_IMPORTED_MODULE_16__.error('Failure', _context.t0, 'An error occurred during environment snapshot');\n\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[5, 12]]);\n    }));\n    return _confirmTriggerSnapshot.apply(this, arguments);\n  }\n\n  function handleClickItem(environment) {\n    if ((0,_environments_utils__WEBPACK_IMPORTED_MODULE_18__.isEdgeEnvironment)(environment.Type)) {\n      setConnectingToEdgeEndpoint(true);\n    }\n  }\n}\n\nfunction confirmEndpointSnapshot() {\n  return _confirmEndpointSnapshot.apply(this, arguments);\n}\n\nfunction _confirmEndpointSnapshot() {\n  _confirmEndpointSnapshot = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            return _context2.abrupt(\"return\", (0,_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_19__.confirmAsync)({\n              title: (0,_services_modal_service_utils__WEBPACK_IMPORTED_MODULE_20__.buildTitle)('你确定吗？'),\n              message: '触发手动刷新将轮询每个环境以检索其信息，这可能需要几秒钟。',\n              buttons: {\n                confirm: {\n                  label: 'Continue',\n                  className: 'btn-primary'\n                }\n              }\n            }));\n\n          case 1:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n  return _confirmEndpointSnapshot.apply(this, arguments);\n}//# sourceURL=webpack-internal:///79059\n");

}),

23940:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HomepageFilter\": function() { return /* binding */ HomepageFilter; },\n/* harmony export */   \"useHomePageFilter\": function() { return /* binding */ useHomePageFilter; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-select */ 68847);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction Option(props) {\n  var isSelected = props.isSelected,\n      label = props.label;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"div\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(react_select__WEBPACK_IMPORTED_MODULE_19__.c.Option, _objectSpread(_objectSpread({}, props), {}, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"input\", {\n        type: \"checkbox\",\n        checked: isSelected,\n        onChange: function onChange() {\n          return null;\n        }\n      }), ' ', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"label\", {\n        children: label\n      })]\n    }))\n  });\n}\n\nfunction HomepageFilter(_ref) {\n  var _ref$filterOptions = _ref.filterOptions,\n      filterOptions = _ref$filterOptions === void 0 ? [] : _ref$filterOptions,\n      _onChange = _ref.onChange,\n      placeHolder = _ref.placeHolder,\n      value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__.Select, {\n    closeMenuOnSelect: false,\n    placeholder: placeHolder,\n    options: filterOptions,\n    value: value,\n    isMulti: true,\n    components: {\n      Option: Option\n    },\n    onChange: function onChange(option) {\n      return _onChange(_toConsumableArray(option));\n    }\n  });\n}\nfunction useHomePageFilter(key, defaultValue) {\n  var filterKey = keyBuilder(key);\n  return (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_16__.useLocalStorage)(filterKey, defaultValue, sessionStorage);\n}\n\nfunction keyBuilder(key) {\n  return \"datatable_home_filter_type_\".concat(key);\n}//# sourceURL=webpack-internal:///23940\n");

}),

46860:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LicenseNodePanel\": function() { return /* binding */ LicenseNodePanel; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/InformationPanel */ 83302);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _license_management_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../license-management/types */ 28080);\n/* harmony import */ var _license_management_use_license_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../license-management/use-license.service */ 99978);\n/* harmony import */ var _services_api_status_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../services/api/status.service */ 9251);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction LicenseNodePanel() {\n  var nodesValid = useNodesValid();\n\n  if (nodesValid) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_InformationPanel__WEBPACK_IMPORTED_MODULE_2__.InformationPanel, {\n    title: \"License node allowance exceeded\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_3__.TextTip, {\n      children: \"The number of nodes for your license has been exceeded. Please contact your administrator.\"\n    })\n  });\n}\n\nfunction useNodesValid() {\n  var _useNodesCounts = useNodesCounts(),\n      isLoadingNodes = _useNodesCounts.isLoading,\n      nodesCount = _useNodesCounts.nodesCount;\n\n  var _useLicenseInfo = (0,_license_management_use_license_service__WEBPACK_IMPORTED_MODULE_5__.useLicenseInfo)(),\n      isLoadingLicense = _useLicenseInfo.isLoading,\n      info = _useLicenseInfo.info;\n\n  if (isLoadingLicense || isLoadingNodes || !info || info.type === _license_management_types__WEBPACK_IMPORTED_MODULE_4__.LicenseType.Trial) {\n    return true;\n  }\n\n  return nodesCount <= info.nodes;\n}\n\nfunction useNodesCounts() {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['status', 'nodes'], function () {\n    return (0,_services_api_status_service__WEBPACK_IMPORTED_MODULE_6__.getNodesCount)();\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', error, 'Failed to get nodes count');\n    }\n  }),\n      isLoading = _useQuery.isLoading,\n      data = _useQuery.data;\n\n  return {\n    nodesCount: data || 0,\n    isLoading: isLoading\n  };\n}//# sourceURL=webpack-internal:///46860\n");

}),

61856:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MotdPanel\": function() { return /* binding */ MotdPanel; }\n/* harmony export */ });\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/camelCase */ 81651);\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_camelCase__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_hooks_useUIState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/hooks/useUIState */ 87585);\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/InformationPanel */ 83302);\n/* harmony import */ var _home_service__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./home.service */ 34846);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction MotdPanel() {\n  var motd = useMotd();\n  var uiStateStore = (0,_portainer_hooks_useUIState__WEBPACK_IMPORTED_MODULE_16__.useUIState)();\n\n  if (!motd || motd.Message === '' || motd.Hash === uiStateStore.dismissedInfoHash) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: [!!motd.Style && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"style\", {\n      children: motd.Style\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_InformationPanel__WEBPACK_IMPORTED_MODULE_17__.InformationPanel, {\n      onDismiss: function onDismiss() {\n        return _onDismiss(motd.Hash);\n      },\n      title: motd.Title,\n      wrapperStyle: camelCaseKeys(motd.ContentLayout),\n      bodyClassName: \"motd-body\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"span\", {\n        className: \"text-muted\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"p\", {\n          dangerouslySetInnerHTML: {\n            __html: motd.Message\n          }\n        })\n      })\n    })]\n  });\n\n  function _onDismiss(hash) {\n    uiStateStore.dismissMotd(hash);\n  }\n}\n\nfunction useMotd() {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_15__.useQuery)('motd', function () {\n    return (0,_home_service__WEBPACK_IMPORTED_MODULE_18__.getMotd)();\n  }),\n      data = _useQuery.data;\n\n  return data;\n}\n\nfunction camelCaseKeys() {\n  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Object.fromEntries(Object.entries(obj).map(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        key = _ref2[0],\n        value = _ref2[1];\n\n    var camelCased = lodash_camelCase__WEBPACK_IMPORTED_MODULE_0___default()(key);\n\n    return [camelCased, value];\n  }));\n}//# sourceURL=webpack-internal:///61856\n");

}),

34846:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getMotd\": function() { return /* binding */ getMotd; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getMotd() {\n  return _getMotd.apply(this, arguments);\n}\n\nfunction _getMotd() {\n  _getMotd = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get('/motd');\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve information message');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getMotd.apply(this, arguments);\n}//# sourceURL=webpack-internal:///34846\n");

}),

64923:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "HomeView": function() { return /* reexport safe */ _HomeView__WEBPACK_IMPORTED_MODULE_0__.HomeView; }
/* harmony export */ });
/* harmony import */ var _HomeView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HomeView */ 79059);


}),

4819:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCurrentEnvironment\": function() { return /* binding */ useCurrentEnvironment; }\n/* harmony export */ });\n/* harmony import */ var _environments_queries_useEnvironment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../environments/queries/useEnvironment */ 29765);\n/* harmony import */ var _useEnvironmentId__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useEnvironmentId */ 45588);\n\n\nfunction useCurrentEnvironment() {\n  var id = (0,_useEnvironmentId__WEBPACK_IMPORTED_MODULE_1__.useEnvironmentId)();\n  return (0,_environments_queries_useEnvironment__WEBPACK_IMPORTED_MODULE_0__.useEnvironment)(id);\n}//# sourceURL=webpack-internal:///4819\n");

}),

73903:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDebounce\": function() { return /* binding */ useDebounce; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nfunction useDebounce(value) {\n  var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(value),\n      _useState2 = _slicedToArray(_useState, 2),\n      debouncedValue = _useState2[0],\n      setDebouncedValue = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_11__.useEffect)(function () {\n    var timer = setTimeout(function () {\n      return setDebouncedValue(value);\n    }, delay);\n    return function () {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n  return debouncedValue;\n}//# sourceURL=webpack-internal:///73903\n");

}),

45588:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useEnvironmentId\": function() { return /* binding */ useEnvironmentId; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n\nfunction useEnvironmentId() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useCurrentStateAndParams)(),\n      environmentId = _useCurrentStateAndPa.params.endpointId;\n\n  if (!environmentId) {\n    throw new Error('endpointId url param is required');\n  }\n\n  return environmentId;\n}//# sourceURL=webpack-internal:///45588\n");

}),

73817:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"keyBuilder\": function() { return /* binding */ keyBuilder; },\n/* harmony export */   \"useLocalStorage\": function() { return /* binding */ useLocalStorage; },\n/* harmony export */   \"get\": function() { return /* binding */ get; },\n/* harmony export */   \"set\": function() { return /* binding */ set; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nvar localStoragePrefix = 'portainer';\nfunction keyBuilder(key) {\n  return \"\".concat(localStoragePrefix, \".\").concat(key);\n}\nfunction useLocalStorage(key, defaultValue) {\n  var storage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : localStorage;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(get(key, defaultValue, storage)),\n      _useState2 = _slicedToArray(_useState, 2),\n      value = _useState2[0],\n      setValue = _useState2[1];\n\n  var handleChange = (0,react__WEBPACK_IMPORTED_MODULE_11__.useCallback)(function (value) {\n    setValue(value);\n    set(key, value, storage);\n  }, [key, storage]);\n  return (0,react__WEBPACK_IMPORTED_MODULE_11__.useMemo)(function () {\n    return [value, handleChange];\n  }, [value, handleChange]);\n}\nfunction get(key, defaultValue) {\n  var storage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : localStorage;\n  var value = storage.getItem(keyBuilder(key));\n\n  if (!value) {\n    return defaultValue;\n  }\n\n  try {\n    return JSON.parse(value);\n  } catch (e) {\n    return defaultValue;\n  }\n}\nfunction set(key, value) {\n  var storage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : localStorage;\n  storage.setItem(keyBuilder(key), JSON.stringify(value));\n}//# sourceURL=webpack-internal:///73817\n");

}),

86167:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"usePaginationLimitState\": function() { return /* binding */ usePaginationLimitState; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _useLocalStorage__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./useLocalStorage */ 73817);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nfunction usePaginationLimitState(key) {\n  var paginationKey = paginationKeyBuilder(key);\n\n  var _useLocalStorage = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_11__.useLocalStorage)(paginationKey, 10),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),\n      pageLimit = _useLocalStorage2[0],\n      setPageLimit = _useLocalStorage2[1];\n\n  return [pageLimit, setPageLimit];\n\n  function paginationKeyBuilder(key) {\n    return \"datatable_pagination_\".concat(key);\n  }\n}//# sourceURL=webpack-internal:///86167\n");

}),

87585:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useUIState\": function() { return /* binding */ useUIState; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nvar useUIState = (0,zustand__WEBPACK_IMPORTED_MODULE_8__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_9__.persist)(function (set) {\n  return {\n    dismissedInfoPanels: {},\n    dismissInfoPanel: function dismissInfoPanel(id) {\n      set(function (state) {\n        return {\n          dismissedInfoPanels: _objectSpread(_objectSpread({}, state.dismissedInfoPanels), {}, _defineProperty({}, id, true))\n        };\n      });\n    },\n    dismissedInfoHash: '',\n    dismissMotd: function dismissMotd(hash) {\n      set({\n        dismissedInfoHash: hash\n      });\n    },\n    dismissedUpdateVersion: '',\n    dismissUpdateVersion: function dismissUpdateVersion(version) {\n      set({\n        dismissedUpdateVersion: version\n      });\n    }\n  };\n}, {\n  name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)('NEW_UI_STATE')\n}));//# sourceURL=webpack-internal:///87585\n");

}),

50265:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UserContext\": function() { return /* binding */ UserContext; },\n/* harmony export */   \"useUser\": function() { return /* binding */ useUser; },\n/* harmony export */   \"useAuthorizations\": function() { return /* binding */ useAuthorizations; },\n/* harmony export */   \"isEnvironmentAdmin\": function() { return /* binding */ isEnvironmentAdmin; },\n/* harmony export */   \"hasAuthorizations\": function() { return /* binding */ hasAuthorizations; },\n/* harmony export */   \"Authorized\": function() { return /* binding */ Authorized; },\n/* harmony export */   \"UserProvider\": function() { return /* binding */ UserProvider; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var jwt_decode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! jwt-decode */ 3696);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_users_user_helpers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/users/user.helpers */ 26795);\n/* harmony import */ var _users_user_service__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../users/user.service */ 96263);\n/* harmony import */ var _useLocalStorage__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./useLocalStorage */ 73817);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar UserContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_15__.createContext)(null);\nUserContext.displayName = 'UserContext';\nfunction useUser() {\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_15__.useContext)(UserContext);\n\n  if (context === null) {\n    throw new Error('should be nested under UserProvider');\n  }\n\n  var user = context.user;\n\n  if (typeof user === 'undefined') {\n    throw new Error('should be authenticated');\n  }\n\n  return (0,react__WEBPACK_IMPORTED_MODULE_15__.useMemo)(function () {\n    return {\n      user: user,\n      isAdmin: (0,_portainer_users_user_helpers__WEBPACK_IMPORTED_MODULE_16__.isAdmin)(user)\n    };\n  }, [user]);\n}\nfunction useAuthorizations(authorizations, forceEnvironmentId) {\n  var adminOnlyCE = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var _useUser = useUser(),\n      user = _useUser.user;\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_14__.useCurrentStateAndParams)(),\n      endpointId = _useCurrentStateAndPa.params.endpointId;\n\n  if (!user) {\n    return false;\n  }\n\n  return hasAuthorizations(user, authorizations, forceEnvironmentId || endpointId, adminOnlyCE);\n}\nfunction isEnvironmentAdmin(user, environmentId) {\n  var adminOnlyCE = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  return hasAuthorizations(user, ['EndpointResourcesAccess'], environmentId, adminOnlyCE);\n}\nfunction hasAuthorizations(user, authorizations, environmentId) {\n  var adminOnlyCE = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  var authorizationsArray = typeof authorizations === 'string' ? [authorizations] : authorizations;\n\n  if (authorizationsArray.length === 0) {\n    return true;\n  }\n\n  if (true) {\n    return !adminOnlyCE || (0,_portainer_users_user_helpers__WEBPACK_IMPORTED_MODULE_16__.isAdmin)(user);\n  }\n\n  if (!environmentId) {\n    return false;\n  }\n\n  if ((0,_portainer_users_user_helpers__WEBPACK_IMPORTED_MODULE_16__.isAdmin)(user)) {\n    return true;\n  }\n\n  if (!user.EndpointAuthorizations || !user.EndpointAuthorizations[environmentId]) {\n    return false;\n  }\n\n  var userEndpointAuthorizations = user.EndpointAuthorizations[environmentId];\n  return authorizationsArray.some(function (authorization) {\n    return userEndpointAuthorizations[authorization];\n  });\n}\nfunction Authorized(_ref) {\n  var authorizations = _ref.authorizations,\n      environmentId = _ref.environmentId,\n      _ref$adminOnlyCE = _ref.adminOnlyCE,\n      adminOnlyCE = _ref$adminOnlyCE === void 0 ? false : _ref$adminOnlyCE,\n      children = _ref.children,\n      _ref$childrenUnauthor = _ref.childrenUnauthorized,\n      childrenUnauthorized = _ref$childrenUnauthor === void 0 ? null : _ref$childrenUnauthor;\n  var isAllowed = useAuthorizations(authorizations, environmentId, adminOnlyCE);\n  return isAllowed ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: children\n  }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: childrenUnauthorized\n  });\n}\nfunction UserProvider(_ref2) {\n  var children = _ref2.children;\n\n  var _useLocalStorage = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_18__.useLocalStorage)('JWT', ''),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 1),\n      jwt = _useLocalStorage2[0];\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(),\n      _useState2 = _slicedToArray(_useState, 2),\n      user = _useState2[0],\n      setUser = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_15__.useEffect)(function () {\n    if (jwt !== '') {\n      var tokenPayload = (0,jwt_decode__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(jwt);\n      loadUser(tokenPayload.id);\n    }\n  }, [jwt]);\n  var providerState = (0,react__WEBPACK_IMPORTED_MODULE_15__.useMemo)(function () {\n    return {\n      user: user\n    };\n  }, [user]);\n\n  if (jwt === '') {\n    return null;\n  }\n\n  if (!providerState.user) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(UserContext.Provider, {\n    value: providerState,\n    children: children\n  });\n\n  function loadUser(_x) {\n    return _loadUser.apply(this, arguments);\n  }\n\n  function _loadUser() {\n    _loadUser = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(id) {\n      var user;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_users_user_service__WEBPACK_IMPORTED_MODULE_17__.getUser)(id);\n\n            case 2:\n              user = _context.sent;\n              setUser(user);\n\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _loadUser.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///50265\n");

}),

60122:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"configureFDO\": function() { return /* binding */ configureFDO; },\n/* harmony export */   \"configureDevice\": function() { return /* binding */ configureDevice; },\n/* harmony export */   \"createProfile\": function() { return /* binding */ createProfile; },\n/* harmony export */   \"getProfiles\": function() { return /* binding */ getProfiles; },\n/* harmony export */   \"getProfile\": function() { return /* binding */ getProfile; },\n/* harmony export */   \"deleteProfile\": function() { return /* binding */ deleteProfile; },\n/* harmony export */   \"updateProfile\": function() { return /* binding */ updateProfile; },\n/* harmony export */   \"duplicateProfile\": function() { return /* binding */ duplicateProfile; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nvar BASE_URL = '/fdo';\nfunction configureFDO(_x) {\n  return _configureFDO.apply(this, arguments);\n}\n\nfunction _configureFDO() {\n  _configureFDO = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(formValues) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(\"\".concat(BASE_URL, \"/configure\"), formValues);\n\n          case 3:\n            _context.next = 8;\n            break;\n\n          case 5:\n            _context.prev = 5;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to configure FDO');\n\n          case 8:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 5]]);\n  }));\n  return _configureFDO.apply(this, arguments);\n}\n\nfunction configureDevice(_x2, _x3) {\n  return _configureDevice.apply(this, arguments);\n}\n\nfunction _configureDevice() {\n  _configureDevice = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(deviceId, deviceConfig) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(\"\".concat(BASE_URL, \"/configure/\").concat(deviceId), deviceConfig);\n\n          case 3:\n            _context2.next = 8;\n            break;\n\n          case 5:\n            _context2.prev = 5;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to configure device');\n\n          case 8:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 5]]);\n  }));\n  return _configureDevice.apply(this, arguments);\n}\n\nfunction createProfile(_x4, _x5, _x6) {\n  return _createProfile.apply(this, arguments);\n}\n\nfunction _createProfile() {\n  _createProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(name, method, profileFileContent) {\n    var payload;\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            payload = {\n              name: name,\n              profileFileContent: profileFileContent\n            };\n            _context3.prev = 1;\n            _context3.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(\"\".concat(BASE_URL, \"/profiles\"), payload, {\n              params: {\n                method: method\n              }\n            });\n\n          case 4:\n            _context3.next = 9;\n            break;\n\n          case 6:\n            _context3.prev = 6;\n            _context3.t0 = _context3[\"catch\"](1);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context3.t0, 'Unable to create profile');\n\n          case 9:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[1, 6]]);\n  }));\n  return _createProfile.apply(this, arguments);\n}\n\nfunction getProfiles() {\n  return _getProfiles.apply(this, arguments);\n}\n\nfunction _getProfiles() {\n  _getProfiles = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n    var _yield$axios$get, profiles;\n\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(\"\".concat(BASE_URL, \"/profiles\"));\n\n          case 3:\n            _yield$axios$get = _context4.sent;\n            profiles = _yield$axios$get.data;\n            return _context4.abrupt(\"return\", profiles);\n\n          case 8:\n            _context4.prev = 8;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context4.t0, 'Unable to retrieve the profiles');\n\n          case 11:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 8]]);\n  }));\n  return _getProfiles.apply(this, arguments);\n}\n\nfunction getProfile(_x7) {\n  return _getProfile.apply(this, arguments);\n}\n\nfunction _getProfile() {\n  _getProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(profileId) {\n    var _yield$axios$get2, profile;\n\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.prev = 0;\n            _context5.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(\"\".concat(BASE_URL, \"/profiles/\").concat(profileId));\n\n          case 3:\n            _yield$axios$get2 = _context5.sent;\n            profile = _yield$axios$get2.data;\n            return _context5.abrupt(\"return\", profile);\n\n          case 8:\n            _context5.prev = 8;\n            _context5.t0 = _context5[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context5.t0, 'Unable to retrieve profile');\n\n          case 11:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[0, 8]]);\n  }));\n  return _getProfile.apply(this, arguments);\n}\n\nfunction deleteProfile(_x8) {\n  return _deleteProfile.apply(this, arguments);\n}\n\nfunction _deleteProfile() {\n  _deleteProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(profileId) {\n    return regeneratorRuntime.wrap(function _callee6$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            _context6.prev = 0;\n            _context6.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"][\"delete\"](\"\".concat(BASE_URL, \"/profiles/\").concat(profileId));\n\n          case 3:\n            _context6.next = 8;\n            break;\n\n          case 5:\n            _context6.prev = 5;\n            _context6.t0 = _context6[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context6.t0, 'Unable to delete profile');\n\n          case 8:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee6, null, [[0, 5]]);\n  }));\n  return _deleteProfile.apply(this, arguments);\n}\n\nfunction updateProfile(_x9, _x10, _x11) {\n  return _updateProfile.apply(this, arguments);\n}\n\nfunction _updateProfile() {\n  _updateProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(id, name, profileFileContent) {\n    var payload;\n    return regeneratorRuntime.wrap(function _callee7$(_context7) {\n      while (1) {\n        switch (_context7.prev = _context7.next) {\n          case 0:\n            payload = {\n              name: name,\n              profileFileContent: profileFileContent\n            };\n            _context7.prev = 1;\n            _context7.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].put(\"\".concat(BASE_URL, \"/profiles/\").concat(id), payload);\n\n          case 4:\n            _context7.next = 9;\n            break;\n\n          case 6:\n            _context7.prev = 6;\n            _context7.t0 = _context7[\"catch\"](1);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context7.t0, 'Unable to update profile');\n\n          case 9:\n          case \"end\":\n            return _context7.stop();\n        }\n      }\n    }, _callee7, null, [[1, 6]]);\n  }));\n  return _updateProfile.apply(this, arguments);\n}\n\nfunction duplicateProfile(_x12) {\n  return _duplicateProfile.apply(this, arguments);\n}\n\nfunction _duplicateProfile() {\n  _duplicateProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(id) {\n    var _yield$axios$post, profile;\n\n    return regeneratorRuntime.wrap(function _callee8$(_context8) {\n      while (1) {\n        switch (_context8.prev = _context8.next) {\n          case 0:\n            _context8.prev = 0;\n            _context8.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(\"\".concat(BASE_URL, \"/profiles/\").concat(id, \"/duplicate\"));\n\n          case 3:\n            _yield$axios$post = _context8.sent;\n            profile = _yield$axios$post.data;\n            return _context8.abrupt(\"return\", profile);\n\n          case 8:\n            _context8.prev = 8;\n            _context8.t0 = _context8[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context8.t0, 'Unable to duplicate profile');\n\n          case 11:\n          case \"end\":\n            return _context8.stop();\n        }\n      }\n    }, _callee8, null, [[0, 8]]);\n  }));\n  return _duplicateProfile.apply(this, arguments);\n}//# sourceURL=webpack-internal:///60122\n");

}),

76827:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"configureAMT\": function() { return /* binding */ configureAMT; },\n/* harmony export */   \"getAMTInfo\": function() { return /* binding */ getAMTInfo; },\n/* harmony export */   \"activateDevice\": function() { return /* binding */ activateDevice; },\n/* harmony export */   \"getDevices\": function() { return /* binding */ getDevices; },\n/* harmony export */   \"executeDeviceAction\": function() { return /* binding */ executeDeviceAction; },\n/* harmony export */   \"enableDeviceFeatures\": function() { return /* binding */ enableDeviceFeatures; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nvar BASE_URL = '/open_amt';\nfunction configureAMT(_x) {\n  return _configureAMT.apply(this, arguments);\n}\n\nfunction _configureAMT() {\n  _configureAMT = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(formValues) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(\"\".concat(BASE_URL, \"/configure\"), formValues);\n\n          case 3:\n            _context.next = 8;\n            break;\n\n          case 5:\n            _context.prev = 5;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Unable to configure AMT');\n\n          case 8:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 5]]);\n  }));\n  return _configureAMT.apply(this, arguments);\n}\n\nfunction getAMTInfo(_x2) {\n  return _getAMTInfo.apply(this, arguments);\n}\n\nfunction _getAMTInfo() {\n  _getAMTInfo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId) {\n    var _yield$axios$get, amtInformation;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(\"\".concat(BASE_URL, \"/\").concat(environmentId, \"/info\"));\n\n          case 3:\n            _yield$axios$get = _context2.sent;\n            amtInformation = _yield$axios$get.data;\n            return _context2.abrupt(\"return\", amtInformation);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context2.t0, 'Unable to retrieve environment information');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getAMTInfo.apply(this, arguments);\n}\n\nfunction activateDevice(_x3) {\n  return _activateDevice.apply(this, arguments);\n}\n\nfunction _activateDevice() {\n  _activateDevice = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(environmentId) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(\"\".concat(BASE_URL, \"/\").concat(environmentId, \"/activate\"));\n\n          case 3:\n            _context3.next = 8;\n            break;\n\n          case 5:\n            _context3.prev = 5;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context3.t0, 'Unable to activate device');\n\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 5]]);\n  }));\n  return _activateDevice.apply(this, arguments);\n}\n\nfunction getDevices(_x4) {\n  return _getDevices.apply(this, arguments);\n}\n\nfunction _getDevices() {\n  _getDevices = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(environmentId) {\n    var _yield$axios$get2, devices;\n\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(\"\".concat(BASE_URL, \"/\").concat(environmentId, \"/devices\"));\n\n          case 3:\n            _yield$axios$get2 = _context4.sent;\n            devices = _yield$axios$get2.data;\n            return _context4.abrupt(\"return\", devices);\n\n          case 8:\n            _context4.prev = 8;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context4.t0, 'Unable to retrieve device information');\n\n          case 11:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 8]]);\n  }));\n  return _getDevices.apply(this, arguments);\n}\n\nfunction executeDeviceAction(_x5, _x6, _x7) {\n  return _executeDeviceAction.apply(this, arguments);\n}\n\nfunction _executeDeviceAction() {\n  _executeDeviceAction = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(environmentId, deviceGUID, action) {\n    var actionPayload;\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.prev = 0;\n            actionPayload = {\n              action: action\n            };\n            _context5.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(\"\".concat(BASE_URL, \"/\").concat(environmentId, \"/devices/\").concat(deviceGUID, \"/action\"), actionPayload);\n\n          case 4:\n            _context5.next = 9;\n            break;\n\n          case 6:\n            _context5.prev = 6;\n            _context5.t0 = _context5[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context5.t0, 'Unable to execute device action');\n\n          case 9:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[0, 6]]);\n  }));\n  return _executeDeviceAction.apply(this, arguments);\n}\n\nfunction enableDeviceFeatures(_x8, _x9, _x10) {\n  return _enableDeviceFeatures.apply(this, arguments);\n}\n\nfunction _enableDeviceFeatures() {\n  _enableDeviceFeatures = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(environmentId, deviceGUID, features) {\n    var featuresPayload, _yield$axios$post, authorizationResponse;\n\n    return regeneratorRuntime.wrap(function _callee6$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            _context6.prev = 0;\n            featuresPayload = {\n              features: features\n            };\n            _context6.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(\"\".concat(BASE_URL, \"/\").concat(environmentId, \"/devices/\").concat(deviceGUID, \"/features\"), featuresPayload);\n\n          case 4:\n            _yield$axios$post = _context6.sent;\n            authorizationResponse = _yield$axios$post.data;\n            return _context6.abrupt(\"return\", authorizationResponse);\n\n          case 9:\n            _context6.prev = 9;\n            _context6.t0 = _context6[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context6.t0, 'Unable to enable device features');\n\n          case 12:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n  return _enableDeviceFeatures.apply(this, arguments);\n}//# sourceURL=webpack-internal:///76827\n");

}),

38676:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getLicenses\": function() { return /* binding */ getLicenses; },\n/* harmony export */   \"attachLicense\": function() { return /* binding */ attachLicense; },\n/* harmony export */   \"removeLicense\": function() { return /* binding */ removeLicense; },\n/* harmony export */   \"getLicenseInfo\": function() { return /* binding */ getLicenseInfo; },\n/* harmony export */   \"subscribe\": function() { return /* binding */ subscribe; },\n/* harmony export */   \"unsubscribe\": function() { return /* binding */ unsubscribe; },\n/* harmony export */   \"LicenseService\": function() { return /* binding */ LicenseService; }\n/* harmony export */ });\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/remove */ 71204);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nvar store = {\n  listeners: [],\n  invalidated: true\n};\nfunction getLicenses() {\n  return _getLicenses.apply(this, arguments);\n}\n\nfunction _getLicenses() {\n  _getLicenses = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data, _axiosError$response, axiosError;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].get(buildUrl());\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            axiosError = _context.t0;\n            throw new Error((_axiosError$response = axiosError.response) === null || _axiosError$response === void 0 ? void 0 : _axiosError$response.data.message);\n\n          case 12:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getLicenses.apply(this, arguments);\n}\n\nfunction attachLicense(_x) {\n  return _attachLicense.apply(this, arguments);\n}\n\nfunction _attachLicense() {\n  _attachLicense = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(licenseKeys) {\n    var _yield$axios$post, data, _axiosError$response2, axiosError;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].post(buildUrl(), {\n              licenseKeys: licenseKeys\n            });\n\n          case 3:\n            _yield$axios$post = _context2.sent;\n            data = _yield$axios$post.data;\n\n            if (!(Object.keys(data.failedKeys).length === licenseKeys.length)) {\n              _context2.next = 7;\n              break;\n            }\n\n            return _context2.abrupt(\"return\", data);\n\n          case 7:\n            store.invalidated = true;\n            getLicenseInfo();\n            return _context2.abrupt(\"return\", data);\n\n          case 12:\n            _context2.prev = 12;\n            _context2.t0 = _context2[\"catch\"](0);\n            axiosError = _context2.t0;\n            throw new Error((_axiosError$response2 = axiosError.response) === null || _axiosError$response2 === void 0 ? void 0 : _axiosError$response2.data.message);\n\n          case 16:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 12]]);\n  }));\n  return _attachLicense.apply(this, arguments);\n}\n\nfunction removeLicense(_x2) {\n  return _removeLicense.apply(this, arguments);\n}\n\nfunction _removeLicense() {\n  _removeLicense = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(licenseKeys) {\n    var _yield$axios$post2, data, _axiosError$response3, axiosError;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].post(buildUrl('remove'), {\n              licenseKeys: licenseKeys\n            });\n\n          case 3:\n            _yield$axios$post2 = _context3.sent;\n            data = _yield$axios$post2.data;\n\n            if (!(Object.keys(data.failedKeys).length === licenseKeys.length)) {\n              _context3.next = 7;\n              break;\n            }\n\n            return _context3.abrupt(\"return\", data);\n\n          case 7:\n            store.invalidated = true;\n            getLicenseInfo();\n            return _context3.abrupt(\"return\", data);\n\n          case 12:\n            _context3.prev = 12;\n            _context3.t0 = _context3[\"catch\"](0);\n            axiosError = _context3.t0;\n            throw new Error((_axiosError$response3 = axiosError.response) === null || _axiosError$response3 === void 0 ? void 0 : _axiosError$response3.data.message);\n\n          case 16:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 12]]);\n  }));\n  return _removeLicense.apply(this, arguments);\n}\n\nfunction getLicenseInfo() {\n  return _getLicenseInfo.apply(this, arguments);\n}\n\nfunction _getLicenseInfo() {\n  _getLicenseInfo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n    var _yield$axios$get2, _info, _axiosError$response4, axiosError;\n\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n\n            if (!(store.data && !store.invalidated && store.lastLoaded && Math.abs(store.lastLoaded - Date.now()) < 1000 * 30)) {\n              _context4.next = 3;\n              break;\n            }\n\n            return _context4.abrupt(\"return\", store.data);\n\n          case 3:\n            _context4.next = 5;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].get(buildUrl('info'));\n\n          case 5:\n            _yield$axios$get2 = _context4.sent;\n            _info = _yield$axios$get2.data;\n            store.data = _info;\n            store.lastLoaded = Date.now();\n            store.invalidated = false;\n            store.listeners.forEach(function (listener) {\n              return listener(_info);\n            });\n            return _context4.abrupt(\"return\", _info);\n\n          case 14:\n            _context4.prev = 14;\n            _context4.t0 = _context4[\"catch\"](0);\n            axiosError = _context4.t0;\n            throw new Error((_axiosError$response4 = axiosError.response) === null || _axiosError$response4 === void 0 ? void 0 : _axiosError$response4.data.message);\n\n          case 18:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 14]]);\n  }));\n  return _getLicenseInfo.apply(this, arguments);\n}\n\nfunction subscribe(listener) {\n  store.listeners.push(listener);\n}\nfunction unsubscribe(listener) {\n  lodash_remove__WEBPACK_IMPORTED_MODULE_0___default()(store.listeners, listener);\n}\n/* @ngInject */\n\nfunction LicenseService() {\n  return {\n    licenses: getLicenses,\n    attach: attachLicense,\n    remove: removeLicense,\n    info: getLicenseInfo,\n    subscribe: subscribe,\n    unsubscribe: unsubscribe\n  };\n}\n\nfunction buildUrl() {\n  var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var url = 'licenses';\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///38676\n");

}),

28080:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Edition\": function() { return /* binding */ Edition; },\n/* harmony export */   \"LicenseType\": function() { return /* binding */ LicenseType; }\n/* harmony export */ });\n// matches https://github.com/portainer/liblicense/blob/master/liblicense.go#L66-L74\nvar Edition; // matches https://github.com/portainer/liblicense/blob/master/liblicense.go#L60-L64\n\n(function (Edition) {\n  Edition[Edition[\"CE\"] = 1] = \"CE\";\n  Edition[Edition[\"BE\"] = 2] = \"BE\";\n  Edition[Edition[\"EE\"] = 3] = \"EE\";\n})(Edition || (Edition = {}));\n\nvar LicenseType; // matches https://github.com/portainer/liblicense/blob/master/liblicense.go#L35-L50\n\n(function (LicenseType) {\n  LicenseType[LicenseType[\"Trial\"] = 1] = \"Trial\";\n  LicenseType[LicenseType[\"Subscription\"] = 2] = \"Subscription\";\n})(LicenseType || (LicenseType = {}));//# sourceURL=webpack-internal:///28080\n");

}),

99978:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useLicenseInfo\": function() { return /* binding */ useLicenseInfo; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _license_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./license.service */ 38676);\n\n\n\nfunction useLicenseInfo() {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)('licenseInfo', function () {\n    return (0,_license_service__WEBPACK_IMPORTED_MODULE_2__.getLicenseInfo)();\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', error, 'Failed to get license info');\n    }\n  }),\n      isLoading = _useQuery.isLoading,\n      info = _useQuery.data;\n\n  return {\n    isLoading: isLoading,\n    info: info\n  };\n}//# sourceURL=webpack-internal:///99978\n");

}),

51314:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/microsoft.svg?c */ 80257);\n/* harmony import */ var _assets_ico_vendor_google_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/vendor/google.svg?c */ 31821);\n/* harmony import */ var _assets_ico_vendor_github_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/ico/vendor/github.svg?c */ 31352);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar options = [{\n  id: 'microsoft',\n  icon: _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  featherIcon: true,\n  label: 'Microsoft',\n  description: 'Microsoft OAuth provider',\n  value: 'microsoft',\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.HIDE_INTERNAL_AUTH\n}, {\n  id: 'google',\n  icon: _assets_ico_vendor_google_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  label: 'Google',\n  description: 'Google OAuth provider',\n  value: 'google',\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.HIDE_INTERNAL_AUTH\n}, {\n  id: 'github',\n  icon: _assets_ico_vendor_github_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  label: 'Github',\n  description: 'Github OAuth provider',\n  value: 'github',\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.HIDE_INTERNAL_AUTH\n}, {\n  id: 'custom',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_4__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  }),\n  label: 'Custom',\n  description: 'Custom OAuth provider',\n  value: 'custom'\n}];//# sourceURL=webpack-internal:///51314\n");

}),

24281:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"customTemplatesModule\": function() { return /* binding */ customTemplatesModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_portainer_custom_templates_components_CustomTemplatesVariablesDefinitionField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/CustomTemplatesVariablesDefinitionField */ 82301);\n/* harmony import */ var _react_portainer_custom_templates_components_CustomTemplatesVariablesField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/CustomTemplatesVariablesField */ 13513);\n/* harmony import */ var _variables_field__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./variables-field */ 54787);\n\n\n\n\n\n\nvar customTemplatesModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.react.components.custom-templates', []).component('customTemplatesVariablesFieldReact', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_custom_templates_components_CustomTemplatesVariablesField__WEBPACK_IMPORTED_MODULE_4__.CustomTemplatesVariablesField, ['value', 'onChange', 'definitions'])).component('customTemplatesVariablesField', _variables_field__WEBPACK_IMPORTED_MODULE_5__.VariablesFieldAngular).component('customTemplatesVariablesDefinitionField', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_custom_templates_components_CustomTemplatesVariablesDefinitionField__WEBPACK_IMPORTED_MODULE_3__.CustomTemplatesVariablesDefinitionField, ['onChange', 'value', 'errors', 'isVariablesNamesFromParent'])).name;//# sourceURL=webpack-internal:///24281\n");

}),

54787:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VariablesFieldAngular\": function() { return /* binding */ VariablesFieldAngular; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar VariablesFieldController = /*#__PURE__*/function () {\n  VariablesFieldController.$inject = [\"$scope\"];\n\n  /* @ngInject */\n  function VariablesFieldController($scope) {\n    _classCallCheck(this, VariablesFieldController);\n\n    this.handleChange = this.handleChange.bind(this);\n    this.$scope = $scope;\n  }\n\n  _createClass(VariablesFieldController, [{\n    key: \"handleChange\",\n    value: function handleChange(value) {\n      var _this = this;\n\n      this.$scope.$evalAsync(function () {\n        _this.onChange(value);\n      });\n    }\n  }, {\n    key: \"$onChanges\",\n    value: function $onChanges(_ref) {\n      var value = _ref.value;\n\n      if (value.currentValue) {\n        this.checkValidity(value.currentValue);\n      }\n    }\n  }, {\n    key: \"checkValidity\",\n    value: function checkValidity(value) {\n      var _this2 = this;\n\n      this.formCtrl.$setValidity('templateVariables', Object.entries(value).every(function (_ref2) {\n        var _ref3 = _slicedToArray(_ref2, 2),\n            name = _ref3[0],\n            value = _ref3[1];\n\n        return !!value || _this2.definitions.some(function (def) {\n          return def.name === name && !!def.defaultValue;\n        });\n      }), this.formCtrl);\n    }\n  }]);\n\n  return VariablesFieldController;\n}();\n\nvar VariablesFieldAngular = {\n  template: \"<custom-templates-variables-field-react\\n    value=\\\"$ctrl.value\\\"\\n    on-change=\\\"$ctrl.handleChange\\\"\\n    definitions=\\\"$ctrl.definitions\\\"\\n  ></custom-templates-variables-field-react>\",\n  bindings: {\n    value: '<',\n    definitions: '<',\n    onChange: '<'\n  },\n  require: {\n    formCtrl: '^form'\n  },\n  controller: VariablesFieldController\n};//# sourceURL=webpack-internal:///54787\n");

}),

20666:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fileUploadField\": function() { return /* binding */ fileUploadField; }\n/* harmony export */ });\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _form_components_FileUpload__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/form-components/FileUpload */ 41519);\n\n\nvar fileUploadField = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__.r2a)(_form_components_FileUpload__WEBPACK_IMPORTED_MODULE_1__.FileUploadField, ['onChange', 'value', 'title', 'required', 'accept', 'inputId']);//# sourceURL=webpack-internal:///20666\n");

}),

18011:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"componentsModule\": function() { return /* binding */ componentsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_portainer_registries_ListView_DefaultRegistry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/registries/ListView/DefaultRegistry */ 26747);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _react_components_ReactQueryDevtoolsWrapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/components/ReactQueryDevtoolsWrapper */ 27099);\n/* harmony import */ var _react_portainer_access_control__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/portainer/access-control */ 61190);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _react_portainer_settings_EdgeComputeView_SettingsFDO__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react/portainer/settings/EdgeComputeView/SettingsFDO */ 77837);\n/* harmony import */ var _react_portainer_settings_EdgeComputeView_SettingsOpenAMT__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react/portainer/settings/EdgeComputeView/SettingsOpenAMT */ 7430);\n/* harmony import */ var _react_portainer_settings_AuthenticationView_InternalAuth__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/react/portainer/settings/AuthenticationView/InternalAuth */ 56455);\n/* harmony import */ var _react_portainer_access_control_PorAccessControlForm_TeamsSelector__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/portainer/access-control/PorAccessControlForm/TeamsSelector */ 6946);\n/* harmony import */ var _react_portainer_access_control_PorAccessControlForm_UsersSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/react/portainer/access-control/PorAccessControlForm/UsersSelector */ 18405);\n/* harmony import */ var _react_portainer_access_control_AccessManagement_PorAccessManagementUsersSelector__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/react/portainer/access-control/AccessManagement/PorAccessManagementUsersSelector */ 52704);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _TagSelector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/TagSelector */ 49501);\n/* harmony import */ var _Widget_Loading__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/Widget/Loading */ 53848);\n/* harmony import */ var _PasswordCheckHint__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/PasswordCheckHint */ 75830);\n/* harmony import */ var _ViewLoading__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/ViewLoading */ 83537);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/Badge */ 74085);\n/* harmony import */ var _datatables_TableHeaderCell__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/datatables/TableHeaderCell */ 12249);\n/* harmony import */ var _DashboardItem__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/DashboardItem */ 73390);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _FallbackImage__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @@/FallbackImage */ 53869);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var _TeamsSelector__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @@/TeamsSelector */ 82938);\n/* harmony import */ var _form_components_PortainerSelect__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/form-components/PortainerSelect */ 68871);\n/* harmony import */ var _form_components_Slider__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/form-components/Slider */ 14531);\n/* harmony import */ var _file_upload_field__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./file-upload-field */ 20666);\n/* harmony import */ var _switch_field__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./switch-field */ 95591);\n/* harmony import */ var _custom_templates__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./custom-templates */ 24281);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar componentsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.react.components', [_custom_templates__WEBPACK_IMPORTED_MODULE_33__.customTemplatesModule]).component('tagSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_TagSelector__WEBPACK_IMPORTED_MODULE_17__.TagSelector), ['allowCreate', 'onChange', 'value'])).component('portainerTooltip', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip, ['message', 'position', 'className'])).component('badge', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_Badge__WEBPACK_IMPORTED_MODULE_22__.Badge, ['type', 'className'])).component('fileUploadField', _file_upload_field__WEBPACK_IMPORTED_MODULE_31__.fileUploadField).component('porSwitchField', _switch_field__WEBPACK_IMPORTED_MODULE_32__.switchField).component('passwordCheckHint', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_PasswordCheckHint__WEBPACK_IMPORTED_MODULE_19__.PasswordCheckHint), ['forceChangePassword', 'passwordValid'])).component('rdLoading', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_Widget_Loading__WEBPACK_IMPORTED_MODULE_18__.Loading, [])).component('tableColumnHeader', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_datatables_TableHeaderCell__WEBPACK_IMPORTED_MODULE_23__.TableColumnHeaderAngular, ['colTitle', 'canSort', 'isSorted', 'isSortedDesc'])).component('viewLoading', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_ViewLoading__WEBPACK_IMPORTED_MODULE_20__.ViewLoading, ['message'])).component('pageHeader', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_PageHeader__WEBPACK_IMPORTED_MODULE_16__.PageHeader))), ['title', 'breadcrumbs', 'loading', 'onReload', 'reload', 'id'])).component('fallbackImage', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_FallbackImage__WEBPACK_IMPORTED_MODULE_26__.FallbackImage, ['src', 'fallbackIcon', 'alt', 'size', 'className', 'fallbackMode', 'fallbackClassName', 'feather'])).component('prIcon', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_4__.Icon, ['className', 'feather', 'icon', 'mode', 'size'])).component('reactQueryDevTools', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_components_ReactQueryDevtoolsWrapper__WEBPACK_IMPORTED_MODULE_5__.ReactQueryDevtoolsWrapper, [])).component('dashboardItem', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_DashboardItem__WEBPACK_IMPORTED_MODULE_24__.DashboardItem, ['featherIcon', 'icon', 'type', 'value', 'children'])).component('datatableSearchbar', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_25__.SearchBar, ['data-cy', 'onChange', 'value', 'placeholder'])).component('boxSelectorBadgeIcon', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_27__.BadgeIcon, ['featherIcon', 'icon'])).component('accessControlPanel', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_7__.withCurrentUser)(_react_portainer_access_control__WEBPACK_IMPORTED_MODULE_6__.AccessControlPanel))), ['disableOwnershipChange', 'onUpdateSuccess', 'resourceControl', 'resourceId', 'resourceType', 'environmentId'])).component('defaultRegistryName', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_react_portainer_registries_ListView_DefaultRegistry__WEBPACK_IMPORTED_MODULE_3__.DefaultRegistryName), [])).component('defaultRegistryAction', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_react_portainer_registries_ListView_DefaultRegistry__WEBPACK_IMPORTED_MODULE_3__.DefaultRegistryAction), [])).component('defaultRegistryDomain', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_react_portainer_registries_ListView_DefaultRegistry__WEBPACK_IMPORTED_MODULE_3__.DefaultRegistryDomain), [])).component('settingsFdo', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_9__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_8__.withReactQuery)(_react_portainer_settings_EdgeComputeView_SettingsFDO__WEBPACK_IMPORTED_MODULE_10__.SettingsFDO)), ['onSubmit', 'settings'])).component('settingsOpenAmt', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_settings_EdgeComputeView_SettingsOpenAMT__WEBPACK_IMPORTED_MODULE_11__.SettingsOpenAMT, ['onSubmit', 'settings'])).component('internalAuth', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_settings_AuthenticationView_InternalAuth__WEBPACK_IMPORTED_MODULE_12__.InternalAuth, ['onSaveSettings', 'isLoading', 'value', 'onChange'])).component('teamsSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_TeamsSelector__WEBPACK_IMPORTED_MODULE_28__.TeamsSelector, ['onChange', 'value', 'dataCy', 'inputId', 'name', 'placeholder', 'teams'])).component('porAccessControlFormTeamSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_access_control_PorAccessControlForm_TeamsSelector__WEBPACK_IMPORTED_MODULE_13__.PorAccessControlFormTeamSelector, ['inputId', 'onChange', 'options', 'value'])).component('porAccessControlFormUserSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_access_control_PorAccessControlForm_UsersSelector__WEBPACK_IMPORTED_MODULE_14__.PorAccessControlFormUserSelector, ['inputId', 'onChange', 'options', 'value'])).component('porSelect', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_form_components_PortainerSelect__WEBPACK_IMPORTED_MODULE_29__.PortainerSelect, ['name', 'inputId', 'placeholder', 'disabled', 'data-cy', 'bindToBody', 'value', 'onChange', 'options', 'isMulti', 'isClearable'])).component('porSlider', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_form_components_Slider__WEBPACK_IMPORTED_MODULE_30__.Slider, ['min', 'max', 'step', 'value', 'onChange', 'visibleTooltip', 'dataCy'])).component('porAccessManagementUsersSelector', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)(_react_portainer_access_control_AccessManagement_PorAccessManagementUsersSelector__WEBPACK_IMPORTED_MODULE_15__.PorAccessManagementUsersSelector, ['onChange', 'options', 'value'])).name;//# sourceURL=webpack-internal:///18011\n");

}),

95591:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"switchField\": function() { return /* binding */ switchField; }\n/* harmony export */ });\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n\n\nvar switchField = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__.r2a)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_1__.SwitchField, ['tooltip', 'checked', 'label', 'name', 'labelClass', 'fieldClass', 'dataCy', 'disabled', 'onChange', 'featureId', 'switchClass']);//# sourceURL=webpack-internal:///95591\n");

}),

30086:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reactModule\": function() { return /* binding */ reactModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 18011);\n/* harmony import */ var _views__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views */ 78135);\n\n\n\n\nvar reactModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.react', [_views__WEBPACK_IMPORTED_MODULE_3__.viewsModule, _components__WEBPACK_IMPORTED_MODULE_2__.componentsModule]).name;//# sourceURL=webpack-internal:///30086\n");

}),

78135:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"viewsModule\": function() { return /* binding */ viewsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_home__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/home */ 64923);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _react_portainer_account_CreateAccessTokenView__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/account/CreateAccessTokenView */ 55695);\n/* harmony import */ var _react_portainer_settings_EdgeComputeView_EdgeComputeSettingsView__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/portainer/settings/EdgeComputeView/EdgeComputeSettingsView */ 66210);\n/* harmony import */ var _react_tools_withI18nSuspense__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react-tools/withI18nSuspense */ 26350);\n/* harmony import */ var _wizard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./wizard */ 12124);\n/* harmony import */ var _teams__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./teams */ 28036);\n/* harmony import */ var _update_schedules__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./update-schedules */ 52825);\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar viewsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.react.views', [_wizard__WEBPACK_IMPORTED_MODULE_10__.wizardModule, _teams__WEBPACK_IMPORTED_MODULE_11__.teamsModule, _update_schedules__WEBPACK_IMPORTED_MODULE_12__.updateSchedulesModule]).component('homeView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_3__.withCurrentUser)(_portainer_home__WEBPACK_IMPORTED_MODULE_2__.HomeView))), [])).component('createAccessToken', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__.r2a)((0,_react_tools_withI18nSuspense__WEBPACK_IMPORTED_MODULE_9__.withI18nSuspense)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)(_react_portainer_account_CreateAccessTokenView__WEBPACK_IMPORTED_MODULE_7__.CreateAccessToken)), ['onSubmit', 'onError'])).component('settingsEdgeCompute', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__.r2a)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_3__.withCurrentUser)(_react_portainer_settings_EdgeComputeView_EdgeComputeSettingsView__WEBPACK_IMPORTED_MODULE_8__.EdgeComputeSettingsView)), ['onSubmit', 'settings'])).name;//# sourceURL=webpack-internal:///78135\n");

}),

97521:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"sidebarModule\": function() { return /* binding */ sidebarModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_sidebar_useSidebarState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/sidebar/useSidebarState */ 48322);\n/* harmony import */ var _react_sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/sidebar/Sidebar */ 9145);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n\n\n\n\n\n\n\n\nvar sidebarModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.sidebar', []).component('sidebar', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_4__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_7__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_5__.withCurrentUser)(_react_sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_3__.Sidebar))), [])).factory('SidebarService', _react_sidebar_useSidebarState__WEBPACK_IMPORTED_MODULE_2__.AngularSidebarService).name;//# sourceURL=webpack-internal:///97521\n");

}),

28036:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"teamsModule\": function() { return /* binding */ teamsModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_portainer_users_teams__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/portainer/users/teams */ 93494);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n\n\n\nvar teamsModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.teams', []).config(config).component('teamView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_portainer_users_teams__WEBPACK_IMPORTED_MODULE_2__.ItemView))), [])).component('teamsView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_portainer_users_teams__WEBPACK_IMPORTED_MODULE_2__.ListView))), [])).name;\n/* @ngInject */\n\nfunction config($stateRegistryProvider) {\n  $stateRegistryProvider.register({\n    name: 'portainer.teams',\n    url: '/teams',\n    views: {\n      'content@': {\n        component: 'teamsView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.teams.team',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'teamView'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///28036\n");

}),

52825:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"updateSchedulesModule\": function() { return /* binding */ updateSchedulesModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_portainer_environments_update_schedules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/environments/update-schedules */ 38336);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n\n\n\nvar updateSchedulesModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.edge.updateSchedules', []).component('updateSchedulesListView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_6__.withCurrentUser)(_react_portainer_environments_update_schedules__WEBPACK_IMPORTED_MODULE_3__.ListView))), [])).component('updateSchedulesCreateView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_6__.withCurrentUser)(_react_portainer_environments_update_schedules__WEBPACK_IMPORTED_MODULE_3__.CreateView))), [])).component('updateSchedulesItemView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_6__.withCurrentUser)(_react_portainer_environments_update_schedules__WEBPACK_IMPORTED_MODULE_3__.ItemView))), [])).config(config).name;\n\nfunction config($stateRegistryProvider) {\n  $stateRegistryProvider.register({\n    name: 'portainer.endpoints.updateSchedules',\n    url: '/update-schedules',\n    views: {\n      'content@': {\n        component: 'updateSchedulesListView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.endpoints.updateSchedules.create',\n    url: '/update-schedules/new',\n    views: {\n      'content@': {\n        component: 'updateSchedulesCreateView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.endpoints.updateSchedules.item',\n    url: '/update-schedules/:id',\n    views: {\n      'content@': {\n        component: 'updateSchedulesItemView'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///52825\n");

}),

12124:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"wizardModule\": function() { return /* binding */ wizardModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_portainer_environments_wizard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/environments/wizard */ 13206);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n\n\n\nvar wizardModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.react.views.wizard', []).component('wizardEnvironmentCreationView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_portainer_environments_wizard__WEBPACK_IMPORTED_MODULE_3__.EnvironmentCreationView))), [])).component('wizardEnvironmentTypeSelectView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_portainer_environments_wizard__WEBPACK_IMPORTED_MODULE_3__.EnvironmentTypeSelectView))), [])).component('wizardMainView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_6__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_5__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_4__.withCurrentUser)(_react_portainer_environments_wizard__WEBPACK_IMPORTED_MODULE_3__.HomeView))), [])).config(config).name;\n\nfunction config($stateRegistryProvider) {\n  $stateRegistryProvider.register({\n    name: 'portainer.wizard',\n    url: '/wizard',\n    views: {\n      'content@': {\n        component: 'wizardMainView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.wizard.endpoints',\n    url: '/endpoints?edgeDevice',\n    views: {\n      'content@': {\n        component: 'wizardEnvironmentTypeSelectView'\n      }\n    },\n    params: {\n      localEndpointId: 0\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.wizard.endpoints.create',\n    url: '/create?envType',\n    views: {\n      'content@': {\n        component: 'wizardEnvironmentCreationView'\n      }\n    },\n    params: {\n      envType: ''\n    }\n  });\n}//# sourceURL=webpack-internal:///12124\n");

}),

55202:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getBackupStatus\": function() { return /* binding */ getBackupStatus; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getBackupStatus() {\n  return _getBackupStatus.apply(this, arguments);\n}\n\nfunction _getBackupStatus() {\n  _getBackupStatus = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl('s3', 'status'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve backup status');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getBackupStatus.apply(this, arguments);\n}\n\nfunction buildUrl(resource, action) {\n  var url = '/backup';\n\n  if (resource) {\n    url += \"/\".concat(resource);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///55202\n");

}),

67683:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"apiServicesModule\": function() { return /* binding */ apiServicesModule; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _userService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./userService */ 96664);\n\n\n\nvar apiServicesModule = angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.services.api', []).factory('UserService', _userService__WEBPACK_IMPORTED_MODULE_2__.UserService).name;//# sourceURL=webpack-internal:///67683\n");

}),

9251:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getNodesCount\": function() { return /* binding */ getNodesCount; },\n/* harmony export */   \"getStatus\": function() { return /* binding */ getStatus; },\n/* harmony export */   \"useStatus\": function() { return /* binding */ useStatus; },\n/* harmony export */   \"getVersionStatus\": function() { return /* binding */ getVersionStatus; },\n/* harmony export */   \"useVersionStatus\": function() { return /* binding */ useVersionStatus; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction getNodesCount() {\n  return _getNodesCount.apply(this, arguments);\n}\n\nfunction _getNodesCount() {\n  _getNodesCount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl('nodes'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data.nodes);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getNodesCount.apply(this, arguments);\n}\n\nfunction getStatus() {\n  return _getStatus.apply(this, arguments);\n}\n\nfunction _getStatus() {\n  _getStatus = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    var _yield$axios$get2, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl());\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            data = _yield$axios$get2.data;\n            data.Edition = 'Community Edition';\n            return _context2.abrupt(\"return\", data);\n\n          case 9:\n            _context2.prev = 9;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context2.t0);\n\n          case 12:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 9]]);\n  }));\n  return _getStatus.apply(this, arguments);\n}\n\nfunction useStatus(select) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['status'], function () {\n    return getStatus();\n  }, {\n    select: select\n  });\n}\nfunction getVersionStatus() {\n  return _getVersionStatus.apply(this, arguments);\n}\n\nfunction _getVersionStatus() {\n  _getVersionStatus = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n    var _yield$axios$get3, data;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl('version'));\n\n          case 3:\n            _yield$axios$get3 = _context3.sent;\n            data = _yield$axios$get3.data;\n            return _context3.abrupt(\"return\", data);\n\n          case 8:\n            _context3.prev = 8;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context3.t0);\n\n          case 11:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 8]]);\n  }));\n  return _getVersionStatus.apply(this, arguments);\n}\n\nfunction useVersionStatus() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['version'], function () {\n    return getVersionStatus();\n  });\n}\n\nfunction buildUrl(action) {\n  var url = '/status';\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///9251\n");

}),

6811:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"agentInterceptor\": function() { return /* binding */ agentInterceptor; },\n/* harmony export */   \"parseAxiosError\": function() { return /* binding */ parseAxiosError; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! axios */ 62418);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var axios_progress_bar__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! axios-progress-bar */ 94926);\n/* harmony import */ var axios_progress_bar__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(axios_progress_bar__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var axios_progress_bar_dist_nprogress_css__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! axios-progress-bar/dist/nprogress.css */ 47494);\n/* harmony import */ var _portainer_error__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/error */ 20023);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _http_request_helper__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./http-request.helper */ 50477);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nvar axios = axios__WEBPACK_IMPORTED_MODULE_12___default().create({\n  baseURL: 'api'\n});\n(0,axios_progress_bar__WEBPACK_IMPORTED_MODULE_13__.loadProgressBar)(undefined, axios);\n/* harmony default export */ __webpack_exports__[\"default\"] = (axios);\naxios.interceptors.request.use( /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(config) {\n    var newConfig, jwt;\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            newConfig = _objectSpread({\n              headers: config.headers || {}\n            }, config);\n            jwt = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_16__.get)('JWT', '');\n\n            if (jwt) {\n              newConfig.headers.Authorization = \"Bearer \".concat(jwt);\n            }\n\n            return _context.abrupt(\"return\", newConfig);\n\n          case 4:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n\n  return function (_x) {\n    return _ref.apply(this, arguments);\n  };\n}());\nfunction agentInterceptor(config) {\n  if (!config.url || !config.url.includes('/docker/')) {\n    return config;\n  }\n\n  var newConfig = _objectSpread({\n    headers: config.headers || {}\n  }, config);\n\n  var target = (0,_http_request_helper__WEBPACK_IMPORTED_MODULE_17__.portainerAgentTargetHeader)();\n\n  if (target) {\n    newConfig.headers['X-PortainerAgent-Target'] = target;\n  }\n\n  if ((0,_http_request_helper__WEBPACK_IMPORTED_MODULE_17__.portainerAgentManagerOperation)()) {\n    newConfig.headers['X-PortainerAgent-ManagerOperation'] = '1';\n  }\n\n  return newConfig;\n}\naxios.interceptors.request.use(agentInterceptor);\nfunction parseAxiosError(err) {\n  var msg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  var parseError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultErrorParser;\n  var resultErr = err;\n  var resultMsg = msg;\n\n  if ('isAxiosError' in err) {\n    var _parseError = parseError(err),\n        error = _parseError.error,\n        details = _parseError.details;\n\n    resultErr = error;\n\n    if (msg && details) {\n      resultMsg = \"\".concat(msg, \": \").concat(details);\n    } else {\n      resultMsg = msg || details;\n    }\n  }\n\n  return new _portainer_error__WEBPACK_IMPORTED_MODULE_15__[\"default\"](resultMsg, resultErr);\n}\n\nfunction defaultErrorParser(axiosError) {\n  var _axiosError$response, _axiosError$response2;\n\n  var message = ((_axiosError$response = axiosError.response) === null || _axiosError$response === void 0 ? void 0 : _axiosError$response.data.message) || '';\n  var details = ((_axiosError$response2 = axiosError.response) === null || _axiosError$response2 === void 0 ? void 0 : _axiosError$response2.data.details) || message;\n  var error = new Error(message);\n  return {\n    error: error,\n    details: details\n  };\n}//# sourceURL=webpack-internal:///6811\n");

}),

50477:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"registryAuthenticationHeader\": function() { return /* binding */ registryAuthenticationHeader; },\n/* harmony export */   \"setRegistryAuthenticationHeader\": function() { return /* binding */ setRegistryAuthenticationHeader; },\n/* harmony export */   \"portainerAgentTargetHeader\": function() { return /* binding */ portainerAgentTargetHeader; },\n/* harmony export */   \"setPortainerAgentTargetHeader\": function() { return /* binding */ setPortainerAgentTargetHeader; },\n/* harmony export */   \"setPortainerAgentManagerOperation\": function() { return /* binding */ setPortainerAgentManagerOperation; },\n/* harmony export */   \"portainerAgentManagerOperation\": function() { return /* binding */ portainerAgentManagerOperation; },\n/* harmony export */   \"resetAgentHeaders\": function() { return /* binding */ resetAgentHeaders; },\n/* harmony export */   \"HttpRequestHelperAngular\": function() { return /* binding */ HttpRequestHelperAngular; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar headers = {\n  agentTargetQueue: [],\n  agentManagerOperation: false,\n  agentTargetLastValue: ''\n};\nfunction registryAuthenticationHeader() {\n  return headers.registryAuthentication;\n}\nfunction setRegistryAuthenticationHeader(headerValue) {\n  headers.registryAuthentication = headerValue;\n} // Due to the fact that async HTTP requests are decorated using an interceptor\n// we need to store and retrieve the headers using a first-in-first-out (FIFO) data structure.\n// Otherwise, sequential HTTP requests might end up using the same header value (incorrect in the case\n// of starting multiple containers on different nodes for example).\n// To prevent having to use the HttpRequestHelper.setPortainerAgentTargetHeader before EACH request,\n// we re-use the latest available header in the data structure (handy in thee case of multiple requests affecting\n// the same node in the same view).\n\nfunction portainerAgentTargetHeader() {\n  if (headers.agentTargetQueue.length === 0) {\n    return headers.agentTargetLastValue;\n  }\n\n  if (headers.agentTargetQueue.length === 1) {\n    var _headers$agentTargetQ = _slicedToArray(headers.agentTargetQueue, 1),\n        lastValue = _headers$agentTargetQ[0];\n\n    headers.agentTargetLastValue = lastValue;\n  }\n\n  return headers.agentTargetQueue.shift() || '';\n}\nfunction setPortainerAgentTargetHeader(headerValue) {\n  if (headerValue) {\n    headers.agentTargetQueue.push(headerValue);\n  }\n}\nfunction setPortainerAgentManagerOperation(set) {\n  headers.agentManagerOperation = set;\n}\nfunction portainerAgentManagerOperation() {\n  return headers.agentManagerOperation;\n}\nfunction resetAgentHeaders() {\n  headers.agentTargetQueue = [];\n  headers.agentTargetLastValue = '';\n  headers.agentManagerOperation = false;\n  delete headers.registryAuthentication;\n}\n/* @ngInject */\n\nfunction HttpRequestHelperAngular() {\n  return {\n    registryAuthenticationHeader: registryAuthenticationHeader,\n    setRegistryAuthenticationHeader: setRegistryAuthenticationHeader,\n    portainerAgentTargetHeader: portainerAgentTargetHeader,\n    setPortainerAgentTargetHeader: setPortainerAgentTargetHeader,\n    setPortainerAgentManagerOperation: setPortainerAgentManagerOperation,\n    portainerAgentManagerOperation: portainerAgentManagerOperation,\n    resetAgentHeaders: resetAgentHeaders\n  };\n}//# sourceURL=webpack-internal:///50477\n");

}),

15183:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./api */ 67683);\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notifications */ 46021);\n/* harmony import */ var _modal_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modal.service */ 18409);\n/* harmony import */ var _http_request_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./http-request.helper */ 50477);\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app.services', [_api__WEBPACK_IMPORTED_MODULE_2__.apiServicesModule]).factory('Notifications', _notifications__WEBPACK_IMPORTED_MODULE_3__.Notifications).factory('ModalService', _modal_service__WEBPACK_IMPORTED_MODULE_4__.ModalServiceAngular).factory('HttpRequestHelper', _http_request_helper__WEBPACK_IMPORTED_MODULE_5__.HttpRequestHelperAngular).name);//# sourceURL=webpack-internal:///15183\n");

}),

46980:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"confirmWebEditorDiscard\": function() { return /* binding */ confirmWebEditorDiscard; },\n/* harmony export */   \"confirmAsync\": function() { return /* binding */ confirmAsync; },\n/* harmony export */   \"confirmDestructiveAsync\": function() { return /* binding */ confirmDestructiveAsync; },\n/* harmony export */   \"confirm\": function() { return /* binding */ confirm; },\n/* harmony export */   \"confirmWarn\": function() { return /* binding */ confirmWarn; },\n/* harmony export */   \"confirmDestructive\": function() { return /* binding */ confirmDestructive; },\n/* harmony export */   \"confirmImageForceRemoval\": function() { return /* binding */ confirmImageForceRemoval; },\n/* harmony export */   \"cancelRegistryRepositoryAction\": function() { return /* binding */ cancelRegistryRepositoryAction; },\n/* harmony export */   \"confirmDeletion\": function() { return /* binding */ confirmDeletion; },\n/* harmony export */   \"confirmWithTitle\": function() { return /* binding */ confirmWithTitle; },\n/* harmony export */   \"confirmDetachment\": function() { return /* binding */ confirmDetachment; },\n/* harmony export */   \"confirmDisassociate\": function() { return /* binding */ confirmDisassociate; },\n/* harmony export */   \"confirmUpdate\": function() { return /* binding */ confirmUpdate; },\n/* harmony export */   \"confirmRedeploy\": function() { return /* binding */ confirmRedeploy; },\n/* harmony export */   \"confirmDeletionAsync\": function() { return /* binding */ confirmDeletionAsync; },\n/* harmony export */   \"confirmImageExport\": function() { return /* binding */ confirmImageExport; },\n/* harmony export */   \"confirmChangePassword\": function() { return /* binding */ confirmChangePassword; },\n/* harmony export */   \"confirmForceChangePassword\": function() { return /* binding */ confirmForceChangePassword; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! sanitize-html */ 43695);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! bootbox */ 53062);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(bootbox__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils */ 89230);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\nfunction confirmWebEditorDiscard() {\n  var options = {\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？'),\n    message: '你目前在编辑器中有未保存的修改。你确定你要离开吗？',\n    buttons: {\n      confirm: {\n        label: '是的',\n        className: 'btn-danger'\n      }\n    }\n  };\n  return new Promise(function (resolve) {\n    confirm(_objectSpread(_objectSpread({}, options), {}, {\n      callback: function callback(confirmed) {\n        return resolve(confirmed);\n      }\n    }));\n  });\n}\nfunction confirmAsync(options) {\n  return new Promise(function (resolve) {\n    confirm(_objectSpread(_objectSpread({}, options), {}, {\n      title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)(options.title),\n      callback: function callback(confirmed) {\n        return resolve(confirmed);\n      }\n    }));\n  });\n}\nfunction confirmDestructiveAsync(options) {\n  return new Promise(function (resolve) {\n    confirm(_objectSpread(_objectSpread({}, options), {}, {\n      title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)(options.title, _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive),\n      callback: function callback(confirmed) {\n        return resolve(confirmed);\n      }\n    }));\n  });\n}\nfunction confirm(options) {\n  var box = bootbox__WEBPACK_IMPORTED_MODULE_8___default().confirm({\n    title: options.title,\n    message: options.message,\n    buttons: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.confirmButtons)(options.buttons),\n    callback: options.callback\n  });\n  (0,_utils__WEBPACK_IMPORTED_MODULE_9__.applyBoxCSS)(box);\n}\nfunction confirmWarn(options) {\n  confirm(_objectSpread(_objectSpread({}, options), {}, {\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)(options.title, _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Warn)\n  }));\n}\nfunction confirmDestructive(options) {\n  confirm(_objectSpread(_objectSpread({}, options), {}, {\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)(options.title, _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive)\n  }));\n}\nfunction confirmImageForceRemoval(callback) {\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？', _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive),\n    message: '强制删除镜像将删除该镜像，即使它有多个标签，或者它被停止的容器使用。',\n    buttons: {\n      confirm: {\n        label: '移除镜像',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n}\nfunction cancelRegistryRepositoryAction(callback) {\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？', _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive),\n    message: '警告：在此操作完成之前中断，将导致所有标签丢失。你确定你要这样做吗？',\n    buttons: {\n      confirm: {\n        label: '停止',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmDeletion(message, callback) {\n  var messageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message);\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？', _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive),\n    message: messageSanitized,\n    buttons: {\n      confirm: {\n        label: '删除',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmWithTitle(title, message, callback) {\n  var messageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message);\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)(title, _utils__WEBPACK_IMPORTED_MODULE_9__.ModalTypeIcon.Destructive),\n    message: messageSanitized,\n    buttons: {\n      confirm: {\n        label: '删除',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmDetachment(message, callback) {\n  var messageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message);\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？'),\n    message: messageSanitized,\n    buttons: {\n      confirm: {\n        label: '断开',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmDisassociate(callback) {\n  var message = '<p>解除这个边缘环境的关联将把它标记为非关联，并将清除注册的边缘ID。</p>' + '<p>任何用与此环境相关的Edge密钥启动的代理将能够与此环境重新关联。</p>' + '<p>你可以重新使用你用来部署现有Edge代理的Edge ID和Edge密钥，将一个新的Edge设备关联到这个环境。</p>';\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('关于取消关联'),\n    message: sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message),\n    buttons: {\n      confirm: {\n        label: 'Disassociate',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmUpdate(message, callback) {\n  var messageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message);\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？'),\n    message: messageSanitized,\n    buttons: {\n      confirm: {\n        label: '更新',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmRedeploy(message, callback) {\n  var messageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_10___default()(message);\n  confirm({\n    title: '',\n    message: messageSanitized,\n    buttons: {\n      confirm: {\n        label: '重新部署应用程序',\n        className: 'btn-primary'\n      },\n      cancel: {\n        label: \"我稍后再做\"\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmDeletionAsync(message) {\n  return new Promise(function (resolve) {\n    confirmDeletion(message, function (confirmed) {\n      return resolve(confirmed);\n    });\n  });\n}\nfunction confirmImageExport(callback) {\n  confirm({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('警告'),\n    message: '导出可能需要数分钟，在导出过程中不要浏览。',\n    buttons: {\n      confirm: {\n        label: '继续',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmChangePassword() {\n  return confirmAsync({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.buildTitle)('你确定吗？'),\n    message: '更改密码后，你将被注销。你想改变你的密码吗？',\n    buttons: {\n      confirm: {\n        label: '更改',\n        className: 'btn-primary'\n      }\n    }\n  });\n}\nfunction confirmForceChangePassword() {\n  var box = bootbox__WEBPACK_IMPORTED_MODULE_8___default().dialog({\n    message: '请将您的密码更新为更强的密码，以便继续使用Portainer。',\n    buttons: {\n      confirm: {\n        label: 'OK',\n        className: 'btn-primary'\n      }\n    }\n  });\n  (0,_utils__WEBPACK_IMPORTED_MODULE_9__.applyBoxCSS)(box);\n}//# sourceURL=webpack-internal:///46980\n");

}),

18409:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"enlargeImage\": function() { return /* binding */ enlargeImage; },\n/* harmony export */   \"ModalServiceAngular\": function() { return /* binding */ ModalServiceAngular; }\n/* harmony export */ });\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! sanitize-html */ 43695);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootbox */ 53062);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootbox__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _confirm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./confirm */ 46980);\n/* harmony import */ var _prompt__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./prompt */ 77918);\n\n\n\n\nfunction enlargeImage(imageUrl) {\n  var imageSanitized = sanitize_html__WEBPACK_IMPORTED_MODULE_3___default()(imageUrl);\n  bootbox__WEBPACK_IMPORTED_MODULE_0___default().dialog({\n    message: \"<img src=\\\"\".concat(imageSanitized, \"\\\" style=\\\"width:100%\\\" />\"),\n    className: 'image-zoom-modal',\n    onEscape: true\n  });\n}\n/* @ngInject */\n\nfunction ModalServiceAngular() {\n  return {\n    enlargeImage: enlargeImage,\n    confirmWebEditorDiscard: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmWebEditorDiscard,\n    confirmAsync: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmAsync,\n    confirmWarn: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmWarn,\n    confirmDestructive: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDestructive,\n    confirmDestructiveAsync: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDestructiveAsync,\n    confirm: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirm,\n    confirmImageForceRemoval: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmImageForceRemoval,\n    cancelRegistryRepositoryAction: _confirm__WEBPACK_IMPORTED_MODULE_1__.cancelRegistryRepositoryAction,\n    confirmDeletion: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDeletion,\n    confirmDetachment: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDetachment,\n    confirmDisassociate: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDisassociate,\n    confirmUpdate: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmUpdate,\n    confirmRedeploy: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmRedeploy,\n    confirmDeletionAsync: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmDeletionAsync,\n    confirmContainerRecreation: _prompt__WEBPACK_IMPORTED_MODULE_2__.confirmContainerRecreation,\n    confirmChangePassword: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmChangePassword,\n    confirmImageExport: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmImageExport,\n    confirmServiceForceUpdate: _prompt__WEBPACK_IMPORTED_MODULE_2__.confirmServiceForceUpdate,\n    confirmStackUpdate: _prompt__WEBPACK_IMPORTED_MODULE_2__.confirmStackUpdate,\n    selectRegistry: _prompt__WEBPACK_IMPORTED_MODULE_2__.selectRegistry,\n    confirmContainerDeletion: _prompt__WEBPACK_IMPORTED_MODULE_2__.confirmContainerDeletion,\n    confirmForceChangePassword: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmForceChangePassword,\n    confirmWithTitle: _confirm__WEBPACK_IMPORTED_MODULE_1__.confirmWithTitle\n  };\n}//# sourceURL=webpack-internal:///18409\n");

}),

77918:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"promptAsync\": function() { return /* binding */ promptAsync; },\n/* harmony export */   \"prompt\": function() { return /* binding */ prompt; },\n/* harmony export */   \"confirmContainerDeletion\": function() { return /* binding */ confirmContainerDeletion; },\n/* harmony export */   \"confirmUpdateAppIngress\": function() { return /* binding */ confirmUpdateAppIngress; },\n/* harmony export */   \"selectRegistry\": function() { return /* binding */ selectRegistry; },\n/* harmony export */   \"confirmContainerRecreation\": function() { return /* binding */ confirmContainerRecreation; },\n/* harmony export */   \"confirmServiceForceUpdate\": function() { return /* binding */ confirmServiceForceUpdate; },\n/* harmony export */   \"confirmStackUpdate\": function() { return /* binding */ confirmStackUpdate; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! sanitize-html */ 43695);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! bootbox */ 53062);\n/* harmony import */ var bootbox__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(bootbox__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils */ 89230);\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\nfunction promptAsync(_x) {\n  return _promptAsync.apply(this, arguments);\n} // the ts-ignore is required because the bootbox typings are not up to date\n// remove the ts-ignore when the typings are updated in\n\nfunction _promptAsync() {\n  _promptAsync = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            return _context.abrupt(\"return\", new Promise(function (resolve) {\n              prompt(_objectSpread(_objectSpread({}, options), {}, {\n                callback: function callback(result) {\n                  return resolve(result);\n                }\n              }));\n            }));\n\n          case 1:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _promptAsync.apply(this, arguments);\n}\n\nfunction prompt(options) {\n  var box = bootbox__WEBPACK_IMPORTED_MODULE_10___default().prompt({\n    title: options.title,\n    inputType: options.inputType,\n    inputOptions: options.inputOptions,\n    buttons: options.buttons ? (0,_utils__WEBPACK_IMPORTED_MODULE_11__.confirmButtons)(options.buttons) : undefined,\n    // casting is done because ts definition expects string=>any, but library code can emit different values, based on inputType\n    callback: options.callback,\n    value: options.value\n  });\n  (0,_utils__WEBPACK_IMPORTED_MODULE_11__.applyBoxCSS)(box);\n  return box;\n}\nfunction confirmContainerDeletion(title, callback) {\n  prompt({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.buildTitle)(title, _utils__WEBPACK_IMPORTED_MODULE_11__.ModalTypeIcon.Destructive),\n    inputType: 'checkbox',\n    inputOptions: [{\n      text: '自动删除非永久性存储卷<i></i>',\n      value: '1'\n    }],\n    buttons: {\n      confirm: {\n        label: '删除',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n}\nfunction confirmUpdateAppIngress(title, message, inputText, callback) {\n  prompt({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.buildTitle)(title),\n    inputType: 'checkbox',\n    message: message,\n    inputOptions: [{\n      text: \"\".concat(inputText, \"<i></i>\"),\n      value: '1'\n    }],\n    buttons: {\n      confirm: {\n        label: '更新',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n}\nfunction selectRegistry(options) {\n  prompt(options);\n}\nfunction confirmContainerRecreation(cannotPullImage, callback) {\n  var box = prompt({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.buildTitle)('你确定吗？', _utils__WEBPACK_IMPORTED_MODULE_11__.ModalTypeIcon.Destructive),\n    inputType: 'checkbox',\n    inputOptions: [{\n      text: '拉取最新镜像<i></i>',\n      value: '1'\n    }],\n    buttons: {\n      confirm: {\n        label: '重新创建',\n        className: 'btn-danger'\n      }\n    },\n    callback: callback\n  });\n  var message = \"\\u4F60\\u8981\\u91CD\\u65B0\\u521B\\u5EFA\\u8FD9\\u4E2A\\u5BB9\\u5668\\uFF0C\\u4EFB\\u4F55\\u4E0D\\u5B58\\u5728\\u7684\\u6570\\u636E\\u90FD\\u4F1A\\u4E22\\u5931\\u3002\\u8FD9\\u4E2A\\u5BB9\\u5668\\u5C06\\u88AB\\u5220\\u9664\\uFF0C\\u53E6\\u4E00\\u4E2A\\u5BB9\\u5668\\u5C06\\u4F7F\\u7528\\u76F8\\u540C\\u7684\\u914D\\u7F6E\\u88AB\\u521B\\u5EFA\\u3002\";\n  box.find('.bootbox-body').prepend(\"<p>\".concat(message, \"</p>\"));\n  var label = box.find('.form-check-label');\n  label.css('padding-left', '5px');\n  label.css('padding-right', '25px');\n\n  if (cannotPullImage) {\n    label.css('cursor', 'not-allowed');\n    label.find('i').css('cursor', 'not-allowed');\n    var checkbox = box.find('.bootbox-input-checkbox');\n    checkbox.prop('disabled', true);\n    var formCheck = box.find('.form-check');\n    formCheck.prop('style', 'height: 45px;');\n    var cannotPullImageMessage = \"<div class=\\\"fa fa-exclamation-triangle text-warning\\\"/>\\n               <div class=\\\"inline-text text-warning\\\">\\n                   <span>\\u4E0D\\u80FD\\u62C9\\u53D6\\u6700\\u65B0\\u7684\\u955C\\u50CF\\uFF0C\\u56E0\\u4E3A\\u8BE5\\u955C\\u50CF\\u65E0\\u6CD5\\u8BBF\\u95EE--\\u8981\\u4E48\\u5B83\\u4E0D\\u518D\\u5B58\\u5728\\uFF0C\\u8981\\u4E48\\u6807\\u7B7E\\u6216\\u540D\\u79F0\\u4E0D\\u518D\\u6B63\\u786E\\u3002\\n                   </span>\\n               </div>\";\n    formCheck.append(\"\".concat(cannotPullImageMessage));\n  }\n}\nfunction confirmServiceForceUpdate(message, callback) {\n  var sanitizedMessage = sanitize_html__WEBPACK_IMPORTED_MODULE_12___default()(message);\n  var box = prompt({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.buildTitle)('你确定吗？'),\n    inputType: 'checkbox',\n    inputOptions: [{\n      text: '拉取最新镜像版本<i></i>',\n      value: '1'\n    }],\n    buttons: {\n      confirm: {\n        label: '更新',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n  customizeCheckboxPrompt(box, sanitizedMessage);\n}\nfunction confirmStackUpdate(message, defaultToggle, confirmButtonClass, callback) {\n  var sanitizedMessage = sanitize_html__WEBPACK_IMPORTED_MODULE_12___default()(message);\n  var box = prompt({\n    title: (0,_utils__WEBPACK_IMPORTED_MODULE_11__.buildTitle)('你确定吗？'),\n    inputType: 'checkbox',\n    inputOptions: [{\n      text: '重新拉取镜像并重新部署<i></i>',\n      value: '1'\n    }],\n    buttons: {\n      confirm: {\n        label: '更新',\n        className: 'btn-primary'\n      }\n    },\n    callback: callback\n  });\n  customizeCheckboxPrompt(box, sanitizedMessage, defaultToggle);\n}\n\nfunction customizeCheckboxPrompt(box, message) {\n  var toggleCheckbox = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var showCheck = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  box.find('.bootbox-body').prepend(\"<p>\".concat(message, \"</p>\"));\n  var checkbox = box.find('.bootbox-input-checkbox');\n  checkbox.prop('checked', toggleCheckbox);\n\n  if (showCheck) {\n    checkbox.addClass('visible');\n  }\n}//# sourceURL=webpack-internal:///77918\n");

}),

89230:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ModalTypeIcon\": function() { return /* binding */ ModalTypeIcon; },\n/* harmony export */   \"confirmButtons\": function() { return /* binding */ confirmButtons; },\n/* harmony export */   \"buildTitle\": function() { return /* binding */ buildTitle; },\n/* harmony export */   \"applyBoxCSS\": function() { return /* binding */ applyBoxCSS; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sanitize-html */ 43695);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar ModalTypeIcon;\n\n(function (ModalTypeIcon) {\n  ModalTypeIcon[\"Warn\"] = \"warning\";\n  ModalTypeIcon[\"Destructive\"] = \"error\";\n})(ModalTypeIcon || (ModalTypeIcon = {}));\n\nfunction confirmButtons(options) {\n  return {\n    confirm: {\n      label: sanitize_html__WEBPACK_IMPORTED_MODULE_1___default()(options.confirm.label),\n      className: options.confirm.className && sanitize_html__WEBPACK_IMPORTED_MODULE_1___default()(options.confirm.className)\n    },\n    cancel: {\n      label: options.cancel && options.cancel.label ? sanitize_html__WEBPACK_IMPORTED_MODULE_1___default()(options.cancel.label) : '取消',\n      className: 'btn-default'\n    }\n  };\n}\nfunction buildTitle(title) {\n  var modalType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ModalTypeIcon.Warn;\n  return \"\\n    <div class=\\\"background-\".concat(modalType, \"\\\">\\n      <h5 class=\\\"modal-title\\\">\").concat(sanitize_html__WEBPACK_IMPORTED_MODULE_1___default()(title), \"</h5>\\n    </div>\\n  \");\n}\nfunction applyBoxCSS(box) {\n  box.css({\n    'vertical-align': 'middle'\n  });\n}//# sourceURL=webpack-internal:///89230\n");

}),

46021:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"notifySuccess\": function() { return /* binding */ notifySuccess; },\n/* harmony export */   \"notifyWarning\": function() { return /* binding */ notifyWarning; },\n/* harmony export */   \"notifyError\": function() { return /* binding */ notifyError; },\n/* harmony export */   \"success\": function() { return /* binding */ success; },\n/* harmony export */   \"error\": function() { return /* binding */ error; },\n/* harmony export */   \"warning\": function() { return /* binding */ warning; },\n/* harmony export */   \"Notifications\": function() { return /* binding */ Notifications; }\n/* harmony export */ });\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/get */ 6632);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_escape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/escape */ 3520);\n/* harmony import */ var lodash_escape__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_escape__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var toastr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! toastr */ 3100);\n/* harmony import */ var toastr__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(toastr__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sanitize-html */ 43695);\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var jwt_decode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! jwt-decode */ 3696);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! uuid */ 64001);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(uuid__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_portainer_notifications_notifications_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/notifications/notifications-store */ 76598);\n\n\n\n\n\n\n\n\n\n\nvar _notificationsStore$g = _react_portainer_notifications_notifications_store__WEBPACK_IMPORTED_MODULE_7__.notificationsStore.getState(),\n    addNotification = _notificationsStore$g.addNotification;\n\n(toastr__WEBPACK_IMPORTED_MODULE_3___default().options) = {\n  timeOut: 3000,\n  closeButton: true,\n  progressBar: true,\n  tapToDismiss: false,\n  // custom button, using the feather icon x.svg inside\n  closeHtml: \"<button type=\\\"button\\\"><svg\\n  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n  width=\\\"18\\\"\\n  height=\\\"18\\\"\\n  viewBox=\\\"0 0 24 24\\\"\\n  fill=\\\"none\\\"\\n  stroke=\\\"currentColor\\\"\\n  stroke-width=\\\"2\\\"\\n  stroke-linecap=\\\"round\\\"\\n  stroke-linejoin=\\\"round\\\"\\n>\\n  <line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\" />\\n  <line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\" />\\n</svg></button>\"\n};\nfunction notifySuccess(title, text) {\n  saveNotification(title, text, 'success');\n  toastr__WEBPACK_IMPORTED_MODULE_3___default().success(sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(lodash_escape__WEBPACK_IMPORTED_MODULE_1___default()(text)), sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(lodash_escape__WEBPACK_IMPORTED_MODULE_1___default()(title)));\n}\nfunction notifyWarning(title, text) {\n  saveNotification(title, text, 'warning');\n  toastr__WEBPACK_IMPORTED_MODULE_3___default().warning(sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(lodash_escape__WEBPACK_IMPORTED_MODULE_1___default()(text)), sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(title), {\n    timeOut: 6000\n  });\n}\nfunction notifyError(title, e) {\n  var fallbackText = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n  var msg = pickErrorMsg(e) || fallbackText;\n  saveNotification(title, msg, 'error'); // eslint-disable-next-line no-console\n\n  console.error(e);\n\n  if (msg !== 'Invalid JWT token') {\n    toastr__WEBPACK_IMPORTED_MODULE_3___default().error(sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(lodash_escape__WEBPACK_IMPORTED_MODULE_1___default()(msg)), sanitize_html__WEBPACK_IMPORTED_MODULE_8___default()(title), {\n      timeOut: 6000\n    });\n  }\n}\nvar success = notifySuccess;\nvar error = notifyError;\nvar warning = notifyWarning;\n/* @ngInject */\n\nfunction Notifications() {\n  return {\n    success: notifySuccess,\n    warning: notifyWarning,\n    error: notifyError\n  };\n}\n\nfunction pickErrorMsg(e) {\n  if (!e) {\n    return '';\n  }\n\n  var props = ['err.data.details', 'err.data.message', 'data.details', 'data.message', 'data.content', 'data.error', 'message', 'err.data[0].message', 'err.data.err', 'data.err', 'msg'];\n  var msg = '';\n  props.forEach(function (prop) {\n    var val = lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(e, prop);\n\n    if (typeof val === 'string') {\n      msg = msg || val;\n    }\n  });\n  return msg;\n}\n\nfunction saveNotification(title, text, type) {\n  var notif = {\n    id: (0,uuid__WEBPACK_IMPORTED_MODULE_5__.v4)(),\n    title: title,\n    details: text,\n    type: type,\n    timeStamp: new Date()\n  };\n  var jwt = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_6__.get)('JWT', '');\n\n  if (jwt !== '') {\n    var _ref = (0,jwt_decode__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(jwt),\n        id = _ref.id;\n\n    if (id) {\n      addNotification(id, notif);\n    }\n  }\n}//# sourceURL=webpack-internal:///46021\n");

}),

42491:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"terminalClose\": function() { return /* binding */ terminalClose; },\n/* harmony export */   \"terminalResize\": function() { return /* binding */ terminalResize; }\n/* harmony export */ });\nvar terminalHeight = 495;\nfunction terminalClose() {\n  update('100%', 'initial');\n}\nfunction terminalResize() {\n  var contentWrapperHeight = window.innerHeight;\n  var newContentWrapperHeight = contentWrapperHeight - terminalHeight;\n  update(\"\".concat(newContentWrapperHeight, \"px\"), 'auto');\n}\n\nfunction update(height, overflowY) {\n  var pageWrapper = document.getElementById('pageWrapper-wrapper');\n\n  if (pageWrapper) {\n    pageWrapper.style.height = height;\n    pageWrapper.style.overflowY = overflowY;\n  }\n}//# sourceURL=webpack-internal:///42491\n");

}),

71143:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _assets_ico_vendor_openldap_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/openldap.svg?c */ 70003);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nvar SERVER_TYPES = {\n  CUSTOM: 0,\n  OPEN_LDAP: 1,\n  AD: 2\n};\nvar options = [{\n  id: 'ldap_custom',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_2__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  }),\n  label: 'Custom',\n  value: SERVER_TYPES.CUSTOM\n}, {\n  id: 'ldap_openldap',\n  icon: _assets_ico_vendor_openldap_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  label: 'OpenLDAP',\n  value: SERVER_TYPES.OPEN_LDAP,\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.EXTERNAL_AUTH_LDAP\n}];//# sourceURL=webpack-internal:///71143\n");

}),

22878:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useTags\": function() { return /* binding */ useTags; },\n/* harmony export */   \"useCreateTagMutation\": function() { return /* binding */ useCreateTagMutation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _tags_service__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./tags.service */ 79794);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\nvar tagKeys = {\n  all: ['tags'],\n  tag: function tag(id) {\n    return [].concat(_toConsumableArray(tagKeys.all), [id]);\n  }\n};\nfunction useTags(select) {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_17__.useQuery)(tagKeys.all, function () {\n    return (0,_tags_service__WEBPACK_IMPORTED_MODULE_19__.getTags)();\n  }, _objectSpread({\n    staleTime: 50,\n    select: select\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_18__.withError)('Failed to retrieve tags'))),\n      data = _useQuery.data,\n      isLoading = _useQuery.isLoading;\n\n  return {\n    tags: data,\n    isLoading: isLoading\n  };\n}\nfunction useCreateTagMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_17__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_17__.useMutation)(_tags_service__WEBPACK_IMPORTED_MODULE_19__.createTag, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_18__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_18__.withError)('Unable to create tag'), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_18__.withInvalidate)(queryClient, [tagKeys.all])));\n}//# sourceURL=webpack-internal:///22878\n");

}),

79794:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTags\": function() { return /* binding */ getTags; },\n/* harmony export */   \"createTag\": function() { return /* binding */ createTag; },\n/* harmony export */   \"deleteTag\": function() { return /* binding */ deleteTag; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getTags() {\n  return _getTags.apply(this, arguments);\n}\n\nfunction _getTags() {\n  _getTags = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl());\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve tags');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getTags.apply(this, arguments);\n}\n\nfunction createTag(_x) {\n  return _createTag.apply(this, arguments);\n}\n\nfunction _createTag() {\n  _createTag = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(name) {\n    var _yield$axios$post, tag;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(buildUrl(), {\n              name: name\n            });\n\n          case 3:\n            _yield$axios$post = _context2.sent;\n            tag = _yield$axios$post.data;\n            return _context2.abrupt(\"return\", tag);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to create tag');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _createTag.apply(this, arguments);\n}\n\nfunction deleteTag(_x2) {\n  return _deleteTag.apply(this, arguments);\n}\n\nfunction _deleteTag() {\n  _deleteTag = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(id) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"][\"delete\"](buildUrl(id));\n\n          case 3:\n            _context3.next = 8;\n            break;\n\n          case 5:\n            _context3.prev = 5;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context3.t0, 'Unable to delte tag');\n\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 5]]);\n  }));\n  return _deleteTag.apply(this, arguments);\n}\n\nfunction buildUrl(id) {\n  var url = '/tags';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///79794\n");

}),

45565:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useUserMembership\": function() { return /* binding */ useUserMembership; },\n/* harmony export */   \"useIsTeamLeader\": function() { return /* binding */ useIsTeamLeader; },\n/* harmony export */   \"useUsers\": function() { return /* binding */ useUsers; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/portainer/users/teams/types */ 43247);\n/* harmony import */ var _user_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./user.helpers */ 26795);\n/* harmony import */ var _user_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./user.service */ 96263);\n\n\n\n\n\nfunction useUserMembership(userId) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      enabled = _ref.enabled,\n      select = _ref.select;\n\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_1__.useQuery)(['users', userId, 'memberships'], function () {\n    return (0,_user_service__WEBPACK_IMPORTED_MODULE_4__.getUserMemberships)(userId);\n  }, {\n    select: select,\n    enabled: enabled\n  });\n}\nfunction useIsTeamLeader(user) {\n  var query = useUserMembership(user.Id, {\n    enabled: !(0,_user_helpers__WEBPACK_IMPORTED_MODULE_3__.isAdmin)(user),\n    select: function select(memberships) {\n      return memberships.some(function (membership) {\n        return membership.Role === _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_2__.TeamRole.Leader;\n      });\n    }\n  });\n  return (0,_user_helpers__WEBPACK_IMPORTED_MODULE_3__.isAdmin)(user) ? true : query.data;\n}\nfunction useUsers() {\n  var includeAdministrator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  var environmentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var enabled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  var select = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (data) {\n    return data;\n  };\n  var users = (0,react_query__WEBPACK_IMPORTED_MODULE_1__.useQuery)(['users'], function () {\n    return (0,_user_service__WEBPACK_IMPORTED_MODULE_4__.getUsers)(includeAdministrator, environmentId);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to load users'\n      }\n    },\n    enabled: enabled,\n    select: select\n  });\n  return users;\n}//# sourceURL=webpack-internal:///45565\n");

}),

37293:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Role\": function() { return /* binding */ Role; }\n/* harmony export */ });\nvar Role;\n\n(function (Role) {\n  Role[Role[\"Admin\"] = 1] = \"Admin\";\n  Role[Role[\"Standard\"] = 2] = \"Standard\";\n})(Role || (Role = {}));//# sourceURL=webpack-internal:///37293\n");

}),

26795:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"filterNonAdministratorUsers\": function() { return /* binding */ filterNonAdministratorUsers; },\n/* harmony export */   \"isAdmin\": function() { return /* binding */ isAdmin; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ 37293);\n\n\n\nfunction filterNonAdministratorUsers(users) {\n  return users.filter(function (user) {\n    return user.Role !== _types__WEBPACK_IMPORTED_MODULE_2__.Role.Admin;\n  });\n}\nfunction isAdmin(user) {\n  return !!user && user.Role === 1;\n}//# sourceURL=webpack-internal:///26795\n");

}),

96263:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getUsers\": function() { return /* binding */ getUsers; },\n/* harmony export */   \"getUser\": function() { return /* binding */ getUser; },\n/* harmony export */   \"getUserMemberships\": function() { return /* binding */ getUserMemberships; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _user_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./user.helpers */ 26795);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction getUsers() {\n  return _getUsers.apply(this, arguments);\n}\n\nfunction _getUsers() {\n  _getUsers = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var includeAdministrators,\n        environmentId,\n        _yield$axios$get,\n        data,\n        _args = arguments;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            includeAdministrators = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n            environmentId = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;\n            _context.prev = 2;\n            _context.next = 5;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(), {\n              params: {\n                environmentId: environmentId\n              }\n            });\n\n          case 5:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", includeAdministrators ? data : (0,_user_helpers__WEBPACK_IMPORTED_MODULE_4__.filterNonAdministratorUsers)(data));\n\n          case 10:\n            _context.prev = 10;\n            _context.t0 = _context[\"catch\"](2);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve users');\n\n          case 13:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[2, 10]]);\n  }));\n  return _getUsers.apply(this, arguments);\n}\n\nfunction getUser(_x) {\n  return _getUser.apply(this, arguments);\n}\n\nfunction _getUser() {\n  _getUser = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(id) {\n    var _yield$axios$get2, user;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(id));\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            user = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", user);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to retrieve user details');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getUser.apply(this, arguments);\n}\n\nfunction getUserMemberships(_x2) {\n  return _getUserMemberships.apply(this, arguments);\n}\n\nfunction _getUserMemberships() {\n  _getUserMemberships = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(id) {\n    var _yield$axios$get3, data;\n\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(id, 'memberships'));\n\n          case 3:\n            _yield$axios$get3 = _context3.sent;\n            data = _yield$axios$get3.data;\n            return _context3.abrupt(\"return\", data);\n\n          case 8:\n            _context3.prev = 8;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context3.t0, 'Unable to retrieve user memberships');\n\n          case 11:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 8]]);\n  }));\n  return _getUserMemberships.apply(this, arguments);\n}\n\nfunction buildUrl(id, entity) {\n  var url = '/users';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  if (entity) {\n    url += \"/\".concat(entity);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///96263\n");

}),

79301:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KVMControl\": function() { return /* binding */ KVMControl; },\n/* harmony export */   \"KVMControlAngular\": function() { return /* binding */ KVMControlAngular; }\n/* harmony export */ });\n/* harmony import */ var _open_amt_cloud_toolkit_ui_toolkit_react_reactjs_src_kvm_bundle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @open-amt-cloud-toolkit/ui-toolkit-react/reactjs/src/kvm.bundle */ 91602);\n/* harmony import */ var _open_amt_cloud_toolkit_ui_toolkit_react_reactjs_src_kvm_bundle__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_open_amt_cloud_toolkit_ui_toolkit_react_reactjs_src_kvm_bundle__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _KVMControl_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./KVMControl.css */ 9913);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction KVMControl(_ref) {\n  var deviceId = _ref.deviceId,\n      server = _ref.server,\n      token = _ref.token;\n  if (!deviceId || !server || !token) return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    children: \"\\u52A0\\u8F7D\\u4E2D...\"\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_open_amt_cloud_toolkit_ui_toolkit_react_reactjs_src_kvm_bundle__WEBPACK_IMPORTED_MODULE_0__.KVM, {\n    deviceId: deviceId,\n    mpsServer: \"https://\".concat(server, \"/mps/ws/relay\"),\n    authToken: token,\n    mouseDebounceTime: \"200\",\n    canvasHeight: \"100%\",\n    canvasWidth: \"100%\"\n  });\n}\nvar KVMControlAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_1__.react2angular)(KVMControl, ['deviceId', 'server', 'token']);//# sourceURL=webpack-internal:///79301\n");

}),

43643:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var _assets_ico_vendor_docker_svg_c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/assets/ico/vendor/docker.svg?c */ 94822);\n/* harmony import */ var _assets_ico_vendor_ecr_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/ecr.svg?c */ 60218);\n/* harmony import */ var _assets_ico_vendor_quay_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/vendor/quay.svg?c */ 25830);\n/* harmony import */ var _assets_ico_vendor_proget_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/ico/vendor/proget.svg?c */ 36470);\n/* harmony import */ var _assets_ico_vendor_azure_svg_c__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/assets/ico/vendor/azure.svg?c */ 23669);\n/* harmony import */ var _assets_ico_vendor_gitlab_svg_c__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/assets/ico/vendor/gitlab.svg?c */ 79309);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nvar options = [{\n  id: 'registry_dockerhub',\n  icon: _assets_ico_vendor_docker_svg_c__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  label: 'DockerHub',\n  description: 'DockerHub的认证账户',\n  value: '6'\n}, {\n  id: 'registry_aws_ecr',\n  icon: _assets_ico_vendor_ecr_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  label: 'AWS ECR',\n  description: '亚马逊弹性容器注册表',\n  value: '7'\n}, {\n  id: 'registry_quay',\n  icon: _assets_ico_vendor_quay_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  label: 'Quay.io',\n  description: 'Quay容器注册表',\n  value: '1'\n}, {\n  id: 'registry_proget',\n  icon: _assets_ico_vendor_proget_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  label: 'ProGet',\n  description: 'ProGet容器注册表',\n  value: '5'\n}, {\n  id: 'registry_azure',\n  icon: _assets_ico_vendor_azure_svg_c__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  label: 'Azure',\n  description: 'Azure容器注册表',\n  value: '2'\n}, {\n  id: 'registry_gitlab',\n  icon: _assets_ico_vendor_gitlab_svg_c__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  label: 'Gitlab',\n  description: 'Gitlab容器注册表',\n  value: '4'\n}, {\n  id: 'registry_custom',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_6__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n  }),\n  label: '自定义注册表',\n  description: '定义自己的注册表',\n  value: '3'\n}];//# sourceURL=webpack-internal:///43643\n");

}),

93878:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 47282);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/microsoft.svg?c */ 80257);\n/* harmony import */ var _assets_ico_ldap_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/ldap.svg?c */ 82942);\n/* harmony import */ var _assets_ico_oauth_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/ico/oauth.svg?c */ 89830);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar options = [{\n  id: 'auth_internal',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_4__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  }),\n  label: 'Internal',\n  description: '内部身份验证机制',\n  value: 1\n}, {\n  id: 'auth_ldap',\n  icon: _assets_ico_ldap_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  label: 'LDAP',\n  description: 'LDAP身份验证',\n  value: 2\n}, {\n  id: 'auth_ad',\n  icon: _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  label: 'Microsoft Active Directory',\n  description: 'AD 身份验证',\n  value: 4,\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.HIDE_INTERNAL_AUTH\n}, {\n  id: 'auth_oauth',\n  icon: _assets_ico_oauth_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  label: 'OAuth',\n  description: 'OAuth身份验证',\n  value: 3\n}];//# sourceURL=webpack-internal:///93878\n");

}),

70610:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"options\": function() { return /* binding */ options; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 19912);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 91687);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nvar options = [{\n  id: 'backup_file',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n  }),\n  featherIcon: true,\n  label: '下载备份文件',\n  value: 'file'\n}, {\n  id: 'backup_s3',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  }),\n  featherIcon: true,\n  label: 'Store in S3',\n  description: '定义cron计划',\n  value: 's3',\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.S3_BACKUP_SETTING\n}];//# sourceURL=webpack-internal:///70610\n");

}),

53347:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withError\": function() { return /* binding */ withError; },\n/* harmony export */   \"withGlobalError\": function() { return /* binding */ withGlobalError; },\n/* harmony export */   \"withInvalidate\": function() { return /* binding */ withInvalidate; },\n/* harmony export */   \"mutationOptions\": function() { return /* binding */ mutationOptions; },\n/* harmony export */   \"queryOptions\": function() { return /* binding */ queryOptions; },\n/* harmony export */   \"createQueryClient\": function() { return /* binding */ createQueryClient; },\n/* harmony export */   \"queryClient\": function() { return /* binding */ queryClient; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction withError(fallbackMessage) {\n  var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Failure';\n  return {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_15__.notifyError)(title, error, fallbackMessage);\n    }\n  };\n}\nfunction withGlobalError(fallbackMessage) {\n  var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Failure';\n  return {\n    meta: {\n      error: {\n        message: fallbackMessage,\n        title: title\n      }\n    }\n  };\n}\nfunction withInvalidate(queryClient, queryKeysToInvalidate) {\n  return {\n    onSuccess: function onSuccess() {\n      return Promise.all(queryKeysToInvalidate.map(function (keys) {\n        return queryClient.invalidateQueries(keys);\n      }));\n    }\n  };\n}\nfunction mutationOptions() {\n  for (var _len = arguments.length, options = new Array(_len), _key = 0; _key < _len; _key++) {\n    options[_key] = arguments[_key];\n  }\n\n  return mergeOptions(options);\n}\nfunction queryOptions() {\n  for (var _len2 = arguments.length, options = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    options[_key2] = arguments[_key2];\n  }\n\n  return mergeOptions(options);\n}\n\nfunction mergeOptions(options) {\n  return options.reduce(function (acc, option) {\n    return _objectSpread(_objectSpread({}, acc), option);\n  }, {});\n}\n\nfunction createQueryClient() {\n  return new react_query__WEBPACK_IMPORTED_MODULE_14__.QueryClient({\n    mutationCache: new react_query__WEBPACK_IMPORTED_MODULE_14__.MutationCache({\n      onError: function onError(error, variable, context, mutation) {\n        var _mutation$meta;\n\n        handleError(error, (_mutation$meta = mutation.meta) === null || _mutation$meta === void 0 ? void 0 : _mutation$meta.error);\n      }\n    }),\n    queryCache: new react_query__WEBPACK_IMPORTED_MODULE_14__.QueryCache({\n      onError: function onError(error, mutation) {\n        var _mutation$meta2;\n\n        handleError(error, (_mutation$meta2 = mutation.meta) === null || _mutation$meta2 === void 0 ? void 0 : _mutation$meta2.error);\n      }\n    })\n  });\n}\n\nfunction handleError(error, errorMeta) {\n  if (errorMeta && _typeof(errorMeta) === 'object') {\n    var _ref = errorMeta,\n        _ref$title = _ref.title,\n        title = _ref$title === void 0 ? 'Failure' : _ref$title,\n        message = _ref.message;\n    (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_15__.notifyError)(title, error, message);\n  }\n}\n\nvar queryClient = createQueryClient();//# sourceURL=webpack-internal:///53347\n");

}),

3731:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"react2angular\": function() { return /* binding */ react2angular; },\n/* harmony export */   \"r2a\": function() { return /* binding */ r2a; }\n/* harmony export */ });\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/camelCase */ 81651);\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_camelCase__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-dom */ 79153);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction toProps(propNames, controller, $q) {\n  return Object.fromEntries(propNames.map(function (key) {\n    var prop = controller[key];\n\n    if (typeof prop !== 'function') {\n      return [key, prop];\n    }\n\n    return [key, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return $q(function (resolve) {\n        return resolve(controller[key].apply(controller, args));\n      });\n    }];\n  }));\n}\n\n/**\n * react2angular is used to bind a React component to an AngularJS component\n * it used in an AngularJS module definition:\n *\n * `.component('componentName', react2angular(ComponentName, ['prop1', 'prop2']))`\n *\n * if the second parameter has any ts errors check that the component has the correct props\n */\nfunction react2angular(Component, propNames) {\n  Controller.$inject = [\"$element\", \"$q\"];\n  var bindings = Object.fromEntries(propNames.map(function (key) {\n    return [key, '<'];\n  }));\n  return {\n    bindings: bindings,\n    controller: Controller,\n    name: lodash_camelCase__WEBPACK_IMPORTED_MODULE_0___default()(Component.displayName || Component.name)\n  };\n  /* @ngInject */\n\n  function Controller($element, $q) {\n    var _this = this;\n\n    var isDestroyed = false;\n    var el = $element[0];\n\n    this.$onChanges = function () {\n      if (!isDestroyed) {\n        var props = toProps(propNames, _this, $q);\n        react_dom__WEBPACK_IMPORTED_MODULE_12__.render( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react__WEBPACK_IMPORTED_MODULE_13__.StrictMode, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(Component, _objectSpread({}, props))\n        }), el);\n      }\n    };\n\n    this.$onDestroy = function () {\n      if (!isDestroyed) {\n        isDestroyed = true;\n        react_dom__WEBPACK_IMPORTED_MODULE_12__.unmountComponentAtNode(el);\n      }\n    };\n  }\n}\nvar r2a = react2angular;//# sourceURL=webpack-internal:///3731\n");

}),

54269:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withCurrentUser\": function() { return /* binding */ withCurrentUser; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction withCurrentUser(WrappedComponent) {\n  // Try to create a nice displayName for React Dev Tools.\n  var displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n  function WrapperComponent(props) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.UserProvider, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(WrappedComponent, _objectSpread({}, props))\n    });\n  }\n\n  WrapperComponent.displayName = displayName;\n  return WrapperComponent;\n}//# sourceURL=webpack-internal:///54269\n");

}),

26350:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withI18nSuspense\": function() { return /* binding */ withI18nSuspense; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction withI18nSuspense(WrappedComponent) {\n  // Try to create a nice displayName for React Dev Tools.\n  var displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n  function WrapperComponent(props) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react__WEBPACK_IMPORTED_MODULE_8__.Suspense, {\n      fallback: \"Loading translations...\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(WrappedComponent, _objectSpread({}, props))\n    });\n  }\n\n  WrapperComponent.displayName = displayName;\n  return WrapperComponent;\n}//# sourceURL=webpack-internal:///26350\n");

}),

65280:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withReactQuery\": function() { return /* binding */ withReactQuery; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./react-query */ 53347);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\nfunction withReactQuery(WrappedComponent) {\n  var queryClient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _react_query__WEBPACK_IMPORTED_MODULE_9__.queryClient;\n  // Try to create a nice displayName for React Dev Tools.\n  var displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n  function WrapperComponent(props) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(react_query__WEBPACK_IMPORTED_MODULE_8__.QueryClientProvider, {\n      client: queryClient,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(WrappedComponent, _objectSpread({}, props))\n    });\n  }\n\n  WrapperComponent.displayName = displayName;\n  return WrapperComponent;\n}//# sourceURL=webpack-internal:///65280\n");

}),

81800:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withUIRouter\": function() { return /* binding */ withUIRouter; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _uirouter_react_hybrid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @uirouter/react-hybrid */ 27433);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction withUIRouter(WrappedComponent) {\n  // Try to create a nice displayName for React Dev Tools.\n  var displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n  function WrapperComponent(props) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_uirouter_react_hybrid__WEBPACK_IMPORTED_MODULE_8__.UIRouterContextComponent, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(WrappedComponent, _objectSpread({}, props))\n    });\n  }\n\n  WrapperComponent.displayName = displayName;\n  return WrapperComponent;\n}//# sourceURL=webpack-internal:///81800\n");

}),

22399:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DashboardView\": function() { return /* binding */ DashboardView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ 89999);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ 58613);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-feather */ 27162);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _DashboardItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/DashboardItem */ 73390);\n/* harmony import */ var _DashboardItem_DashboardGrid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/DashboardItem/DashboardGrid */ 33694);\n/* harmony import */ var _queries_useResourceGroups__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../queries/useResourceGroups */ 37580);\n/* harmony import */ var _queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../queries/useSubscriptions */ 40001);\n/* harmony import */ var _icon_subscription_svg_c__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./icon-subscription.svg?c */ 43941);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction DashboardView() {\n  var _subscriptionsQuery$d;\n\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_4__.useEnvironmentId)();\n  var subscriptionsQuery = (0,_queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_9__.useSubscriptions)(environmentId);\n  var resourceGroupsQuery = (0,_queries_useResourceGroups__WEBPACK_IMPORTED_MODULE_8__.useResourceGroups)(environmentId, subscriptionsQuery.data);\n  var subscriptionsCount = (_subscriptionsQuery$d = subscriptionsQuery.data) === null || _subscriptionsQuery$d === void 0 ? void 0 : _subscriptionsQuery$d.length;\n  var resourceGroupsCount = Object.values(resourceGroupsQuery.resourceGroups).flatMap(function (x) {\n    return Object.values(x);\n  }).length;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_5__.PageHeader, {\n      title: \"\\u9996\\u9875\",\n      breadcrumbs: [{\n        label: '仪表板'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n      className: \"mx-4\",\n      children: subscriptionsQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_DashboardItem_DashboardGrid__WEBPACK_IMPORTED_MODULE_7__.DashboardGrid, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DashboardItem__WEBPACK_IMPORTED_MODULE_6__.DashboardItem, {\n          value: subscriptionsCount,\n          icon: _icon_subscription_svg_c__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n          type: \"Subscription\"\n        }), !resourceGroupsQuery.isError && !resourceGroupsQuery.isLoading && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DashboardItem__WEBPACK_IMPORTED_MODULE_6__.DashboardItem, {\n          value: resourceGroupsCount,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n          type: \"Resource group\"\n        })]\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///22399\n");

}),

84446:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DashboardView": function() { return /* reexport safe */ _DashboardView__WEBPACK_IMPORTED_MODULE_0__.DashboardView; }
/* harmony export */ });
/* harmony import */ var _DashboardView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DashboardView */ 22399);


}),

30730:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateContainerInstanceForm\": function() { return /* binding */ CreateContainerInstanceForm; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_portainer_access_control_AccessControlForm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react/portainer/access-control/AccessControlForm */ 59107);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _CreateContainerInstanceForm_validation__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CreateContainerInstanceForm.validation */ 99440);\n/* harmony import */ var _PortsMappingField__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PortsMappingField */ 53957);\n/* harmony import */ var _useLoadFormState__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./useLoadFormState */ 85395);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils */ 74023);\n/* harmony import */ var _useCreateInstanceMutation__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./useCreateInstanceMutation */ 49270);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CreateContainerInstanceForm() {\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_11__.useEnvironmentId)();\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var _useLoadFormState = (0,_useLoadFormState__WEBPACK_IMPORTED_MODULE_18__.useLoadFormState)(environmentId),\n      providers = _useLoadFormState.providers,\n      subscriptions = _useLoadFormState.subscriptions,\n      resourceGroups = _useLoadFormState.resourceGroups,\n      isLoading = _useLoadFormState.isLoading;\n\n  var _useFormState = (0,_useLoadFormState__WEBPACK_IMPORTED_MODULE_18__.useFormState)(subscriptions, resourceGroups, providers),\n      initialValues = _useFormState.initialValues,\n      subscriptionOptions = _useFormState.subscriptionOptions;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_7__.useRouter)();\n\n  var _useCreateInstanceMut = (0,_useCreateInstanceMutation__WEBPACK_IMPORTED_MODULE_20__.useCreateInstanceMutation)(resourceGroups, environmentId),\n      mutateAsync = _useCreateInstanceMut.mutateAsync;\n\n  if (isLoading) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Formik, {\n    initialValues: initialValues,\n    validationSchema: function validationSchema() {\n      return (0,_CreateContainerInstanceForm_validation__WEBPACK_IMPORTED_MODULE_16__.validationSchema)(isAdmin);\n    },\n    onSubmit: onSubmit,\n    validateOnMount: true,\n    validateOnChange: true,\n    enableReinitialize: true,\n    children: function children(_ref) {\n      var errors = _ref.errors,\n          handleSubmit = _ref.handleSubmit,\n          isSubmitting = _ref.isSubmitting,\n          isValid = _ref.isValid,\n          values = _ref.values,\n          setFieldValue = _ref.setFieldValue;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_6__.Form, {\n        className: \"form-horizontal\",\n        onSubmit: handleSubmit,\n        noValidate: true,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_14__.FormSectionTitle, {\n          children: \"Azure settings\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u8BA2\\u9605\",\n          inputId: \"subscription-input\",\n          errors: errors.subscription,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"subscription\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Select,\n            id: \"subscription-input\",\n            options: subscriptionOptions\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u8D44\\u6E90\\u7EC4\",\n          inputId: \"resourceGroup-input\",\n          errors: errors.resourceGroup,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"resourceGroup\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Select,\n            id: \"resourceGroup-input\",\n            options: (0,_utils__WEBPACK_IMPORTED_MODULE_19__.getSubscriptionResourceGroups)(values.subscription, resourceGroups)\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u4F4D\\u7F6E\",\n          inputId: \"location-input\",\n          errors: errors.location,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"location\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Select,\n            id: \"location-input\",\n            options: (0,_utils__WEBPACK_IMPORTED_MODULE_19__.getSubscriptionLocations)(values.subscription, providers)\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_14__.FormSectionTitle, {\n          children: \"\\u5BB9\\u5668\\u914D\\u7F6E\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u540D\\u79F0\",\n          inputId: \"name-input\",\n          errors: errors.name,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"name\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Input,\n            id: \"name-input\",\n            placeholder: \"e.g. myContainer\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u955C\\u50CF\",\n          inputId: \"image-input\",\n          errors: errors.image,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"image\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Input,\n            id: \"image-input\",\n            placeholder: \"e.g. nginx:alpine\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"OS\",\n          inputId: \"os-input\",\n          errors: errors.os,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"os\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Select,\n            id: \"os-input\",\n            options: [{\n              label: 'Linux',\n              value: 'Linux'\n            }, {\n              label: 'Windows',\n              value: 'Windows'\n            }]\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_PortsMappingField__WEBPACK_IMPORTED_MODULE_17__.PortsMappingField, {\n          value: values.ports,\n          onChange: function onChange(value) {\n            return setFieldValue('ports', value);\n          },\n          errors: errors.ports\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n            className: \"col-sm-12 small text-muted\",\n            children: \"\\u8FD9\\u5C06\\u81EA\\u52A8\\u90E8\\u7F72\\u4E00\\u4E2A\\u5177\\u6709\\u516C\\u5171IP\\u5730\\u5740\\u7684\\u5BB9\\u5668\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_14__.FormSectionTitle, {\n          children: \"\\u5BB9\\u5668\\u8D44\\u6E90\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"CPU\",\n          inputId: \"cpu-input\",\n          errors: errors.cpu,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"cpu\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Input,\n            id: \"cpu-input\",\n            type: \"number\",\n            placeholder: \"1\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n          label: \"\\u5185\\u5B58\",\n          inputId: \"cpu-input\",\n          errors: errors.memory,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_6__.Field, {\n            name: \"memory\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Input,\n            id: \"memory-input\",\n            type: \"number\",\n            placeholder: \"1\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_react_portainer_access_control_AccessControlForm__WEBPACK_IMPORTED_MODULE_10__.AccessControlForm, {\n          formNamespace: \"accessControl\",\n          onChange: function onChange(values) {\n            return setFieldValue('accessControl', values);\n          },\n          values: values.accessControl,\n          errors: errors.accessControl\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__.LoadingButton, {\n              disabled: !isValid,\n              isLoading: isSubmitting,\n              loadingText: \"\\u90E8\\u7F72\\u6B63\\u5728\\u8FDB\\u884C\\u4E2D...\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"i\", {\n                className: \"fa fa-plus space-right\",\n                \"aria-hidden\": \"true\"\n              }), \"\\u90E8\\u7F72\\u5BB9\\u5668\"]\n            })\n          })\n        })]\n      });\n    }\n  });\n\n  function onSubmit(_x) {\n    return _onSubmit.apply(this, arguments);\n  }\n\n  function _onSubmit() {\n    _onSubmit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              _context.next = 3;\n              return mutateAsync(values);\n\n            case 3:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_8__.success('容器成功创建', values.name);\n              router.stateService.go('azure.containerinstances');\n              _context.next = 10;\n              break;\n\n            case 7:\n              _context.prev = 7;\n              _context.t0 = _context[\"catch\"](0);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_8__.error('Failure', _context.t0, '无法创建容器');\n\n            case 10:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[0, 7]]);\n    }));\n    return _onSubmit.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///30730\n");

}),

99440:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_portainer_access_control_AccessControlForm_AccessControlForm_validation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/access-control/AccessControlForm/AccessControlForm.validation */ 77568);\n/* harmony import */ var _PortsMappingField_validation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PortsMappingField.validation */ 23229);\n\n\n\nfunction validationSchema(isAdmin) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    name: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('名称是必填项。'),\n    image: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('镜像是必填项。'),\n    subscription: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('需要订阅。'),\n    resourceGroup: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('需要资源组。'),\n    location: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('位置是必填项。'),\n    os: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().oneOf(['Linux', 'Windows']),\n    cpu: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)().positive(),\n    memory: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)().positive(),\n    allocatePublicIP: (0,yup__WEBPACK_IMPORTED_MODULE_0__.boolean)(),\n    ports: (0,_PortsMappingField_validation__WEBPACK_IMPORTED_MODULE_2__.validationSchema)(),\n    accessControl: (0,_react_portainer_access_control_AccessControlForm_AccessControlForm_validation__WEBPACK_IMPORTED_MODULE_1__.validationSchema)(isAdmin)\n  });\n}//# sourceURL=webpack-internal:///99440\n");

}),

63490:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateView\": function() { return /* binding */ CreateView; }\n/* harmony export */ });\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _CreateContainerInstanceForm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateContainerInstanceForm */ 30730);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction CreateView() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_0__.PageHeader, {\n      title: \"\\u521B\\u5EFA\\u5BB9\\u5668\\u5B9E\\u4F8B\",\n      breadcrumbs: [{\n        link: 'azure.containerinstances',\n        label: 'Container instances'\n      }, {\n        label: '添加容器'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_1__.Widget, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_1__.WidgetBody, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_CreateContainerInstanceForm__WEBPACK_IMPORTED_MODULE_2__.CreateContainerInstanceForm, {})\n          })\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///63490\n");

}),

53957:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PortsMappingField\": function() { return /* binding */ PortsMappingField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _form_components_ButtonSelector_ButtonSelector__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/form-components/ButtonSelector/ButtonSelector */ 27026);\n/* harmony import */ var _form_components_FormError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/form-components/FormError */ 24751);\n/* harmony import */ var _form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/form-components/InputGroup */ 40413);\n/* harmony import */ var _form_components_InputList__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/form-components/InputList */ 59505);\n/* harmony import */ var _PortsMappingField_module_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PortsMappingField.module.css */ 13104);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction PortsMappingField(_ref) {\n  var value = _ref.value,\n      _ref$onChange = _ref.onChange,\n      onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,\n      errors = _ref.errors,\n      disabled = _ref.disabled,\n      readOnly = _ref.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputList__WEBPACK_IMPORTED_MODULE_11__.InputList, {\n      label: \"Port mapping\",\n      value: value,\n      onChange: onChange,\n      addLabel: \"map additional port\",\n      itemBuilder: function itemBuilder() {\n        return {\n          host: 0,\n          container: 0,\n          protocol: 'TCP'\n        };\n      },\n      item: Item,\n      errors: errors,\n      disabled: disabled,\n      readOnly: readOnly\n    }), typeof errors === 'string' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n      className: \"form-group col-md-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_9__.FormError, {\n        children: errors\n      })\n    })]\n  });\n}\n\nfunction Item(_ref2) {\n  var onChange = _ref2.onChange,\n      item = _ref2.item,\n      error = _ref2.error,\n      disabled = _ref2.disabled,\n      readOnly = _ref2.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n    className: _PortsMappingField_module_css__WEBPACK_IMPORTED_MODULE_12__[\"default\"].item,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n      className: \"flex items-center gap-2\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup, {\n        size: \"small\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup.Addon, {\n          children: \"host\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup.Input, {\n          placeholder: \"e.g. 80\",\n          value: item.host,\n          onChange: function onChange(e) {\n            return handleChange('host', parseInt(e.target.value || '0', 10));\n          },\n          disabled: disabled,\n          readOnly: readOnly,\n          type: \"number\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"span\", {\n        className: \"mx-3\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"i\", {\n          className: \"fa fa-long-arrow-alt-right\",\n          \"aria-hidden\": \"true\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup, {\n        size: \"small\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup.Addon, {\n          children: \"container\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_10__.InputGroup.Input, {\n          placeholder: \"e.g. 80\",\n          value: item.container,\n          onChange: function onChange(e) {\n            return handleChange('container', parseInt(e.target.value || '0', 10));\n          },\n          disabled: disabled,\n          readOnly: readOnly,\n          type: \"number\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_ButtonSelector_ButtonSelector__WEBPACK_IMPORTED_MODULE_8__.ButtonSelector, {\n        onChange: function onChange(value) {\n          return handleChange('protocol', value);\n        },\n        value: item.protocol,\n        options: [{\n          value: 'TCP'\n        }, {\n          value: 'UDP'\n        }],\n        disabled: disabled,\n        readOnly: readOnly\n      })]\n    }), !!error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n      className: _PortsMappingField_module_css__WEBPACK_IMPORTED_MODULE_12__[\"default\"].errors,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_9__.FormError, {\n        children: Object.values(error)[0]\n      })\n    })]\n  });\n\n  function handleChange(name, value) {\n    onChange(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, name, value)));\n  }\n}//# sourceURL=webpack-internal:///53957\n");

}),

23229:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.array)((0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    host: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('host is required'),\n    container: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('container is required'),\n    protocol: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().oneOf(['TCP', 'UDP'])\n  })).min(1, 'At least one port binding is required');\n}//# sourceURL=webpack-internal:///23229\n");

}),

3740:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CreateView": function() { return /* reexport safe */ _CreateView__WEBPACK_IMPORTED_MODULE_0__.CreateView; }
/* harmony export */ });
/* harmony import */ var _CreateView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateView */ 63490);


}),

49270:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCreateInstanceMutation\": function() { return /* binding */ useCreateInstanceMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_azure_services_container_groups_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/azure/services/container-groups.service */ 51417);\n/* harmony import */ var _react_azure_queries_query_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/azure/queries/query-keys */ 67157);\n/* harmony import */ var _portainer_error__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/error */ 20023);\n/* harmony import */ var _react_portainer_access_control_access_control_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/portainer/access-control/access-control.service */ 63625);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils */ 74023);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\nfunction useCreateInstanceMutation(resourceGroups, environmentId) {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useMutation)(function (values) {\n    if (!values.subscription) {\n      throw new _portainer_error__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('subscription is required');\n    }\n\n    var subscriptionResourceGroup = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.getSubscriptionResourceGroups)(values.subscription, resourceGroups);\n    var resourceGroup = subscriptionResourceGroup.find(function (r) {\n      return r.value === values.resourceGroup;\n    });\n\n    if (!resourceGroup) {\n      throw new _portainer_error__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('resource group not found');\n    }\n\n    return (0,_react_azure_services_container_groups_service__WEBPACK_IMPORTED_MODULE_5__.createContainerGroup)(values, environmentId, values.subscription, resourceGroup.label);\n  }, {\n    onSuccess: function onSuccess(containerGroup, values) {\n      return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _containerGroup$Porta;\n\n        var resourceControl, accessControlData;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                resourceControl = (_containerGroup$Porta = containerGroup.Portainer) === null || _containerGroup$Porta === void 0 ? void 0 : _containerGroup$Porta.ResourceControl;\n\n                if (resourceControl) {\n                  _context.next = 3;\n                  break;\n                }\n\n                throw new _portainer_error__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('resource control expected after creation');\n\n              case 3:\n                accessControlData = values.accessControl;\n                _context.next = 6;\n                return (0,_react_portainer_access_control_access_control_service__WEBPACK_IMPORTED_MODULE_8__.applyResourceControl)(accessControlData, resourceControl);\n\n              case 6:\n                return _context.abrupt(\"return\", queryClient.invalidateQueries(_react_azure_queries_query_keys__WEBPACK_IMPORTED_MODULE_6__.queryKeys.subscriptions(environmentId)));\n\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    }\n  });\n}//# sourceURL=webpack-internal:///49270\n");

}),

85395:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useLoadFormState\": function() { return /* binding */ useLoadFormState; },\n/* harmony export */   \"useFormState\": function() { return /* binding */ useFormState; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_portainer_access_control_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/access-control/utils */ 33287);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_azure_queries_useProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/azure/queries/useProvider */ 10678);\n/* harmony import */ var _react_azure_queries_useResourceGroups__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/azure/queries/useResourceGroups */ 37580);\n/* harmony import */ var _react_azure_queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/azure/queries/useSubscriptions */ 40001);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ 74023);\n\n\n\n\n\n\n\nfunction useLoadFormState(environmentId) {\n  var _useSubscriptions = (0,_react_azure_queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_5__.useSubscriptions)(environmentId),\n      subscriptions = _useSubscriptions.data,\n      isLoadingSubscriptions = _useSubscriptions.isLoading;\n\n  var _useResourceGroups = (0,_react_azure_queries_useResourceGroups__WEBPACK_IMPORTED_MODULE_4__.useResourceGroups)(environmentId, subscriptions),\n      resourceGroups = _useResourceGroups.resourceGroups,\n      isLoadingResourceGroups = _useResourceGroups.isLoading;\n\n  var _useProvider = (0,_react_azure_queries_useProvider__WEBPACK_IMPORTED_MODULE_3__.useProvider)(environmentId, subscriptions),\n      providers = _useProvider.providers,\n      isLoadingProviders = _useProvider.isLoading;\n\n  var isLoading = isLoadingSubscriptions || isLoadingResourceGroups || isLoadingProviders;\n  return {\n    isLoading: isLoading,\n    subscriptions: subscriptions,\n    resourceGroups: resourceGroups,\n    providers: providers\n  };\n}\nfunction useFormState() {\n  var subscriptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var resourceGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var providers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var subscriptionOptions = subscriptions.map(function (s) {\n    return {\n      value: s.subscriptionId,\n      label: s.displayName\n    };\n  });\n  var initSubscriptionId = getFirstValue(subscriptionOptions);\n  var subscriptionResourceGroups = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getSubscriptionResourceGroups)(initSubscriptionId, resourceGroups);\n  var subscriptionLocations = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getSubscriptionLocations)(initSubscriptionId, providers);\n  var initialValues = {\n    name: '',\n    location: getFirstValue(subscriptionLocations),\n    subscription: initSubscriptionId,\n    resourceGroup: getFirstValue(subscriptionResourceGroups),\n    image: '',\n    os: 'Linux',\n    memory: 1,\n    cpu: 1,\n    ports: [{\n      container: 80,\n      host: 80,\n      protocol: 'TCP'\n    }],\n    allocatePublicIP: true,\n    accessControl: (0,_react_portainer_access_control_utils__WEBPACK_IMPORTED_MODULE_1__.parseAccessControlFormData)(isAdmin)\n  };\n  return {\n    initialValues: initialValues,\n    subscriptionOptions: subscriptionOptions\n  };\n\n  function getFirstValue(arr) {\n    if (arr.length === 0) {\n      return undefined;\n    }\n\n    return arr[0].value;\n  }\n}//# sourceURL=webpack-internal:///85395\n");

}),

74023:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSubscriptionResourceGroups\": function() { return /* binding */ getSubscriptionResourceGroups; },\n/* harmony export */   \"getSubscriptionLocations\": function() { return /* binding */ getSubscriptionLocations; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction getSubscriptionResourceGroups(subscriptionId, resourceGroups) {\n  if (!subscriptionId || !resourceGroups || !resourceGroups[subscriptionId]) {\n    return [];\n  }\n\n  return resourceGroups[subscriptionId].map(function (_ref) {\n    var name = _ref.name,\n        id = _ref.id;\n    return {\n      value: id,\n      label: name\n    };\n  });\n}\nfunction getSubscriptionLocations(subscriptionId, containerInstanceProviders) {\n  if (!subscriptionId || !containerInstanceProviders) {\n    return [];\n  }\n\n  var provider = containerInstanceProviders[subscriptionId];\n\n  if (!provider) {\n    return [];\n  }\n\n  return provider.locations.map(function (location) {\n    return {\n      value: location,\n      label: location\n    };\n  });\n}//# sourceURL=webpack-internal:///74023\n");

}),

62745:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemView\": function() { return /* binding */ ItemView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 49329);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _react_portainer_access_control_AccessControlPanel_AccessControlPanel__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/react/portainer/access-control/AccessControlPanel/AccessControlPanel */ 60113);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var _react_azure_queries_useContainerGroup__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/react/azure/queries/useContainerGroup */ 90880);\n/* harmony import */ var _react_azure_queries_useResourceGroup__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @/react/azure/queries/useResourceGroup */ 40713);\n/* harmony import */ var _react_azure_queries_useSubscription__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/react/azure/queries/useSubscription */ 15189);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _CreateView_PortsMappingField__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../CreateView/PortsMappingField */ 53957);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ItemView() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_18__.useCurrentStateAndParams)(),\n      id = _useCurrentStateAndPa.params.id;\n\n  var _parseId = parseId(id),\n      subscriptionId = _parseId.subscriptionId,\n      resourceGroupId = _parseId.resourceGroupId,\n      containerGroupId = _parseId.containerGroupId;\n\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_20__.useEnvironmentId)();\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_19__.useQueryClient)();\n  var subscriptionQuery = (0,_react_azure_queries_useSubscription__WEBPACK_IMPORTED_MODULE_26__.useSubscription)(environmentId, subscriptionId);\n  var resourceGroupQuery = (0,_react_azure_queries_useResourceGroup__WEBPACK_IMPORTED_MODULE_25__.useResourceGroup)(environmentId, subscriptionId, resourceGroupId);\n  var containerQuery = (0,_react_azure_queries_useContainerGroup__WEBPACK_IMPORTED_MODULE_24__.useContainerGroup)(environmentId, subscriptionId, resourceGroupId, containerGroupId);\n\n  if (!subscriptionQuery.isSuccess || !resourceGroupQuery.isSuccess || !containerQuery.isSuccess) {\n    return null;\n  }\n\n  var container = aggregateContainerData(subscriptionQuery.data, resourceGroupQuery.data, containerQuery.data);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_29__.PageHeader, {\n      title: \"\\u5BB9\\u5668\\u5B9E\\u4F8B\",\n      breadcrumbs: [{\n        link: 'azure.containerinstances',\n        label: '容器实例'\n      }, {\n        label: container.name\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_28__.Widget, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_28__.WidgetBody, {\n            className: \"form-horizontal\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_30__.FormSectionTitle, {\n              children: \"Azure \\u8BBE\\u7F6E\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u8BA2\\u9605\",\n              inputId: \"subscription-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"subscription\",\n                id: \"subscription-input\",\n                value: container.subscriptionName,\n                readOnly: true\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u8D44\\u6E90\\u7EC4\",\n              inputId: \"resourceGroup-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"resourceGroup\",\n                id: \"resourceGroup-input\",\n                value: container.resourceGroupName,\n                readOnly: true\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u4F4D\\u7F6E\",\n              inputId: \"location-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"location\",\n                id: \"location-input\",\n                value: container.location,\n                readOnly: true\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_30__.FormSectionTitle, {\n              children: \"\\u5BB9\\u5668\\u914D\\u7F6E\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u540D\\u79F0\",\n              inputId: \"name-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"name\",\n                id: \"name-input\",\n                readOnly: true,\n                value: container.name\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u955C\\u50CF\",\n              inputId: \"image-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"image\",\n                id: \"image-input\",\n                value: container.imageName,\n                readOnly: true\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"OS\",\n              inputId: \"os-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"os\",\n                id: \"os-input\",\n                readOnly: true,\n                value: container.osType\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_CreateView_PortsMappingField__WEBPACK_IMPORTED_MODULE_32__.PortsMappingField, {\n              value: container.ports,\n              readOnly: true\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u516C\\u7F51 IP\",\n              inputId: \"public-ip\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"public-ip\",\n                id: \"public-ip\",\n                readOnly: true,\n                value: container.ipAddress\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_30__.FormSectionTitle, {\n              children: \"\\u5BB9\\u5668\\u8D44\\u6E90\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"CPU\",\n              inputId: \"cpu-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"cpu\",\n                id: \"cpu-input\",\n                type: \"number\",\n                placeholder: \"1\",\n                readOnly: true,\n                value: container.cpu\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_31__.FormControl, {\n              label: \"\\u5185\\u5B58\",\n              inputId: \"cpu-input\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_27__.Input, {\n                name: \"memory\",\n                id: \"memory-input\",\n                type: \"number\",\n                placeholder: \"1\",\n                readOnly: true,\n                value: container.memory\n              })\n            })]\n          })\n        })\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_react_portainer_access_control_AccessControlPanel_AccessControlPanel__WEBPACK_IMPORTED_MODULE_21__.AccessControlPanel, {\n      onUpdateSuccess: function onUpdateSuccess() {\n        return queryClient.invalidateQueries(['azure', environmentId, 'subscriptions', subscriptionId, 'resourceGroups', resourceGroupQuery.data.name, 'containerGroups', containerQuery.data.name]);\n      },\n      resourceId: id,\n      resourceControl: container.resourceControl,\n      resourceType: _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_23__.ResourceControlType.ContainerGroup,\n      environmentId: environmentId\n    })]\n  });\n}\n\nfunction parseId(id) {\n  var match = id.match(/^\\/subscriptions\\/(.+)\\/resourceGroups\\/(.+)\\/providers\\/(.+)\\/containerGroups\\/(.+)$/);\n\n  if (!match) {\n    throw new Error('container id is missing details');\n  }\n\n  var _match = _slicedToArray(match, 5),\n      subscriptionId = _match[1],\n      resourceGroupId = _match[2],\n      containerGroupId = _match[4];\n\n  return {\n    subscriptionId: subscriptionId,\n    resourceGroupId: resourceGroupId,\n    containerGroupId: containerGroupId\n  };\n}\n\nfunction aggregateContainerData(subscription, resourceGroup, containerGroup) {\n  var _containerGroup$Porta;\n\n  var containerInstanceData = aggregateContainerInstance();\n  var resourceControl = (_containerGroup$Porta = containerGroup.Portainer) !== null && _containerGroup$Porta !== void 0 && _containerGroup$Porta.ResourceControl ? new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_22__.ResourceControlViewModel(containerGroup.Portainer.ResourceControl) : undefined;\n  return _objectSpread({\n    name: containerGroup.name,\n    subscriptionName: subscription.displayName,\n    resourceGroupName: resourceGroup.name,\n    location: containerGroup.location,\n    osType: containerGroup.properties.osType,\n    ipAddress: containerGroup.properties.ipAddress.ip,\n    resourceControl: resourceControl\n  }, containerInstanceData);\n\n  function aggregateContainerInstance() {\n    var containerInstanceData = containerGroup.properties.containers[0];\n\n    if (!containerInstanceData) {\n      return {\n        ports: []\n      };\n    }\n\n    var containerInstanceProperties = containerInstanceData.properties;\n    var containerPorts = containerInstanceProperties.ports;\n    var imageName = containerInstanceProperties.image;\n    var ports = containerGroup.properties.ipAddress.ports.map(function (binding, index) {\n      var port = containerPorts && containerPorts[index] ? containerPorts[index].port : undefined;\n      return {\n        container: port,\n        host: binding.port,\n        protocol: binding.protocol\n      };\n    });\n    return {\n      imageName: imageName,\n      ports: ports,\n      cpu: containerInstanceProperties.resources.cpu,\n      memory: containerInstanceProperties.resources.memoryInGB\n    };\n  }\n}//# sourceURL=webpack-internal:///62745\n");

}),

47453:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ItemView": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_0__.ItemView; }
/* harmony export */ });
/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemView */ 62745);


}),

75029:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainersDatatable\": function() { return /* binding */ ContainersDatatable; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! react-feather */ 15638);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! react-feather */ 32346);\n/* harmony import */ var _portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/hooks/useDebounce */ 73903);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_filter_types__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @@/datatables/filter-types */ 35138);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/datatables/useRowSelect */ 89996);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @@/datatables/SelectedRowsCount */ 38276);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./columns */ 84542);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ContainersDatatable(_ref) {\n  var dataset = _ref.dataset,\n      tableKey = _ref.tableKey,\n      onRemoveClick = _ref.onRemoveClick;\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_27__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  var _useSearchBarState = (0,_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_28__.useSearchBarState)(tableKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      searchBarValue = _useSearchBarState2[0],\n      setSearchBarValue = _useSearchBarState2[1];\n\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_35__.useColumns)();\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_20__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: dataset,\n    filterTypes: {\n      multiple: _datatables_filter_types__WEBPACK_IMPORTED_MODULE_26__.multiple\n    },\n    initialState: {\n      pageSize: settings.pageSize || 10,\n      sortBy: [settings.sortBy],\n      globalFilter: searchBarValue\n    },\n    selectCheckboxComponent: _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_30__.Checkbox,\n    autoResetSelectedRows: false,\n    getRowId: function getRowId(row) {\n      return row.id;\n    }\n  }, react_table__WEBPACK_IMPORTED_MODULE_20__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_20__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_20__.usePagination, _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_29__.useRowSelect, _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_37__.useRowSelectColumn),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      selectedFlatRows = _useTable.selectedFlatRows,\n      gotoPage = _useTable.gotoPage,\n      setPageSize = _useTable.setPageSize,\n      setGlobalFilter = _useTable.setGlobalFilter,\n      _useTable$state = _useTable.state,\n      pageIndex = _useTable$state.pageIndex,\n      pageSize = _useTable$state.pageSize;\n\n  var debouncedSearchValue = (0,_portainer_hooks_useDebounce__WEBPACK_IMPORTED_MODULE_21__.useDebounce)(searchBarValue);\n  (0,react__WEBPACK_IMPORTED_MODULE_19__.useEffect)(function () {\n    setGlobalFilter(debouncedSearchValue);\n  }, [debouncedSearchValue, setGlobalFilter]);\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_25__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_25__.TableTitle, {\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n          label: \"\\u5BB9\\u5668\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_28__.SearchBar, {\n            value: searchBarValue,\n            onChange: handleSearchBarChange\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_25__.TableActions, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_22__.Authorized, {\n              authorizations: \"AzureContainerGroupDelete\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_33__.Button, {\n                color: \"dangerlight\",\n                disabled: selectedFlatRows.length === 0,\n                onClick: function onClick() {\n                  return handleRemoveClick(selectedFlatRows.map(function (row) {\n                    return row.original.id;\n                  }));\n                },\n                icon: react_feather__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n                children: \"Remove\"\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_22__.Authorized, {\n              authorizations: \"AzureContainerGroupCreate\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_34__.Link, {\n                to: \"azure.containerinstances.new\",\n                className: \"space-left\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_33__.Button, {\n                  icon: react_feather__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n                  children: \"\\u6DFB\\u52A0\\u5BB9\\u5668\"\n                })\n              })\n            })]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_25__.Table, {\n          className: tableProps.className,\n          role: tableProps.role,\n          style: tableProps.style,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(\"thead\", {\n            children: headerGroups.map(function (headerGroup) {\n              var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                  key = _headerGroup$getHeade.key,\n                  className = _headerGroup$getHeade.className,\n                  role = _headerGroup$getHeade.role,\n                  style = _headerGroup$getHeade.style;\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_25__.TableHeaderRow, {\n                className: className,\n                role: role,\n                style: style,\n                headers: headerGroup.headers,\n                onSortChange: handleSortChange\n              }, key);\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(\"tbody\", {\n            className: tbodyProps.className,\n            role: tbodyProps.role,\n            style: tbodyProps.style,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_25__.Table.Content, {\n              prepareRow: prepareRow,\n              renderRow: function renderRow(row, _ref2) {\n                var key = _ref2.key,\n                    className = _ref2.className,\n                    role = _ref2.role,\n                    style = _ref2.style;\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_25__.TableRow, {\n                  cells: row.cells,\n                  className: className,\n                  role: role,\n                  style: style\n                }, key);\n              },\n              rows: page,\n              emptyContent: \"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u5BB9\\u5668\\u3002\"\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsxs)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_31__.TableFooter, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_32__.SelectedRowsCount, {\n            value: selectedFlatRows.length\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_36__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_24__.PaginationControls, {\n            showAll: true,\n            pageLimit: pageSize,\n            page: pageIndex + 1,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p - 1);\n            },\n            totalCount: dataset.length,\n            onPageLimitChange: handlePageSizeChange\n          })]\n        })]\n      })\n    })\n  });\n\n  function handleRemoveClick(_x) {\n    return _handleRemoveClick.apply(this, arguments);\n  }\n\n  function _handleRemoveClick() {\n    _handleRemoveClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(containerIds) {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_23__.confirmDeletionAsync)('是否确实要删除所选容器？');\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\", null);\n\n            case 5:\n              return _context.abrupt(\"return\", onRemoveClick(containerIds));\n\n            case 6:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleRemoveClick.apply(this, arguments);\n  }\n\n  function handlePageSizeChange(pageSize) {\n    setPageSize(pageSize);\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        pageSize: pageSize\n      });\n    });\n  }\n\n  function handleSearchBarChange(value) {\n    setSearchBarValue(value);\n  }\n\n  function handleSortChange(id, desc) {\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        sortBy: {\n          id: id,\n          desc: desc\n        }\n      });\n    });\n  }\n}//# sourceURL=webpack-internal:///75029\n");

}),

42719:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ListView\": function() { return /* binding */ ListView; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_azure_services_container_groups_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/azure/services/container-groups.service */ 51417);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/helpers/promise-utils */ 19990);\n/* harmony import */ var _react_azure_queries_useContainerGroups__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react/azure/queries/useContainerGroups */ 44842);\n/* harmony import */ var _react_azure_queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react/azure/queries/useSubscriptions */ 40001);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _ContainersDatatable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ContainersDatatable */ 75029);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ListView() {\n  var defaultSettings = {\n    pageSize: 10,\n    sortBy: {\n      id: 'state',\n      desc: false\n    }\n  };\n  var tableKey = 'containergroups';\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_6__.useEnvironmentId)();\n  var subscriptionsQuery = (0,_react_azure_queries_useSubscriptions__WEBPACK_IMPORTED_MODULE_10__.useSubscriptions)(environmentId);\n  var groupsQuery = (0,_react_azure_queries_useContainerGroups__WEBPACK_IMPORTED_MODULE_9__.useContainerGroups)(environmentId, subscriptionsQuery.data, subscriptionsQuery.isSuccess);\n\n  var _useRemoveMutation = useRemoveMutation(environmentId),\n      handleRemove = _useRemoveMutation.handleRemove;\n\n  if (groupsQuery.isLoading || subscriptionsQuery.isLoading) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_11__.PageHeader, {\n      breadcrumbs: \"Container instances\",\n      reload: true,\n      title: \"\\u5BB9\\u5668\\u5217\\u8868\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_12__.TableSettingsProvider, {\n      defaults: defaultSettings,\n      storageKey: tableKey,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_ContainersDatatable__WEBPACK_IMPORTED_MODULE_13__.ContainersDatatable, {\n        tableKey: tableKey,\n        dataset: groupsQuery.containerGroups,\n        onRemoveClick: handleRemove\n      })\n    })]\n  });\n}\n\nfunction useRemoveMutation(environmentId) {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQueryClient)();\n  var deleteMutation = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useMutation)(function (containerGroupIds) {\n    return (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_8__.promiseSequence)(containerGroupIds.map(function (id) {\n      return function () {\n        return (0,_react_azure_services_container_groups_service__WEBPACK_IMPORTED_MODULE_5__.deleteContainerGroup)(environmentId, id);\n      };\n    }));\n  }, {\n    onSuccess: function onSuccess() {\n      return queryClient.invalidateQueries(['azure', environmentId, 'subscriptions']);\n    },\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.notifyError)('Failure', err, 'Unable to remove container groups');\n    }\n  });\n  return {\n    handleRemove: handleRemove\n  };\n\n  function handleRemove(_x) {\n    return _handleRemove.apply(this, arguments);\n  }\n\n  function _handleRemove() {\n    _handleRemove = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(groupIds) {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              deleteMutation.mutate(groupIds, {\n                onSuccess: function onSuccess() {\n                  (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.notifySuccess)('Success', 'Container groups successfully removed');\n                }\n              });\n\n            case 1:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleRemove.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///42719\n");

}),

84542:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./name */ 97478);\n/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./location */ 28435);\n/* harmony import */ var _ports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ports */ 53717);\n/* harmony import */ var _ownership__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ownership */ 57251);\n\n\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_name__WEBPACK_IMPORTED_MODULE_1__.name, _location__WEBPACK_IMPORTED_MODULE_2__.location, _ports__WEBPACK_IMPORTED_MODULE_3__.ports, _ownership__WEBPACK_IMPORTED_MODULE_4__.ownership];\n  }, []);\n}//# sourceURL=webpack-internal:///84542\n");

}),

28435:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"location\": function() { return /* binding */ location; }\n/* harmony export */ });\nvar location = {\n  Header: 'Location',\n  accessor: function accessor(container) {\n    return container.location;\n  },\n  id: 'location',\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: true,\n  sortType: 'string'\n};//# sourceURL=webpack-internal:///28435\n");

}),

97478:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: function accessor(container) {\n    return container.name;\n  },\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: true,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      container = _ref.row.original;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_1__.Link, {\n    to: \"azure.containerinstances.container\",\n    params: {\n      id: container.id\n    },\n    className: \"hover:underline\",\n    children: name\n  });\n}//# sourceURL=webpack-internal:///97478\n");

}),

57251:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ownership\": function() { return /* binding */ ownership; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar ownership = {\n  Header: '所有权',\n  id: 'ownership',\n  accessor: function accessor(row) {\n    return row.Portainer && row.Portainer.ResourceControl ? (0,_react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_3__.determineOwnership)(row.Portainer.ResourceControl) : _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_2__.ResourceControlOwnership.ADMINISTRATORS;\n  },\n  Cell: OwnershipCell,\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction OwnershipCell(_ref) {\n  var value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"i\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__.ownershipIcon)(value), 'space-right'),\n      \"aria-hidden\": \"true\"\n    }), value]\n  });\n}//# sourceURL=webpack-internal:///57251\n");

}),

53717:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ports\": function() { return /* binding */ ports; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _react_azure_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/azure/utils */ 984);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nvar ports = {\n  Header: '已发布端口',\n  accessor: function accessor(container) {\n    return (0,_react_azure_utils__WEBPACK_IMPORTED_MODULE_2__.getPorts)(container);\n  },\n  id: 'ports',\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: true,\n  Cell: PortsCell\n};\n\nfunction PortsCell(_ref) {\n  var ports = _ref.value,\n      container = _ref.row.original;\n  var ip = container.properties.ipAddress ? container.properties.ipAddress.ip : '';\n\n  if (ports.length === 0 || !ip) {\n    return '-';\n  }\n\n  return ports.map(function (port) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"a\", {\n      className: \"image-tag\",\n      href: \"http://\".concat(ip, \":\").concat(port.host),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n        className: \"fa fa-external-link-alt\",\n        \"aria-hidden\": \"true\"\n      }), \" \", ip, \":\", port.host]\n    }, port.host);\n  });\n}//# sourceURL=webpack-internal:///53717\n");

}),

4302:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ListView": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_0__.ListView; }
/* harmony export */ });
/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListView */ 42719);


}),

67157:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"queryKeys\": function() { return /* binding */ queryKeys; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nvar queryKeys = {\n  subscriptions: function subscriptions(environmentId) {\n    return ['azure', environmentId, 'subscriptions'];\n  },\n  subscription: function subscription(environmentId, subscriptionId) {\n    return [].concat(_toConsumableArray(queryKeys.subscriptions(environmentId)), [subscriptionId]);\n  },\n  resourceGroups: function resourceGroups(environmentId, subscriptionId) {\n    return [].concat(_toConsumableArray(queryKeys.subscription(environmentId, subscriptionId)), ['resourceGroups']);\n  },\n  resourceGroup: function resourceGroup(environmentId, subscriptionId, resourceGroupName) {\n    return [].concat(_toConsumableArray(queryKeys.resourceGroups(environmentId, subscriptionId)), [resourceGroupName]);\n  },\n  provider: function provider(environmentId, subscriptionId) {\n    return [].concat(_toConsumableArray(queryKeys.subscription(environmentId, subscriptionId)), ['provider']);\n  },\n  containerGroups: function containerGroups(environmentId, subscriptionId) {\n    return [].concat(_toConsumableArray(queryKeys.subscription(environmentId, subscriptionId)), ['containerGroups']);\n  },\n  containerGroup: function containerGroup(environmentId, subscriptionId, resourceGroupName, containerGroupName) {\n    return [].concat(_toConsumableArray(queryKeys.resourceGroup(environmentId, subscriptionId, resourceGroupName)), ['containerGroups', containerGroupName]);\n  }\n};//# sourceURL=webpack-internal:///67157\n");

}),

90880:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useContainerGroup\": function() { return /* binding */ useContainerGroup; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nfunction useContainerGroup(environmentId, subscriptionId, resourceGroupName, containerGroupName) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_12__.queryKeys.containerGroup(environmentId, subscriptionId, resourceGroupName, containerGroupName), function () {\n    return getContainerGroup(environmentId, subscriptionId, resourceGroupName, containerGroupName);\n  }, _objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_10__.withError)('Unable to retrieve Azure container group')));\n}\n\nfunction getContainerGroup(_x, _x2, _x3, _x4) {\n  return _getContainerGroup.apply(this, arguments);\n}\n\nfunction _getContainerGroup() {\n  _getContainerGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, subscriptionId, resourceGroupName, containerGroupName) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_13__.buildContainerGroupUrl)(environmentId, subscriptionId, resourceGroupName, containerGroupName), {\n              params: {\n                'api-version': '2018-04-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_11__.parseAxiosError)(_context.t0);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getContainerGroup.apply(this, arguments);\n}//# sourceURL=webpack-internal:///90880\n");

}),

44842:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useContainerGroups\": function() { return /* binding */ useContainerGroups; },\n/* harmony export */   \"getContainerGroups\": function() { return /* binding */ getContainerGroups; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/flatMap */ 74362);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\nfunction useContainerGroups(environmentId) {\n  var subscriptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var enabled = arguments.length > 2 ? arguments[2] : undefined;\n  var queries = (0,react_query__WEBPACK_IMPORTED_MODULE_13__.useQueries)((0,react__WEBPACK_IMPORTED_MODULE_12__.useMemo)(function () {\n    return subscriptions.map(function (subscription) {\n      return _objectSpread(_objectSpread({\n        queryKey: _query_keys__WEBPACK_IMPORTED_MODULE_16__.queryKeys.containerGroups(environmentId, subscription.subscriptionId),\n        queryFn: function () {\n          var _queryFn = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n            return regeneratorRuntime.wrap(function _callee$(_context) {\n              while (1) {\n                switch (_context.prev = _context.next) {\n                  case 0:\n                    return _context.abrupt(\"return\", getContainerGroups(environmentId, subscription.subscriptionId));\n\n                  case 1:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }\n            }, _callee);\n          }));\n\n          function queryFn() {\n            return _queryFn.apply(this, arguments);\n          }\n\n          return queryFn;\n        }()\n      }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_14__.withError)('Unable to retrieve Azure container groups')), {}, {\n        enabled: enabled\n      });\n    });\n  }, [subscriptions, enabled, environmentId]));\n  return (0,react__WEBPACK_IMPORTED_MODULE_12__.useMemo)(function () {\n    return {\n      containerGroups: lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default()(lodash_compact__WEBPACK_IMPORTED_MODULE_7___default()(queries.map(function (q) {\n        return q.data;\n      }))),\n      isLoading: queries.some(function (q) {\n        return q.isLoading;\n      })\n    };\n  }, [queries]);\n}\nfunction getContainerGroups(_x, _x2) {\n  return _getContainerGroups.apply(this, arguments);\n}\n\nfunction _getContainerGroups() {\n  _getContainerGroups = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, subscriptionId) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_15__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_17__.buildContainerGroupUrl)(environmentId, subscriptionId), {\n              params: {\n                'api-version': '2018-04-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context2.sent;\n            data = _yield$axios$get.data;\n            return _context2.abrupt(\"return\", data.value);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_15__.parseAxiosError)(_context2.t0, 'Unable to retrieve container groups');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getContainerGroups.apply(this, arguments);\n}//# sourceURL=webpack-internal:///44842\n");

}),

10678:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useProvider\": function() { return /* binding */ useProvider; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/find */ 51235);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../services/utils */ 23687);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./query-keys */ 67157);\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction useProvider(environmentId) {\n  var subscriptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var queries = (0,react_query__WEBPACK_IMPORTED_MODULE_15__.useQueries)(subscriptions.map(function (subscription) {\n    return _objectSpread({\n      queryKey: _query_keys__WEBPACK_IMPORTED_MODULE_19__.queryKeys.provider(environmentId, subscription.subscriptionId),\n      queryFn: function () {\n        var _queryFn = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var provider;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) {\n              switch (_context.prev = _context.next) {\n                case 0:\n                  _context.next = 2;\n                  return getContainerInstanceProvider(environmentId, subscription.subscriptionId);\n\n                case 2:\n                  provider = _context.sent;\n                  return _context.abrupt(\"return\", [subscription.subscriptionId, provider]);\n\n                case 4:\n                case \"end\":\n                  return _context.stop();\n              }\n            }\n          }, _callee);\n        }));\n\n        function queryFn() {\n          return _queryFn.apply(this, arguments);\n        }\n\n        return queryFn;\n      }()\n    }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_17__.withError)('Unable to retrieve Azure providers'));\n  }));\n  return {\n    providers: Object.fromEntries(lodash_compact__WEBPACK_IMPORTED_MODULE_8___default()(queries.map(function (q) {\n      if (q.data) {\n        return q.data;\n      }\n\n      return null;\n    }))),\n    isLoading: queries.some(function (q) {\n      return q.isLoading;\n    })\n  };\n}\n\nfunction getContainerInstanceProvider(_x, _x2) {\n  return _getContainerInstanceProvider.apply(this, arguments);\n}\n\nfunction _getContainerInstanceProvider() {\n  _getContainerInstanceProvider = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, subscriptionId) {\n    var url, _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            url = \"/endpoints/\".concat(environmentId, \"/azure/subscriptions/\").concat(subscriptionId, \"/providers/Microsoft.ContainerInstance\");\n            _context2.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_16__[\"default\"].get(url, {\n              params: {\n                'api-version': '2018-02-01'\n              }\n            });\n\n          case 4:\n            _yield$axios$get = _context2.sent;\n            data = _yield$axios$get.data;\n            return _context2.abrupt(\"return\", parseViewModel(data));\n\n          case 9:\n            _context2.prev = 9;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_16__.parseAxiosError)(_context2.t0, 'Unable to retrieve provider', _services_utils__WEBPACK_IMPORTED_MODULE_18__.azureErrorParser);\n\n          case 12:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 9]]);\n  }));\n  return _getContainerInstanceProvider.apply(this, arguments);\n}\n\nfunction parseViewModel(_ref) {\n  var id = _ref.id,\n      namespace = _ref.namespace,\n      resourceTypes = _ref.resourceTypes;\n\n  var containerGroupType = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(resourceTypes, {\n    resourceType: 'containerGroups'\n  });\n\n  var _ref2 = containerGroupType || {},\n      _ref2$locations = _ref2.locations,\n      locations = _ref2$locations === void 0 ? [] : _ref2$locations;\n\n  return {\n    id: id,\n    namespace: namespace,\n    locations: locations\n  };\n}//# sourceURL=webpack-internal:///10678\n");

}),

40713:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useResourceGroup\": function() { return /* binding */ useResourceGroup; },\n/* harmony export */   \"getResourceGroup\": function() { return /* binding */ getResourceGroup; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../services/utils */ 23687);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction useResourceGroup(environmentId, subscriptionId, resourceGroupName) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_13__.queryKeys.resourceGroup(environmentId, subscriptionId, resourceGroupName), function () {\n    return getResourceGroup(environmentId, subscriptionId, resourceGroupName);\n  }, _objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withError)('Unable to retrieve Azure resource group')));\n}\nfunction getResourceGroup(_x, _x2, _x3) {\n  return _getResourceGroup.apply(this, arguments);\n}\n\nfunction _getResourceGroup() {\n  _getResourceGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, subscriptionId, resourceGroupName) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_14__.buildResourceGroupUrl)(environmentId, subscriptionId, resourceGroupName), {\n              params: {\n                'api-version': '2018-02-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__.parseAxiosError)(_context.t0, 'Unable to retrieve resource group', _services_utils__WEBPACK_IMPORTED_MODULE_12__.azureErrorParser);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getResourceGroup.apply(this, arguments);\n}//# sourceURL=webpack-internal:///40713\n");

}),

37580:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useResourceGroups\": function() { return /* binding */ useResourceGroups; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../services/utils */ 23687);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction useResourceGroups(environmentId) {\n  var subscriptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var queries = (0,react_query__WEBPACK_IMPORTED_MODULE_13__.useQueries)(subscriptions.map(function (subscription) {\n    return _objectSpread({\n      queryKey: _query_keys__WEBPACK_IMPORTED_MODULE_17__.queryKeys.resourceGroups(environmentId, subscription.subscriptionId),\n      queryFn: function () {\n        var _queryFn = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var groups;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) {\n              switch (_context.prev = _context.next) {\n                case 0:\n                  _context.next = 2;\n                  return getResourceGroups(environmentId, subscription.subscriptionId);\n\n                case 2:\n                  groups = _context.sent;\n                  return _context.abrupt(\"return\", [subscription.subscriptionId, groups]);\n\n                case 4:\n                case \"end\":\n                  return _context.stop();\n              }\n            }\n          }, _callee);\n        }));\n\n        function queryFn() {\n          return _queryFn.apply(this, arguments);\n        }\n\n        return queryFn;\n      }()\n    }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_15__.withError)('Unable to retrieve Azure resource groups'));\n  }));\n  return {\n    resourceGroups: Object.fromEntries(lodash_compact__WEBPACK_IMPORTED_MODULE_7___default()(queries.map(function (q) {\n      if (q.data) {\n        return q.data;\n      }\n\n      return null;\n    }))),\n    isLoading: queries.some(function (q) {\n      return q.isLoading;\n    }),\n    isError: queries.some(function (q) {\n      return q.isError;\n    })\n  };\n}\n\nfunction getResourceGroups(_x, _x2) {\n  return _getResourceGroups.apply(this, arguments);\n}\n\nfunction _getResourceGroups() {\n  _getResourceGroups = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, subscriptionId) {\n    var _yield$axios$get, value;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_18__.buildResourceGroupUrl)(environmentId, subscriptionId), {\n              params: {\n                'api-version': '2018-02-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context2.sent;\n            value = _yield$axios$get.data.value;\n            return _context2.abrupt(\"return\", value);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_14__.parseAxiosError)(_context2.t0, 'Unable to retrieve resource groups', _services_utils__WEBPACK_IMPORTED_MODULE_16__.azureErrorParser);\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getResourceGroups.apply(this, arguments);\n}//# sourceURL=webpack-internal:///37580\n");

}),

15189:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSubscription\": function() { return /* binding */ useSubscription; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../services/utils */ 23687);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction useSubscription(environmentId, subscriptionId) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_13__.queryKeys.subscription(environmentId, subscriptionId), function () {\n    return getSubscription(environmentId, subscriptionId);\n  }, _objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withError)('Unable to retrieve Azure subscription')));\n}\n\nfunction getSubscription(_x, _x2) {\n  return _getSubscription.apply(this, arguments);\n}\n\nfunction _getSubscription() {\n  _getSubscription = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, subscriptionId) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_14__.buildSubscriptionsUrl)(environmentId, subscriptionId), {\n              params: {\n                'api-version': '2016-06-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__.parseAxiosError)(_context.t0, 'Unable to retrieve subscription', _services_utils__WEBPACK_IMPORTED_MODULE_12__.azureErrorParser);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getSubscription.apply(this, arguments);\n}//# sourceURL=webpack-internal:///15189\n");

}),

40001:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSubscriptions\": function() { return /* binding */ useSubscriptions; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _services_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../services/utils */ 23687);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./query-keys */ 67157);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils */ 12931);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction useSubscriptions(environmentId) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_13__.queryKeys.subscriptions(environmentId), function () {\n    return getSubscriptions(environmentId);\n  }, _objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withError)('Unable to retrieve Azure subscriptions')));\n}\n\nfunction getSubscriptions(_x) {\n  return _getSubscriptions.apply(this, arguments);\n}\n\nfunction _getSubscriptions() {\n  _getSubscriptions = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get((0,_utils__WEBPACK_IMPORTED_MODULE_14__.buildSubscriptionsUrl)(environmentId), {\n              params: {\n                'api-version': '2016-06-01'\n              }\n            });\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data.value);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__.parseAxiosError)(_context.t0, 'Unable to retrieve subscriptions', _services_utils__WEBPACK_IMPORTED_MODULE_12__.azureErrorParser);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getSubscriptions.apply(this, arguments);\n}//# sourceURL=webpack-internal:///40001\n");

}),

12931:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildSubscriptionsUrl\": function() { return /* binding */ buildSubscriptionsUrl; },\n/* harmony export */   \"buildResourceGroupUrl\": function() { return /* binding */ buildResourceGroupUrl; },\n/* harmony export */   \"buildContainerGroupUrl\": function() { return /* binding */ buildContainerGroupUrl; }\n/* harmony export */ });\nfunction buildSubscriptionsUrl(environmentId, id) {\n  var url = \"/endpoints/\".concat(environmentId, \"/azure/subscriptions\");\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  return url;\n}\nfunction buildResourceGroupUrl(environmentId, subscriptionId, resourceGroupName) {\n  var url = \"\".concat(buildSubscriptionsUrl(environmentId, subscriptionId), \"/resourcegroups\");\n\n  if (resourceGroupName) {\n    url += \"/\".concat(resourceGroupName);\n  }\n\n  return url;\n}\nfunction buildContainerGroupUrl(environmentId, subscriptionId, resourceGroupName, containerGroupName) {\n  var url = buildSubscriptionsUrl(environmentId, subscriptionId);\n\n  if (resourceGroupName) {\n    url += \"/resourceGroups/\".concat(resourceGroupName);\n  }\n\n  url += \"/providers/Microsoft.ContainerInstance/containerGroups\";\n\n  if (containerGroupName) {\n    url += \"/\".concat(containerGroupName);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///12931\n");

}),

51417:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createContainerGroup\": function() { return /* binding */ createContainerGroup; },\n/* harmony export */   \"deleteContainerGroup\": function() { return /* binding */ deleteContainerGroup; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _queries_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../queries/utils */ 12931);\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction createContainerGroup(_x, _x2, _x3, _x4) {\n  return _createContainerGroup.apply(this, arguments);\n}\n\nfunction _createContainerGroup() {\n  _createContainerGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(model, environmentId, subscriptionId, resourceGroupName) {\n    var payload, _yield$axios$put, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            payload = transformToPayload(model);\n            _context.prev = 1;\n            _context.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].put((0,_queries_utils__WEBPACK_IMPORTED_MODULE_7__.buildContainerGroupUrl)(environmentId, subscriptionId, resourceGroupName, model.name), payload, {\n              params: {\n                'api-version': '2018-04-01'\n              }\n            });\n\n          case 4:\n            _yield$axios$put = _context.sent;\n            data = _yield$axios$put.data;\n            return _context.abrupt(\"return\", data);\n\n          case 9:\n            _context.prev = 9;\n            _context.t0 = _context[\"catch\"](1);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__.parseAxiosError)(_context.t0);\n\n          case 12:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[1, 9]]);\n  }));\n  return _createContainerGroup.apply(this, arguments);\n}\n\nfunction deleteContainerGroup(_x5, _x6) {\n  return _deleteContainerGroup.apply(this, arguments);\n}\n\nfunction _deleteContainerGroup() {\n  _deleteContainerGroup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, containerGroupId) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"][\"delete\"](\"/endpoints/\".concat(environmentId, \"/azure\").concat(containerGroupId), {\n              params: {\n                'api-version': '2018-04-01'\n              }\n            });\n\n          case 3:\n            _context2.next = 8;\n            break;\n\n          case 5:\n            _context2.prev = 5;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__.parseAxiosError)(_context2.t0, 'Unable to remove container group');\n\n          case 8:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 5]]);\n  }));\n  return _deleteContainerGroup.apply(this, arguments);\n}\n\nfunction transformToPayload(model) {\n  var containerPorts = [];\n  var addressPorts = [];\n  var ports = model.ports.filter(function (p) {\n    return p.container && p.host;\n  });\n\n  for (var i = 0; i < ports.length; i += 1) {\n    var binding = ports[i];\n    containerPorts.push({\n      port: binding.container\n    });\n    addressPorts.push({\n      port: binding.host,\n      protocol: binding.protocol\n    });\n  }\n\n  return {\n    location: model.location,\n    properties: {\n      osType: model.os,\n      containers: [{\n        name: model.name,\n        properties: {\n          image: model.image,\n          ports: containerPorts,\n          resources: {\n            requests: {\n              cpu: model.cpu,\n              memoryInGB: model.memory\n            }\n          }\n        }\n      }],\n      ipAddress: {\n        type: model.allocatePublicIP ? 'Public' : 'Private',\n        ports: addressPorts\n      }\n    }\n  };\n}//# sourceURL=webpack-internal:///51417\n");

}),

23687:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"azureErrorParser\": function() { return /* binding */ azureErrorParser; }\n/* harmony export */ });\nfunction azureErrorParser(axiosError) {\n  var _axiosError$response, _axiosError$response$, _axiosError$response$2;\n\n  var message = ((_axiosError$response = axiosError.response) === null || _axiosError$response === void 0 ? void 0 : (_axiosError$response$ = _axiosError$response.data) === null || _axiosError$response$ === void 0 ? void 0 : (_axiosError$response$2 = _axiosError$response$.error) === null || _axiosError$response$2 === void 0 ? void 0 : _axiosError$response$2.message) || 'Failed azure request';\n  return {\n    error: new Error(message),\n    details: message\n  };\n}//# sourceURL=webpack-internal:///23687\n");

}),

984:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPorts\": function() { return /* binding */ getPorts; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction getPorts(containerGroup) {\n  var addressPorts = containerGroup.properties.ipAddress ? containerGroup.properties.ipAddress.ports : [];\n  var container = containerGroup.properties.containers.length ? containerGroup.properties.containers[0] : null;\n  var containerPorts = container ? container.properties.ports : [];\n  return addressPorts.map(function (binding, index) {\n    var port = containerPorts[index] ? containerPorts[index].port : undefined;\n    return {\n      container: port,\n      host: binding.port,\n      protocol: binding.protocol\n    };\n  });\n}//# sourceURL=webpack-internal:///984\n");

}),

10288:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BEFeatureIndicator\": function() { return /* binding */ BEFeatureIndicator; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 30128);\n/* harmony import */ var _BEFeatureIndicator_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BEFeatureIndicator.css */ 88177);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ 86751);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction BEFeatureIndicator(_ref) {\n  var featureId = _ref.featureId,\n      children = _ref.children,\n      _ref$showIcon = _ref.showIcon,\n      showIcon = _ref$showIcon === void 0 ? true : _ref$showIcon,\n      _ref$className = _ref.className,\n      className = _ref$className === void 0 ? '' : _ref$className;\n\n  var _getFeatureDetails = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFeatureDetails)(featureId),\n      url = _getFeatureDetails.url,\n      limitedToBE = _getFeatureDetails.limitedToBE;\n\n  if (!limitedToBE) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"a\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('be-indicator vertical-center', className),\n    href: url,\n    target: \"_blank\",\n    rel: \"noopener noreferrer\",\n    children: [children, showIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n      className: \"icon icon-sm vertical-center\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n      className: \"be-indicator-label break-words space-left\",\n      children: \"\\u5546\\u4E1A\\u7248\\u529F\\u80FD\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///10288\n");

}),

95814:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "BEFeatureIndicator": function() { return /* reexport safe */ _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_0__.BEFeatureIndicator; }
/* harmony export */ });
/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BEFeatureIndicator */ 10288);


}),

86751:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFeatureDetails\": function() { return /* binding */ getFeatureDetails; }\n/* harmony export */ });\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\nvar BE_URL = 'https://www.portainer.io/business-upsell?from=';\nfunction getFeatureDetails(featureId) {\n  if (!featureId) {\n    return {};\n  }\n\n  var url = \"\".concat(BE_URL).concat(featureId);\n  var limitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_0__.isLimitedToBE)(featureId);\n  return {\n    url: url,\n    limitedToBE: limitedToBE\n  };\n}//# sourceURL=webpack-internal:///86751\n");

}),

30318:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Badge\": function() { return /* binding */ Badge; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n// this component is used in tables and lists in portainer. It looks like this:\n// https://www.figma.com/file/g5TUMngrblkXM7NHSyQsD1/New-UI?node-id=76%3A2\nfunction Badge(_ref) {\n  var type = _ref.type,\n      className = _ref.className,\n      children = _ref.children;\n  var baseClasses = 'flex w-fit items-center !text-xs font-medium rounded-full px-2 py-0.5';\n  var typeClasses = getClasses(type);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(baseClasses, typeClasses, className),\n    children: children\n  });\n} // classes in full to prevent a dev server bug, where tailwind doesn't render the interpolated classes\n\nfunction getClasses(type) {\n  switch (type) {\n    case 'success':\n      return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-success-9 bg-success-2\", \"th-dark:text-success-3 th-dark:bg-success-10\", \"th-highcontrast:text-success-3 th-highcontrast:bg-success-10\");\n\n    case 'warn':\n      return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-warning-9 bg-warning-2\", \"th-dark:text-warning-3 th-dark:bg-warning-10\", \"th-highcontrast:text-warning-3 th-highcontrast:bg-warning-10\");\n\n    case 'danger':\n      return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-error-9 bg-error-2\", \"th-dark:text-error-3 th-dark:bg-error-10\", \"th-highcontrast:text-error-3 th-highcontrast:bg-error-10\");\n\n    case 'info':\n      return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-blue-9 bg-blue-2\", \"th-dark:text-blue-3 th-dark:bg-blue-10\", \"th-highcontrast:text-blue-3 th-highcontrast:bg-blue-10\");\n\n    default:\n      return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-blue-9 bg-blue-2\", \"th-dark:text-blue-3 th-dark:bg-blue-10\", \"th-highcontrast:text-blue-3 th-highcontrast:bg-blue-10\");\n  }\n}//# sourceURL=webpack-internal:///30318\n");

}),

74085:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Badge": function() { return /* reexport safe */ _Badge__WEBPACK_IMPORTED_MODULE_0__.Badge; }
/* harmony export */ });
/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Badge */ 30318);


}),

90134:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BadgeIcon\": function() { return /* binding */ BadgeIcon; }\n/* harmony export */ });\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction BadgeIcon(_ref) {\n  var icon = _ref.icon,\n      featherIcon = _ref.featherIcon;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"badge-icon\\n   text-3xl h-14 w-14\\n   bg-blue-3 text-blue-8\\n   th-dark:bg-gray-9 th-dark:text-blue-3\\n   rounded-full\\n   inline-flex items-center justify-center \\n\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_0__.Icon, {\n      icon: icon,\n      feather: featherIcon,\n      className: \"feather !flex\"\n    })\n  });\n}//# sourceURL=webpack-internal:///90134\n");

}),

55572:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BoxOption\": function() { return /* binding */ BoxOption; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-tooltip */ 34542);\n/* harmony import */ var _BoxSelectorItem_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./BoxSelectorItem.css */ 35466);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction BoxOption(_ref) {\n  var radioName = _ref.radioName,\n      option = _ref.option,\n      _ref$onChange = _ref.onChange,\n      onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,\n      selectedValue = _ref.selectedValue,\n      disabled = _ref.disabled,\n      tooltip = _ref.tooltip,\n      className = _ref.className,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'radio' : _ref$type,\n      children = _ref.children;\n  var tooltipId = \"box-option-\".concat(radioName, \"-\").concat(option.id);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('box-selector-item', className),\n    \"data-tip\": true,\n    \"data-for\": tooltipId,\n    \"tooltip-append-to-body\": \"true\",\n    \"tooltip-placement\": \"bottom\",\n    \"tooltip-class\": \"portainer-tooltip\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"input\", {\n      type: type,\n      name: radioName,\n      id: option.id,\n      checked: option.value === selectedValue,\n      value: option.value,\n      disabled: disabled,\n      onChange: function (_onChange) {\n        function onChange() {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function () {\n        return onChange(option.value);\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"label\", {\n      htmlFor: option.id,\n      \"data-cy\": \"\".concat(radioName, \"_\").concat(option.value),\n      children: children\n    }), tooltip && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(react_tooltip__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n      place: \"bottom\",\n      className: \"portainer-tooltip\",\n      id: tooltipId,\n      children: tooltip\n    })]\n  });\n}//# sourceURL=webpack-internal:///55572\n");

}),

92926:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BoxSelector\": function() { return /* binding */ BoxSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _BoxSelector_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./BoxSelector.css */ 74316);\n/* harmony import */ var _BoxSelector_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./BoxSelector.module.css */ 15251);\n/* harmony import */ var _BoxSelectorItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./BoxSelectorItem */ 7060);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction BoxSelector(_ref) {\n  var radioName = _ref.radioName,\n      value = _ref.value,\n      options = _ref.options,\n      onChange = _ref.onChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('boxselector_wrapper', _BoxSelector_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].root),\n        role: \"radiogroup\",\n        children: options.filter(function (option) {\n          return !option.hide;\n        }).map(function (option) {\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_BoxSelectorItem__WEBPACK_IMPORTED_MODULE_6__.BoxSelectorItem, {\n            radioName: radioName,\n            option: option,\n            onChange: onChange,\n            selectedValue: value,\n            disabled: option.disabled && option.disabled(),\n            tooltip: option.tooltip && option.tooltip()\n          }, option.id);\n        })\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///92926\n");

}),

7060:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BoxSelectorItem\": function() { return /* binding */ BoxSelectorItem; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _BoxSelectorItem_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./BoxSelectorItem.css */ 35466);\n/* harmony import */ var _LimitedToBeIndicator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LimitedToBeIndicator */ 53146);\n/* harmony import */ var _BoxOption__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BoxOption */ 55572);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction BoxSelectorItem(_ref) {\n  var radioName = _ref.radioName,\n      option = _ref.option,\n      onChange = _ref.onChange,\n      selectedValue = _ref.selectedValue,\n      disabled = _ref.disabled,\n      tooltip = _ref.tooltip;\n  var limitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_6__.isLimitedToBE)(option.feature);\n  var beIndicatorTooltipId = \"box-selector-item-\".concat(radioName, \"-\").concat(option.id, \"-limited\");\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_BoxOption__WEBPACK_IMPORTED_MODULE_10__.BoxOption, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])({\n      business: limitedToBE,\n      limited: limitedToBE\n    }),\n    radioName: radioName,\n    option: option,\n    selectedValue: selectedValue,\n    disabled: disabled,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (value) {\n      return onChange(value, limitedToBE);\n    }),\n    tooltip: tooltip,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.Fragment, {\n      children: [limitedToBE && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_LimitedToBeIndicator__WEBPACK_IMPORTED_MODULE_9__.LimitedToBeIndicator, {\n        tooltipId: beIndicatorTooltipId,\n        featureId: option.feature\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])({\n          'opacity-30': limitedToBE\n        }),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n          className: \"boxselector_img_container\",\n          children: !!option.icon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_7__.Icon, {\n            icon: option.icon,\n            feather: option.featherIcon,\n            className: \"boxselector_icon !flex items-center\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n          className: \"boxselector_header\",\n          children: option.label\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"p\", {\n          className: \"box-selector-item-description\",\n          children: option.description\n        })]\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///7060\n");

}),

53146:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LimitedToBeIndicator\": function() { return /* binding */ LimitedToBeIndicator; }\n/* harmony export */ });\n/* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-tooltip */ 34542);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 86704);\n/* harmony import */ var _BEFeatureIndicator_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/BEFeatureIndicator/utils */ 86751);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction LimitedToBeIndicator(_ref) {\n  var tooltipId = _ref.tooltipId,\n      featureId = _ref.featureId;\n\n  var _getFeatureDetails = (0,_BEFeatureIndicator_utils__WEBPACK_IMPORTED_MODULE_1__.getFeatureDetails)(featureId),\n      url = _getFeatureDetails.url;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"absolute left-0 top-0 w-full\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n        className: \"mx-auto max-w-fit bg-warning-4 rounded-b-lg py-1 px-3 flex gap-1 text-sm items-center\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"a\", {\n          href: url,\n          target: \"_blank\",\n          rel: \"noopener noreferrer\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n            className: \"text-warning-9\",\n            children: \"\\u4E13\\u4E1A\\u7248\\u7279\\u70B9\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          className: \"feather !text-warning-7\",\n          \"data-tip\": true,\n          \"data-for\": tooltipId,\n          \"tooltip-append-to-body\": \"true\",\n          \"tooltip-placement\": \"top\",\n          \"tooltip-class\": \"portainer-tooltip\"\n        })]\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n      className: \"portainer-tooltip\",\n      id: tooltipId,\n      place: \"top\",\n      delayHide: 1000,\n      children: [\"\\u5546\\u4E1A\\u7248\\u529F\\u80FD \", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"br\", {}), \"\\u8FD9\\u4E2A\\u529F\\u80FD\\u76EE\\u524D\\u53EA\\u9650\\u4E8E\\u5546\\u4E1A\\u7248\\u7528\\u6237\\u3002\"]\n    })]\n  });\n}//# sourceURL=webpack-internal:///53146\n");

}),

37463:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"editor\": function() { return /* binding */ editor; },\n/* harmony export */   \"upload\": function() { return /* binding */ upload; },\n/* harmony export */   \"git\": function() { return /* binding */ git; },\n/* harmony export */   \"template\": function() { return /* binding */ template; },\n/* harmony export */   \"url\": function() { return /* binding */ url; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 68389);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 70685);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 58897);\n/* harmony import */ var _assets_ico_git_svg_c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/assets/ico/git.svg?c */ 91079);\n/* harmony import */ var _BadgeIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../BadgeIcon */ 90134);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nvar editor = {\n  id: 'method_editor',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n  }),\n  label: 'Web editor',\n  description: 'Use our Web editor',\n  value: 'editor'\n};\nvar upload = {\n  id: 'method_upload',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  }),\n  label: 'Upload',\n  description: 'Upload from your computer',\n  value: 'upload'\n};\nvar git = {\n  id: 'method_repository',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_assets_ico_git_svg_c__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}),\n  label: 'Repository',\n  description: 'Use a git repository',\n  value: 'repository'\n};\nvar template = {\n  id: 'method_template',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  }),\n  label: 'Template',\n  description: 'Use an Edge stack template',\n  value: 'template'\n};\nvar url = {\n  id: 'method_url',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_BadgeIcon__WEBPACK_IMPORTED_MODULE_1__.BadgeIcon, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  }),\n  label: 'URL',\n  description: 'Specify a URL to a file',\n  value: 'url'\n};//# sourceURL=webpack-internal:///37463\n");

}),

86682:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubernetes\": function() { return /* binding */ kubernetes; },\n/* harmony export */   \"compose\": function() { return /* binding */ compose; }\n/* harmony export */ });\n/* harmony import */ var _assets_ico_vendor_kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/assets/ico/vendor/kubernetes.svg?c */ 74808);\n/* harmony import */ var _assets_ico_vendor_docker_compose_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/docker-compose.svg?c */ 97642);\n\n\nvar kubernetes = {\n  id: 'method_kubernetes',\n  icon: _assets_ico_vendor_kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  label: 'Kubernetes',\n  description: 'Kubernetes manifest format',\n  value: 'kubernetes'\n};\nvar compose = {\n  id: 'method_compose',\n  icon: _assets_ico_vendor_docker_compose_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  label: 'Compose',\n  description: 'docker-compose format',\n  value: 'compose'\n};//# sourceURL=webpack-internal:///86682\n");

}),

69:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "BoxSelector": function() { return /* reexport safe */ _BoxSelector__WEBPACK_IMPORTED_MODULE_0__.BoxSelector; }
/* harmony export */ });
/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BoxSelector */ 92926);


}),

2381:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Code\": function() { return /* binding */ Code; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _buttons_CopyButton_useCopy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/buttons/CopyButton/useCopy */ 66070);\n/* harmony import */ var _Code_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Code.module.css */ 21764);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction Code(_ref) {\n  var children = _ref.children,\n      showCopyButton = _ref.showCopyButton;\n\n  var _useCopy = (0,_buttons_CopyButton_useCopy__WEBPACK_IMPORTED_MODULE_2__.useCopy)(children),\n      handleCopy = _useCopy.handleCopy,\n      copiedSuccessfully = _useCopy.copiedSuccessfully;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: _Code_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].root,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"code\", {\n      className: _Code_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].code,\n      children: children\n    }), showCopyButton && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_1__.Button, {\n      color: \"link\",\n      className: _Code_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].copyButton,\n      onClick: handleCopy,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"i\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('fa', copiedSuccessfully ? 'fa-check green-icon' : 'fa-copy '),\n        \"aria-hidden\": \"true\"\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///2381\n");

}),

25078:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Code": function() { return /* reexport safe */ _Code__WEBPACK_IMPORTED_MODULE_0__.Code; }
/* harmony export */ });
/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Code */ 2381);


}),

33694:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DashboardGrid\": function() { return /* binding */ DashboardGrid; }\n/* harmony export */ });\n/* harmony import */ var _DashboardGrid_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DashboardGrid.css */ 55306);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction DashboardGrid(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"dashboard-grid\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///33694\n");

}),

27416:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DashboardItem\": function() { return /* binding */ DashboardItem; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/helpers/strings */ 23514);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction DashboardItem(_ref) {\n  var value = _ref.value,\n      icon = _ref.icon,\n      type = _ref.type,\n      children = _ref.children,\n      featherIcon = _ref.featherIcon;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('border-solid rounded-lg border p-3', 'bg-gray-2 hover:bg-blue-2 border-gray-5 hover:border-blue-7', 'th-dark:bg-gray-iron-10 th-dark:hover:bg-gray-10 th-dark:border-gray-neutral-8 th-dark:hover:border-blue-8', 'th-highcontrast:bg-black th-highcontrast:hover:bg-gray-11 th-highcontrast:border-white th-highcontrast:hover:border-blue-8'),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      className: \"flex items-center\",\n      \"aria-label\": type,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('icon-badge text-2xl mr-4 !p-2', 'bg-blue-3 text-blue-8', 'th-dark:bg-blue-3 th-dark:text-blue-8', 'th-highcontrast:bg-blue-3 th-highcontrast:text-blue-8'),\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n          icon: icon,\n          feather: featherIcon,\n          className: \"feather\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n        className: \"flex flex-col justify-around\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('font-medium text-2xl', 'text-gray-9', 'th-dark:text-white', 'th-highcontrast:text-white'),\n          \"aria-label\": \"value\",\n          children: typeof value !== 'undefined' ? value : '-'\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('text-xl', 'text-gray-7', 'th-dark:text-gray-warm-5', 'th-highcontrast:text-gray-warm-5'),\n          \"aria-label\": \"resourceType\",\n          children: (0,_portainer_helpers_strings__WEBPACK_IMPORTED_MODULE_2__.pluralize)(value || 0, type)\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        className: \"ml-auto\",\n        children: children\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///27416\n");

}),

73390:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DashboardItem": function() { return /* reexport safe */ _DashboardItem__WEBPACK_IMPORTED_MODULE_0__.DashboardItem; }
/* harmony export */ });
/* harmony import */ var _DashboardItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DashboardItem */ 27416);


}),

37484:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DetailsRow\": function() { return /* binding */ DetailsRow; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction DetailsRow(_ref) {\n  var label = _ref.label,\n      children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"tr\", {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"td\", {\n      children: label\n    }), children && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"td\", {\n      \"data-cy\": \"detailsTable-\".concat(label, \"Value\"),\n      children: children\n    })]\n  });\n}//# sourceURL=webpack-internal:///37484\n");

}),

47502:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DetailsTable\": function() { return /* binding */ DetailsTable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction DetailsTable(_ref) {\n  var _ref$headers = _ref.headers,\n      headers = _ref$headers === void 0 ? [] : _ref$headers,\n      dataCy = _ref.dataCy,\n      children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"table\", {\n    className: \"table\",\n    \"data-cy\": dataCy,\n    children: [headers.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"thead\", {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"tr\", {\n        children: headers.map(function (header) {\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"th\", {\n            children: header\n          }, header);\n        })\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"tbody\", {\n      children: children\n    })]\n  });\n}//# sourceURL=webpack-internal:///47502\n");

}),

68710:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DetailsTable\": function() { return /* binding */ DetailsTable; }\n/* harmony export */ });\n/* harmony import */ var _DetailsTable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DetailsTable */ 47502);\n/* harmony import */ var _DetailsRow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DetailsRow */ 37484);\n\n\nvar DetailsTable = _DetailsTable__WEBPACK_IMPORTED_MODULE_0__.DetailsTable;\nDetailsTable.Row = _DetailsRow__WEBPACK_IMPORTED_MODULE_1__.DetailsRow;\n//# sourceURL=webpack-internal:///68710\n");

}),

53869:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FallbackImage\": function() { return /* binding */ FallbackImage; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\nfunction FallbackImage(_ref) {\n  var src = _ref.src,\n      fallbackIcon = _ref.fallbackIcon,\n      alt = _ref.alt,\n      size = _ref.size,\n      className = _ref.className,\n      fallbackMode = _ref.fallbackMode,\n      fallbackClassName = _ref.fallbackClassName,\n      feather = _ref.feather;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      error = _useState2[0],\n      setError = _useState2[1];\n\n  var classes = (0,clsx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(className, _defineProperty({}, \"icon-\".concat(size), size));\n  (0,react__WEBPACK_IMPORTED_MODULE_12__.useEffect)(function () {\n    setError(false);\n  }, [src]);\n\n  if (!error) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"img\", {\n      className: classes,\n      src: src,\n      alt: alt,\n      onError: function onError() {\n        return setError(true);\n      }\n    });\n  } // fallback icon if there is an error loading the image\n\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_13__.Icon, {\n    icon: fallbackIcon,\n    feather: feather,\n    className: fallbackClassName,\n    size: size,\n    mode: fallbackMode\n  });\n}//# sourceURL=webpack-internal:///53869\n");

}),

6277:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Icon\": function() { return /* binding */ Icon; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59886);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-feather */ 95425);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-is */ 24480);\n/* harmony import */ var _Svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Svg */ 13148);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction Icon(_ref) {\n  var icon = _ref.icon,\n      feather = _ref.feather,\n      className = _ref.className,\n      mode = _ref.mode,\n      size = _ref.size;\n  var classes = (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(className, 'icon', _defineProperty({}, \"icon-\".concat(mode), mode), _defineProperty({}, \"icon-\".concat(size), size));\n\n  if (typeof icon !== 'string') {\n    var _Icon = (0,react_is__WEBPACK_IMPORTED_MODULE_8__.isValidElementType)(icon) ? icon : null;\n\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"span\", {\n      className: classes,\n      \"aria-hidden\": \"true\",\n      role: \"img\",\n      children: _Icon == null ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n        children: icon\n      }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_Icon, {\n        size: \"1em\"\n      })\n    });\n  }\n\n  if (icon.indexOf('svg-') === 0) {\n    var svgIcon = icon.replace('svg-', '');\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_Svg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n      icon: svgIcon,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(classes, '!flex')\n    });\n  }\n\n  if (feather) {\n    var iconName = icon.split('-').map(function (s) {\n      return s.slice(0, 1).toUpperCase() + s.slice(1);\n    }).join('');\n    var IconComponent = react_feather__WEBPACK_IMPORTED_MODULE_11__[iconName];\n\n    if (!IconComponent) {\n      throw new Error(\"Feather icon not found: \".concat(iconName));\n    }\n\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(IconComponent, {\n      className: classes\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"i\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(icon.startsWith('fa-') ? \"fa \".concat(icon) : icon, classes),\n    \"aria-hidden\": \"true\",\n    role: \"img\"\n  });\n}//# sourceURL=webpack-internal:///6277\n");

}),

83302:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InformationPanel\": function() { return /* binding */ InformationPanel; }\n/* harmony export */ });\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Widget */ 54592);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buttons */ 72595);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction InformationPanel(_ref) {\n  var title = _ref.title,\n      onDismiss = _ref.onDismiss,\n      wrapperStyle = _ref.wrapperStyle,\n      bodyClassName = _ref.bodyClassName,\n      children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_0__.Widget, {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_0__.WidgetBody, {\n          className: bodyClassName,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n            style: wrapperStyle,\n            children: [title && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n              className: \"col-sm-12 form-section-title\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n                style: {\n                  float: 'left'\n                },\n                children: title\n              }), !!onDismiss && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n                className: \"small\",\n                style: {\n                  float: 'right'\n                },\n                \"ng-if\": \"dismissAction\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_1__.Button, {\n                  color: \"link\",\n                  onClick: function onClick() {\n                    return onDismiss();\n                  },\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n                    className: \"fa fa-times\"\n                  }), \" dismiss\"]\n                })\n              })]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n              children: children\n            })]\n          })\n        })\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///83302\n");

}),

31051:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Link\": function() { return /* binding */ Link; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"title\", \"className\", \"children\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\nfunction Link(_ref) {\n  var _ref$title = _ref.title,\n      title = _ref$title === void 0 ? '' : _ref$title,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_uirouter_react__WEBPACK_IMPORTED_MODULE_7__.UISref, _objectSpread(_objectSpread({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('no-decoration', className)\n    }, props), {}, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"a\", {\n        title: title,\n        target: props.target,\n        children: children\n      })\n    }))\n  );\n}//# sourceURL=webpack-internal:///31051\n");

}),

21614:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NavTabs\": function() { return /* binding */ NavTabs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _NavTabs_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NavTabs.module.css */ 69278);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\nfunction NavTabs(_ref) {\n  var options = _ref.options,\n      selectedId = _ref.selectedId,\n      _ref$onSelect = _ref.onSelect,\n      onSelect = _ref$onSelect === void 0 ? function () {} : _ref$onSelect,\n      disabled = _ref.disabled;\n  var selected = options.find(function (option) {\n    return option.id === selectedId;\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"div\", {\n    className: \"nav-container\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"ul\", {\n      className: \"nav nav-tabs\",\n      children: options.map(function (option) {\n        var _clsx;\n\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"li\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((_clsx = {\n            active: option.id === selectedId\n          }, _defineProperty(_clsx, _NavTabs_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].parent, !option.children), _defineProperty(_clsx, \"disabled\", disabled), _clsx)),\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"a\", {\n            onClick: function onClick() {\n              return handleSelect(option);\n            },\n            onKeyDown: function onKeyDown(e) {\n              if (e.key === 'Enter' || e.key === ' ') {\n                handleSelect(option);\n              }\n            },\n            role: \"button\",\n            tabIndex: 0,\n            children: option.label\n          })\n        }, option.id);\n      })\n    }), selected && selected.children && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"div\", {\n      className: \"tab-content mt-3\",\n      children: selected.children\n    })]\n  });\n\n  function handleSelect(option) {\n    if (disabled) {\n      return;\n    }\n\n    if (option.children) {\n      onSelect(option.id);\n    }\n  }\n}//# sourceURL=webpack-internal:///21614\n");

}),

69953:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "NavTabs": function() { return /* reexport safe */ _NavTabs__WEBPACK_IMPORTED_MODULE_0__.NavTabs; }
/* harmony export */ });
/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavTabs */ 21614);


}),

8582:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Breadcrumbs\": function() { return /* binding */ Breadcrumbs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 42108);\n/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction Breadcrumbs(_ref) {\n  var breadcrumbs = _ref.breadcrumbs;\n  var breadcrumbsArray = Array.isArray(breadcrumbs) ? breadcrumbs : [breadcrumbs];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n    className: \"text-xs font-medium text-gray-7 th-dark:text-gray-5 th-highcontrast:text-white space-x-2\",\n    children: breadcrumbsArray.map(function (crumb, index) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n          children: renderCrumb(crumb)\n        }), index !== breadcrumbsArray.length - 1 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n          children: \">\"\n        })]\n      }, index);\n    })\n  });\n}\n\nfunction renderCrumb(crumb) {\n  if (!crumb) {\n    return '';\n  }\n\n  if (typeof crumb === 'string') {\n    return crumb;\n  }\n\n  if (crumb.link) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_3__.Link, {\n      to: crumb.link,\n      params: crumb.linkParams,\n      className: \"text-blue-9 hover:underline hover:text-blue-11 th-dark:text-blue-7 th-dark:hover:text-blue-9 th-highcontrast:text-blue-5\",\n      children: crumb.label\n    });\n  }\n\n  return crumb.label;\n}//# sourceURL=webpack-internal:///8582\n");

}),

34875:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Breadcrumbs": function() { return /* reexport safe */ _Breadcrumbs__WEBPACK_IMPORTED_MODULE_0__.Breadcrumbs; }
/* harmony export */ });
/* harmony import */ var _Breadcrumbs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Breadcrumbs */ 8582);


}),

65607:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContextHelp\": function() { return /* binding */ ContextHelp; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 86704);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _PageHeader_ContextHelp_docURLs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/PageHeader/ContextHelp/docURLs */ 48780);\n/* harmony import */ var _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../HeaderTitle.module.css */ 32279);\n/* harmony import */ var _ContextHelp_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ContextHelp.css */ 23228);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction ContextHelp() {\n  function onHelpClick() {\n    var docURL = (0,_PageHeader_ContextHelp_docURLs__WEBPACK_IMPORTED_MODULE_1__.getDocURL)();\n    window.open(docURL, '_blank');\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].menuButton),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].menuIcon, 'menu-icon', 'icon-badge text-lg !p-2 mr-1', 'text-gray-8', 'th-dark:text-gray-warm-7'),\n      title: \"Help\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n        className: \"feather\",\n        onClick: onHelpClick\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///65607\n");

}),

70760:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ContextHelp": function() { return /* reexport safe */ _ContextHelp__WEBPACK_IMPORTED_MODULE_0__.ContextHelp; }
/* harmony export */ });
/* harmony import */ var _ContextHelp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContextHelp */ 65607);


}),

14452:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useHeaderContext\": function() { return /* binding */ useHeaderContext; },\n/* harmony export */   \"HeaderContainer\": function() { return /* binding */ HeaderContainer; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _HeaderContainer_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HeaderContainer.module.css */ 62463);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nvar Context = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\nContext.displayName = 'PageHeaderContext';\nfunction useHeaderContext() {\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n\n  if (context == null) {\n    throw new Error('Should be nested inside a HeaderContainer component');\n  }\n}\nfunction HeaderContainer(_ref) {\n  var id = _ref.id,\n      children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Context.Provider, {\n    value: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      id: id,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('row', _HeaderContainer_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].header),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        id: \"loadingbar-placeholder\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        className: \"col-xs-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: _HeaderContainer_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].meta,\n          children: children\n        })\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///14452\n");

}),

5458:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HeaderTitle\": function() { return /* binding */ HeaderTitle; }\n/* harmony export */ });\n/* harmony import */ var _PageHeader_ContextHelp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/PageHeader/ContextHelp */ 70760);\n/* harmony import */ var _HeaderContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HeaderContainer */ 14452);\n/* harmony import */ var _NotificationsMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NotificationsMenu */ 24620);\n/* harmony import */ var _UserMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./UserMenu */ 52946);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction HeaderTitle(_ref) {\n  var title = _ref.title,\n      children = _ref.children;\n  (0,_HeaderContainer__WEBPACK_IMPORTED_MODULE_1__.useHeaderContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: \"flex justify-between whitespace-normal pt-3\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n      className: \"flex items-center gap-2\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n        className: \"font-medium text-2xl text-gray-11 th-dark:text-white th-highcontrast:text-white\",\n        children: title\n      }), children && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        children: children\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n      className: \"flex items-end\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_NotificationsMenu__WEBPACK_IMPORTED_MODULE_2__.NotificationsMenu, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_PageHeader_ContextHelp__WEBPACK_IMPORTED_MODULE_0__.ContextHelp, {}), !window.ddExtension && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_UserMenu__WEBPACK_IMPORTED_MODULE_3__.UserMenu, {})]\n    })]\n  });\n}//# sourceURL=webpack-internal:///5458\n");

}),

24620:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NotificationsMenu\": function() { return /* binding */ NotificationsMenu; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ 59690);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _portainer_notifications_notifications_store__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../portainer/notifications/notifications-store */ 76598);\n/* harmony import */ var _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./HeaderTitle.module.css */ 32279);\n/* harmony import */ var _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NotificationsMenu.module.css */ 38163);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NotificationsMenu() {\n  var notificationsStoreState = (0,zustand__WEBPACK_IMPORTED_MODULE_26__.useStore)(_portainer_notifications_notifications_store__WEBPACK_IMPORTED_MODULE_22__.notificationsStore);\n  var removeNotification = notificationsStoreState.removeNotification;\n  var clearUserNotifications = notificationsStoreState.clearUserNotifications;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_18__.useUser)(),\n      user = _useUser.user;\n\n  var userNotifications = (0,zustand__WEBPACK_IMPORTED_MODULE_26__.useStore)(_portainer_notifications_notifications_store__WEBPACK_IMPORTED_MODULE_22__.notificationsStore, function (state) {\n    return state.userNotifications[user.Id];\n  });\n\n  if (userNotifications && userNotifications.length > 1) {\n    userNotifications.sort(function (a, b) {\n      return new Date(b.timeStamp).getTime() - new Date(a.timeStamp).getTime();\n    });\n  }\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_17__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      badge = _useState2[0],\n      setBadge = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_17__.useEffect)(function () {\n    if ((userNotifications === null || userNotifications === void 0 ? void 0 : userNotifications.length) > 0) {\n      setBadge(true);\n    } else {\n      setBadge(false);\n    }\n  }, [userNotifications]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_27__.Menu, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_27__.MenuButton, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])('ml-auto flex items-center gap-1 self-start', _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_23__[\"default\"].menuButton),\n      \"data-cy\": \"notificationsMenu-button\",\n      \"aria-label\": \"\\u901A\\u77E5\\u83DC\\u5355\\u5207\\u6362\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_23__[\"default\"].menuIcon, 'icon-badge text-lg !p-2 mr-1', 'text-gray-8', 'th-dark:text-gray-warm-7'),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n          icon: \"bell\",\n          feather: true\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"span\", {\n          className: badge ? _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].badge : ''\n        })]\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_27__.MenuList, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_23__[\"default\"].menuList, _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].root),\n      \"aria-label\": \"Notifications Menu\",\n      \"data-cy\": \"notificationsMenu\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationContainer, 'vertical-center'),\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"h4\", {\n              children: \"\\u901A\\u77E5\"\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n            className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].itemLast,\n            children: (userNotifications === null || userNotifications === void 0 ? void 0 : userNotifications.length) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_21__.Button, {\n              color: \"none\",\n              onClick: function onClick(e) {\n                e.stopPropagation();\n                e.preventDefault();\n                onClear();\n              },\n              \"data-cy\": \"notification-deleteButton\",\n              children: \"\\u6E05\\u9664\\u6240\\u6709\"\n            })\n          })]\n        })\n      }), (userNotifications === null || userNotifications === void 0 ? void 0 : userNotifications.length) > 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n          className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notifications,\n          children: userNotifications.map(function (notification) {\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(MenuLink, {\n              to: \"portainer.notifications\",\n              params: {\n                id: notification.id\n              },\n              notification: notification,\n              onDelete: function onDelete() {\n                return _onDelete(notification.id);\n              }\n            }, notification.id);\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n          className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationLink,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_20__.Link, {\n            to: \"portainer.notifications\",\n            children: \"\\u67E5\\u770B\\u6240\\u6709\\u901A\\u77E5\"\n          })\n        })]\n      }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n        className: \"flex flex-col items-center\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n          icon: \"bell\",\n          feather: true,\n          size: \"xl\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"p\", {\n          className: \"my-5\",\n          children: \"\\u4F60\\u8FD8\\u6CA1\\u6709\\u4EFB\\u4F55\\u901A\\u77E5\\u3002\"\n        })]\n      })]\n    })]\n  });\n\n  function _onDelete(notificationId) {\n    removeNotification(user.Id, notificationId);\n  }\n\n  function onClear() {\n    clearUserNotifications(user.Id);\n  }\n}\n\nfunction MenuLink(_ref) {\n  var to = _ref.to,\n      params = _ref.params,\n      notification = _ref.notification,\n      onDelete = _ref.onDelete;\n  var anchorProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_15__.useSref)(to, params);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_27__.MenuLink, {\n    href: anchorProps.href,\n    onClick: anchorProps.onClick,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_23__[\"default\"].menuLink, _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notification),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n      className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].container,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n        className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationIcon,\n        children: notification.type === 'success' ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n          icon: \"check-circle\",\n          feather: true,\n          size: \"lg\",\n          mode: \"success\"\n        }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n          icon: \"alert-circle\",\n          feather: true,\n          size: \"lg\",\n          mode: \"danger\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n        className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationBody,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"p\", {\n          className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationTitle,\n          children: notification.title\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"p\", {\n          className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].notificationDetails,\n          children: notification.details\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"p\", {\n          className: \"small text-muted\",\n          children: formatTime(notification.timeStamp)\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n        className: _NotificationsMenu_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].deleteButton,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_21__.Button, {\n          color: \"none\",\n          onClick: function onClick(e) {\n            e.stopPropagation();\n            e.preventDefault();\n            onDelete();\n          },\n          \"data-cy\": \"notification-deleteButton\",\n          size: \"large\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n            icon: \"trash-2\",\n            feather: true\n          })\n        })\n      })]\n    })\n  });\n}\n\nfunction formatTime(timeCreated) {\n  var timeStamp = new Date(timeCreated).valueOf().toString();\n  var diff = Math.floor((Date.now() - parseInt(timeStamp, 10)) / 1000);\n\n  if (diff <= 86400) {\n    var interval = Math.floor(diff / 3600);\n\n    if (interval >= 1) {\n      return \"\".concat(interval, \" hours ago\");\n    }\n\n    interval = Math.floor(diff / 60);\n\n    if (interval >= 1) {\n      return \"\".concat(interval, \" min ago\");\n    }\n  }\n\n  if (diff > 86400) {\n    var formatDate = moment__WEBPACK_IMPORTED_MODULE_16___default()(timeCreated).format('YYYY-MM-DD h:mm:ss');\n    return formatDate;\n  }\n\n  return 'Just now';\n}//# sourceURL=webpack-internal:///24620\n");

}),

27223:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PageHeader\": function() { return /* binding */ PageHeader; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-feather */ 96636);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../buttons */ 72595);\n/* harmony import */ var _Breadcrumbs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Breadcrumbs */ 34875);\n/* harmony import */ var _HeaderContainer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./HeaderContainer */ 14452);\n/* harmony import */ var _HeaderTitle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HeaderTitle */ 5458);\n/* harmony import */ var _PageHeader_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PageHeader.module.css */ 31246);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction PageHeader(_ref) {\n  var id = _ref.id,\n      title = _ref.title,\n      _ref$breadcrumbs = _ref.breadcrumbs,\n      breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,\n      reload = _ref.reload,\n      loading = _ref.loading,\n      onReload = _ref.onReload;\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useRouter)();\n\n  function onClickedRefresh() {\n    return onReload ? onReload() : router.stateService.reload();\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_HeaderContainer__WEBPACK_IMPORTED_MODULE_3__.HeaderContainer, {\n    id: id,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Breadcrumbs__WEBPACK_IMPORTED_MODULE_2__.Breadcrumbs, {\n      breadcrumbs: breadcrumbs\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_HeaderTitle__WEBPACK_IMPORTED_MODULE_4__.HeaderTitle, {\n      title: title,\n      children: reload && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_1__.Button, {\n        color: \"none\",\n        size: \"large\",\n        onClick: onClickedRefresh,\n        className: _PageHeader_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].reloadButton,\n        disabled: loading,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n          className: \"icon\"\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///27223\n");

}),

52946:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UserMenu\": function() { return /* binding */ UserMenu; }\n/* harmony export */ });\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 64490);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-feather */ 92855);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./HeaderTitle.module.css */ 32279);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction UserMenu() {\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__.useUser)(),\n      user = _useUser.user;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_5__.Menu, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_5__.MenuButton, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('ml-auto flex items-center gap-1 self-start', _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].menuButton),\n      \"data-cy\": \"userMenu-button\",\n      \"aria-label\": \"\\u7528\\u6237\\u83DC\\u5355\\u5207\\u6362\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].menuIcon, 'icon-badge text-lg !p-2 mr-1', 'text-gray-8', 'th-dark:text-gray-warm-7'),\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n          className: \"feather\"\n        })\n      }), user && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        children: user.Username\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n        className: _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].arrowDown\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_5__.MenuList, {\n      className: _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].menuList,\n      \"aria-label\": \"\\u7528\\u6237\\u83DC\\u5355\",\n      \"data-cy\": \"userMenu\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(MenuLink, {\n        to: \"portainer.account\",\n        label: \"\\u6211\\u7684\\u5E10\\u6237\",\n        \"data-cy\": \"userMenu-myAccount\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(MenuLink, {\n        to: \"portainer.logout\",\n        label: \"\\u6CE8\\u9500\\u767B\\u9646\",\n        \"data-cy\": \"userMenu-logOut\",\n        params: {\n          performApiLogout: true\n        }\n      })]\n    })]\n  });\n}\n\nfunction MenuLink(_ref) {\n  var to = _ref.to,\n      label = _ref.label,\n      params = _ref.params,\n      options = _ref.options,\n      dataCy = _ref['data-cy'];\n  var anchorProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useSref)(to, params, options);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_5__.MenuLink, {\n    href: anchorProps.href,\n    onClick: anchorProps.onClick,\n    className: _HeaderTitle_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].menuLink,\n    \"aria-label\": label,\n    \"data-cy\": dataCy,\n    children: label\n  });\n}//# sourceURL=webpack-internal:///52946\n");

}),

24117:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "PageHeader": function() { return /* reexport safe */ _PageHeader__WEBPACK_IMPORTED_MODULE_0__.PageHeader; }
/* harmony export */ });
/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PageHeader */ 27223);


}),

69070:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemsPerPageSelector\": function() { return /* binding */ ItemsPerPageSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.max-safe-integer.js */ 43119);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction ItemsPerPageSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      showAll = _ref.showAll;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"span\", {\n    className: \"limitSelector\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n      className: \"space-right\",\n      children: \"\\u6BCF\\u9875\\u9879\\u76EE\\u6570\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"select\", {\n      className: \"form-control\",\n      value: value,\n      onChange: function (_onChange) {\n        function onChange(_x) {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function (e) {\n        return onChange(Number(e.target.value));\n      }),\n      \"data-cy\": \"paginationSelect\",\n      children: [showAll ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"option\", {\n        value: Number.MAX_SAFE_INTEGER,\n        children: \"All\"\n      }) : null, [10, 25, 50, 100].map(function (v) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"option\", {\n          value: v,\n          children: v\n        }, v);\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///69070\n");

}),

51168:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PageButton\": function() { return /* binding */ PageButton; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction PageButton(_ref) {\n  var children = _ref.children,\n      page = _ref.page,\n      disabled = _ref.disabled,\n      active = _ref.active,\n      onPageChange = _ref.onPageChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"li\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      disabled: disabled,\n      active: active\n    }),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"button\", {\n      type: \"button\",\n      onClick: function onClick() {\n        return typeof page === 'number' && onPageChange(page);\n      },\n      disabled: disabled,\n      children: children\n    })\n  });\n}//# sourceURL=webpack-internal:///51168\n");

}),

96009:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PageInput\": function() { return /* binding */ PageInput; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 49329);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nfunction PageInput(_ref) {\n  var onChange = _ref.onChange,\n      totalPages = _ref.totalPages;\n\n  var _useFormik = (0,formik__WEBPACK_IMPORTED_MODULE_9__.useFormik)({\n    initialValues: {\n      page: ''\n    },\n    onSubmit: function () {\n      var _onSubmit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref2) {\n        var page;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                page = _ref2.page;\n                return _context.abrupt(\"return\", page && onChange(page));\n\n              case 2:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      function onSubmit(_x) {\n        return _onSubmit.apply(this, arguments);\n      }\n\n      return onSubmit;\n    }(),\n    validateOnMount: true,\n    validationSchema: function validationSchema() {\n      return (0,yup__WEBPACK_IMPORTED_MODULE_10__.object)({\n        page: (0,yup__WEBPACK_IMPORTED_MODULE_10__.number)().required().max(totalPages).min(1)\n      });\n    }\n  }),\n      handleSubmit = _useFormik.handleSubmit,\n      setFieldValue = _useFormik.setFieldValue,\n      values = _useFormik.values,\n      isValid = _useFormik.isValid;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"form\", {\n    className: \"mx-3\",\n    onSubmit: handleSubmit,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"label\", {\n      className: \"m-0 mr-2 font-normal small\",\n      htmlFor: \"go-to-page-input\",\n      children: \"Go to page\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_12__.Input, {\n      id: \"go-to-page-input\",\n      className: \"!w-32\",\n      type: \"number\",\n      value: values.page,\n      max: totalPages,\n      min: 1,\n      step: 1,\n      onChange: handleChange,\n      onKeyPress: preventNotNumber\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_11__.Button, {\n      type: \"submit\",\n      disabled: !isValid,\n      children: \"Go\"\n    })]\n  });\n\n  function preventNotNumber(e) {\n    if (e.key.match(/^\\D$/)) {\n      e.preventDefault();\n    }\n  }\n\n  function handleChange(e) {\n    var value = parseInt(e.target.value, 10);\n    setFieldValue('page', Number.isNaN(value) ? '' : value);\n  }\n}//# sourceURL=webpack-internal:///96009\n");

}),

10688:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PageSelector\": function() { return /* binding */ PageSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _pagination_controls_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pagination-controls.css */ 22476);\n/* harmony import */ var _generatePagesArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./generatePagesArray */ 31883);\n/* harmony import */ var _PageButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PageButton */ 51168);\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PageInput */ 96009);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction PageSelector(_ref) {\n  var currentPage = _ref.currentPage,\n      totalCount = _ref.totalCount,\n      itemsPerPage = _ref.itemsPerPage,\n      onPageChange = _ref.onPageChange,\n      _ref$maxSize = _ref.maxSize,\n      maxSize = _ref$maxSize === void 0 ? 5 : _ref$maxSize,\n      _ref$directionLinks = _ref.directionLinks,\n      directionLinks = _ref$directionLinks === void 0 ? true : _ref$directionLinks,\n      _ref$boundaryLinks = _ref.boundaryLinks,\n      boundaryLinks = _ref$boundaryLinks === void 0 ? false : _ref$boundaryLinks,\n      _ref$isInputVisible = _ref.isInputVisible,\n      isInputVisible = _ref$isInputVisible === void 0 ? false : _ref$isInputVisible;\n  var pages = (0,_generatePagesArray__WEBPACK_IMPORTED_MODULE_2__.generatePagesArray)(currentPage, totalCount, itemsPerPage, maxSize);\n  var last = pages[pages.length - 1];\n\n  if (pages.length <= 1) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {\n    children: [isInputVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageInput__WEBPACK_IMPORTED_MODULE_4__.PageInput, {\n      onChange: function onChange(page) {\n        return onPageChange(page);\n      },\n      totalPages: Math.ceil(totalCount / itemsPerPage)\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"ul\", {\n      className: \"pagination\",\n      children: [boundaryLinks ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageButton__WEBPACK_IMPORTED_MODULE_3__.PageButton, {\n        onPageChange: onPageChange,\n        page: 1,\n        disabled: currentPage === 1,\n        children: \"\\xAB\"\n      }) : null, directionLinks ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageButton__WEBPACK_IMPORTED_MODULE_3__.PageButton, {\n        onPageChange: onPageChange,\n        page: currentPage - 1,\n        disabled: currentPage === 1,\n        children: \"\\u2039\"\n      }) : null, pages.map(function (pageNumber, index) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageButton__WEBPACK_IMPORTED_MODULE_3__.PageButton, {\n          onPageChange: onPageChange,\n          page: pageNumber,\n          disabled: pageNumber === '...',\n          active: currentPage === pageNumber,\n          children: pageNumber\n        }, index);\n      }), directionLinks ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageButton__WEBPACK_IMPORTED_MODULE_3__.PageButton, {\n        onPageChange: onPageChange,\n        page: currentPage + 1,\n        disabled: currentPage === last,\n        children: \"\\u203A\"\n      }) : null, boundaryLinks ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_PageButton__WEBPACK_IMPORTED_MODULE_3__.PageButton, {\n        disabled: currentPage === last,\n        onPageChange: onPageChange,\n        page: last,\n        children: \"\\xBB\"\n      }) : null]\n    })]\n  });\n}//# sourceURL=webpack-internal:///10688\n");

}),

31695:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PaginationControls\": function() { return /* binding */ PaginationControls; }\n/* harmony export */ });\n/* harmony import */ var _ItemsPerPageSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemsPerPageSelector */ 69070);\n/* harmony import */ var _PageSelector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PageSelector */ 10688);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction PaginationControls(_ref) {\n  var pageLimit = _ref.pageLimit,\n      page = _ref.page,\n      onPageLimitChange = _ref.onPageLimitChange,\n      showAll = _ref.showAll,\n      onPageChange = _ref.onPageChange,\n      totalCount = _ref.totalCount,\n      isPageInputVisible = _ref.isPageInputVisible;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n    className: \"paginationControls\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n      className: \"form-inline flex\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_ItemsPerPageSelector__WEBPACK_IMPORTED_MODULE_0__.ItemsPerPageSelector, {\n        value: pageLimit,\n        onChange: handlePageLimitChange,\n        showAll: showAll\n      }), pageLimit !== 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_PageSelector__WEBPACK_IMPORTED_MODULE_1__.PageSelector, {\n        maxSize: 5,\n        onPageChange: onPageChange,\n        currentPage: page,\n        itemsPerPage: pageLimit,\n        totalCount: totalCount,\n        isInputVisible: isPageInputVisible\n      })]\n    })\n  });\n\n  function handlePageLimitChange(value) {\n    onPageLimitChange(value);\n    onPageChange(1);\n  }\n}//# sourceURL=webpack-internal:///31695\n");

}),

8208:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"calculatePageNumber\": function() { return /* binding */ calculatePageNumber; }\n/* harmony export */ });\n/**\n * Given the position in the sequence of pagination links, figure out what page number corresponds to that position.\n *\n * @param position\n * @param currentPage\n * @param paginationRange\n * @param totalPages\n */\nfunction calculatePageNumber(position, currentPage, paginationRange, totalPages) {\n  var halfWay = Math.ceil(paginationRange / 2);\n\n  if (position === paginationRange) {\n    return totalPages;\n  }\n\n  if (position === 1) {\n    return position;\n  }\n\n  if (paginationRange < totalPages) {\n    if (totalPages - halfWay < currentPage) {\n      return totalPages - paginationRange + position;\n    }\n\n    if (halfWay < currentPage) {\n      return currentPage - halfWay + position;\n    }\n\n    return position;\n  }\n\n  return position;\n}//# sourceURL=webpack-internal:///8208\n");

}),

31883:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"generatePagesArray\": function() { return /* binding */ generatePagesArray; }\n/* harmony export */ });\n/* harmony import */ var _calculatePageNumber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculatePageNumber */ 8208);\n\nfunction generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) {\n  var pages = [];\n  var totalPages = Math.ceil(collectionLength / rowsPerPage);\n  var halfWay = Math.ceil(paginationRange / 2);\n  var position;\n\n  if (currentPage <= halfWay) {\n    position = 'start';\n  } else if (totalPages - halfWay < currentPage) {\n    position = 'end';\n  } else {\n    position = 'middle';\n  }\n\n  var ellipsesNeeded = paginationRange < totalPages;\n\n  for (var i = 1; i <= totalPages && i <= paginationRange; i += 1) {\n    var pageNumber = (0,_calculatePageNumber__WEBPACK_IMPORTED_MODULE_0__.calculatePageNumber)(i, currentPage, paginationRange, totalPages);\n    var openingEllipsesNeeded = i === 2 && (position === 'middle' || position === 'end');\n    var closingEllipsesNeeded = i === paginationRange - 1 && (position === 'middle' || position === 'start');\n\n    if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\n      pages.push('...');\n    } else {\n      pages.push(pageNumber);\n    }\n  }\n\n  return pages;\n}//# sourceURL=webpack-internal:///31883\n");

}),

47182:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PaginationControls\": function() { return /* reexport safe */ _PaginationControls__WEBPACK_IMPORTED_MODULE_1__.PaginationControls; }\n/* harmony export */ });\n/* harmony import */ var _pagination_controls_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pagination-controls.css */ 22476);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PaginationControls */ 31695);\n\n//# sourceURL=webpack-internal:///47182\n");

}),

75830:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PasswordCheckHint\": function() { return /* binding */ PasswordCheckHint; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction PasswordCheckHint(_ref) {\n  var _settingsQuery$data;\n\n  var passwordValid = _ref.passwordValid,\n      forceChangePassword = _ref.forceChangePassword;\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_0__.usePublicSettings)();\n  var minPasswordLength = (_settingsQuery$data = settingsQuery.data) === null || _settingsQuery$data === void 0 ? void 0 : _settingsQuery$data.RequiredPasswordLength;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"p\", {\n      className: \"text-warning vertical-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n        icon: \"alert-triangle\",\n        className: \"icon-warning\",\n        feather: true\n      }), forceChangePassword && '管理员已经改变了你的密码要求， ', \"\\u5BC6\\u7801\\u5FC5\\u987B\\u81F3\\u5C11\\u662F \", minPasswordLength, \" \\u5B57\\u7B26\\u7684\\u957F\\u5EA6\\u3002\", passwordValid && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n        className: \"fa fa-check green-icon space-left\",\n        \"aria-hidden\": \"true\"\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///75830\n");

}),

27099:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ReactQueryDevtoolsWrapper\": function() { return /* binding */ ReactQueryDevtoolsWrapper; }\n/* harmony export */ });\n/* harmony import */ var react_query_devtools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query/devtools */ 13169);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction ReactQueryDevtoolsWrapper() {\n  var showReactQueryDevtools = \"MISSING_ENV_VAR\".SHOW_REACT_QUERY_DEV_TOOLS === 'true';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n    children: showReactQueryDevtools && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_query_devtools__WEBPACK_IMPORTED_MODULE_0__.ReactQueryDevtools, {})\n  });\n}//# sourceURL=webpack-internal:///27099\n");

}),

17286:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Stepper\": function() { return /* binding */ Stepper; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Stepper.module.css */ 63012);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nfunction Stepper(_ref) {\n  var currentStep = _ref.currentStep,\n      steps = _ref.steps;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stepperWrapper,\n    children: steps.map(function (step, index) {\n      var _clsx;\n\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stepWrapper, (_clsx = {}, _defineProperty(_clsx, _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].active, index + 1 === currentStep), _defineProperty(_clsx, _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].completed, index + 1 < currentStep), _clsx)),\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n          className: _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].step,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n            className: _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stepCounter,\n            children: index + 1\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n            className: _Stepper_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stepName,\n            children: step.title\n          })]\n        })\n      }, step.title);\n    })\n  });\n}//# sourceURL=webpack-internal:///17286\n");

}),

34184:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Stepper": function() { return /* reexport safe */ _Stepper__WEBPACK_IMPORTED_MODULE_0__.Stepper; }
/* harmony export */ });
/* harmony import */ var _Stepper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Stepper */ 17286);


}),

13148:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SvgIcons\": function() { return /* binding */ SvgIcons; }\n/* harmony export */ });\n/* harmony import */ var _assets_ico_theme_auto_svg_c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/assets/ico/theme/auto.svg?c */ 57471);\n/* harmony import */ var _assets_ico_theme_darkmode_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/theme/darkmode.svg?c */ 96112);\n/* harmony import */ var _assets_ico_theme_lightmode_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/theme/lightmode.svg?c */ 65313);\n/* harmony import */ var _assets_ico_theme_highcontrastmode_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/ico/theme/highcontrastmode.svg?c */ 56342);\n/* harmony import */ var _assets_ico_wizard_agent_svg_c__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/assets/ico/wizard/agent.svg?c */ 64032);\n/* harmony import */ var _assets_ico_wizard_api_svg_c__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/assets/ico/wizard/api.svg?c */ 17982);\n/* harmony import */ var _assets_ico_wizard_edge_agent_svg_c__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/assets/ico/wizard/edge-agent.svg?c */ 66321);\n/* harmony import */ var _assets_ico_wizard_import_svg_c__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/assets/ico/wizard/import.svg?c */ 58980);\n/* harmony import */ var _assets_ico_wizard_socket_svg_c__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/assets/ico/wizard/socket.svg?c */ 63907);\n/* harmony import */ var _assets_ico_arrows_updown_svg_c__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/assets/ico/arrows-updown.svg?c */ 44434);\n/* harmony import */ var _assets_ico_arrow_right_long_svg_c__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/assets/ico/arrow-right-long.svg?c */ 46666);\n/* harmony import */ var _assets_ico_bomb_svg_c__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/assets/ico/bomb.svg?c */ 25898);\n/* harmony import */ var _assets_ico_checked_svg_c__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/assets/ico/checked.svg?c */ 13725);\n/* harmony import */ var _assets_ico_circle_notch_svg_c__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/assets/ico/circle-notch.svg?c */ 22944);\n/* harmony import */ var _assets_ico_clock_rewind_svg_c__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/assets/ico/clock-rewind.svg?c */ 40817);\n/* harmony import */ var _assets_ico_compress_svg_c__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/assets/ico/compress.svg?c */ 20431);\n/* harmony import */ var _assets_ico_cubes_svg_c__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/assets/ico/cubes.svg?c */ 81470);\n/* harmony import */ var _assets_ico_custom_svg_c__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/assets/ico/custom.svg?c */ 41994);\n/* harmony import */ var _assets_ico_dataflow_1_svg_c__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/assets/ico/dataflow-1.svg?c */ 33723);\n/* harmony import */ var _assets_ico_dataflow_2_svg_c__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/assets/ico/dataflow-2.svg?c */ 57960);\n/* harmony import */ var _assets_ico_expand_svg_c__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/assets/ico/expand.svg?c */ 2154);\n/* harmony import */ var _assets_ico_file_code_svg_c__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/assets/ico/file-code.svg?c */ 5320);\n/* harmony import */ var _assets_ico_file_signature_svg_c__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/assets/ico/file-signature.svg?c */ 10938);\n/* harmony import */ var _assets_ico_file_upload_svg_c__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/assets/ico/file-upload.svg?c */ 8943);\n/* harmony import */ var _assets_ico_flask_svg_c__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/assets/ico/flask.svg?c */ 87264);\n/* harmony import */ var _assets_ico_git_svg_c__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @/assets/ico/git.svg?c */ 91079);\n/* harmony import */ var _assets_ico_hacker_svg_c__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/assets/ico/hacker.svg?c */ 3831);\n/* harmony import */ var _assets_ico_heartbeat_svg_c__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/assets/ico/heartbeat.svg?c */ 53265);\n/* harmony import */ var _assets_ico_laptop_svg_c__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/assets/ico/laptop.svg?c */ 89643);\n/* harmony import */ var _assets_ico_laptop_code_svg_c__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/assets/ico/laptop-code.svg?c */ 10424);\n/* harmony import */ var _assets_ico_ldap_svg_c__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @/assets/ico/ldap.svg?c */ 82942);\n/* harmony import */ var _assets_ico_magic_svg_c__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @/assets/ico/magic.svg?c */ 98650);\n/* harmony import */ var _assets_ico_magic_wand_svg_c__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @/assets/ico/magic-wand.svg?c */ 22435);\n/* harmony import */ var _assets_ico_memory_svg_c__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @/assets/ico/memory.svg?c */ 83203);\n/* harmony import */ var _assets_ico_object_group_svg_c__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @/assets/ico/object-group.svg?c */ 50854);\n/* harmony import */ var _assets_ico_palette_svg_c__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @/assets/ico/palette.svg?c */ 36217);\n/* harmony import */ var _assets_ico_plug_svg_c__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @/assets/ico/plug.svg?c */ 70799);\n/* harmony import */ var _assets_ico_restore_svg_c__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @/assets/ico/restore.svg?c */ 29627);\n/* harmony import */ var _assets_ico_restore_window_svg_c__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @/assets/ico/restore-window.svg?c */ 5386);\n/* harmony import */ var _assets_ico_rocket_svg_c__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @/assets/ico/rocket.svg?c */ 866);\n/* harmony import */ var _assets_ico_route_svg_c__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! @/assets/ico/route.svg?c */ 48942);\n/* harmony import */ var _assets_ico_share_svg_c__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! @/assets/ico/share.svg?c */ 94754);\n/* harmony import */ var _assets_ico_sort_svg_c__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! @/assets/ico/sort.svg?c */ 71530);\n/* harmony import */ var _assets_ico_tachometer_svg_c__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! @/assets/ico/tachometer.svg?c */ 27788);\n/* harmony import */ var _assets_ico_template_svg_c__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! @/assets/ico/template.svg?c */ 1241);\n/* harmony import */ var _assets_ico_tag_2_svg_c__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! @/assets/ico/tag-2.svg?c */ 85398);\n/* harmony import */ var _assets_ico_tags_svg_c__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! @/assets/ico/tags.svg?c */ 45230);\n/* harmony import */ var _assets_ico_tools_svg_c__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! @/assets/ico/tools.svg?c */ 26620);\n/* harmony import */ var _assets_ico_upload_svg_c__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! @/assets/ico/upload.svg?c */ 74061);\n/* harmony import */ var _assets_ico_url_svg_c__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! @/assets/ico/url.svg?c */ 19864);\n/* harmony import */ var _assets_ico_user_circle_svg_c__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! @/assets/ico/user-circle.svg?c */ 96570);\n/* harmony import */ var _assets_ico_user_lock_svg_c__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! @/assets/ico/user-lock.svg?c */ 94699);\n/* harmony import */ var _assets_ico_placeholder_svg_c__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! @/assets/ico/placeholder.svg?c */ 86020);\n/* harmony import */ var _assets_ico_vendor_aws_svg_c__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! @/assets/ico/vendor/aws.svg?c */ 22880);\n/* harmony import */ var _assets_ico_vendor_azure_svg_c__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! @/assets/ico/vendor/azure.svg?c */ 23669);\n/* harmony import */ var _assets_ico_vendor_civo_svg_c__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! @/assets/ico/vendor/civo.svg?c */ 67905);\n/* harmony import */ var _assets_ico_vendor_digitalocean_svg_c__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! @/assets/ico/vendor/digitalocean.svg?c */ 67865);\n/* harmony import */ var _assets_ico_vendor_docker_svg_c__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! @/assets/ico/vendor/docker.svg?c */ 94822);\n/* harmony import */ var _assets_ico_vendor_docker_compose_svg_c__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! @/assets/ico/vendor/docker-compose.svg?c */ 97642);\n/* harmony import */ var _assets_ico_vendor_ecr_svg_c__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! @/assets/ico/vendor/ecr.svg?c */ 60218);\n/* harmony import */ var _assets_ico_vendor_github_svg_c__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! @/assets/ico/vendor/github.svg?c */ 31352);\n/* harmony import */ var _assets_ico_vendor_gitlab_svg_c__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! @/assets/ico/vendor/gitlab.svg?c */ 79309);\n/* harmony import */ var _assets_ico_vendor_google_svg_c__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! @/assets/ico/vendor/google.svg?c */ 31821);\n/* harmony import */ var _assets_ico_vendor_googlecloud_svg_c__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! @/assets/ico/vendor/googlecloud.svg?c */ 8810);\n/* harmony import */ var _assets_ico_vendor_kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! @/assets/ico/vendor/kubernetes.svg?c */ 74808);\n/* harmony import */ var _assets_ico_vendor_helm_svg_c__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! @/assets/ico/vendor/helm.svg?c */ 82732);\n/* harmony import */ var _assets_ico_vendor_linode_svg_c__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! @/assets/ico/vendor/linode.svg?c */ 20863);\n/* harmony import */ var _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! @/assets/ico/vendor/microsoft.svg?c */ 80257);\n/* harmony import */ var _assets_ico_vendor_nomad_svg_c__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! @/assets/ico/vendor/nomad.svg?c */ 90828);\n/* harmony import */ var _assets_ico_vendor_openldap_svg_c__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! @/assets/ico/vendor/openldap.svg?c */ 70003);\n/* harmony import */ var _assets_ico_vendor_proget_svg_c__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! @/assets/ico/vendor/proget.svg?c */ 36470);\n/* harmony import */ var _assets_ico_vendor_quay_svg_c__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! @/assets/ico/vendor/quay.svg?c */ 25830);\n/* harmony import */ var _assets_ico_vendor_internal_svg_c__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! @/assets/ico/vendor/internal.svg?c */ 83673);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n// theme icons\n\n\n\n // wizard icons\n\n\n\n\n\n // general icons\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Placeholder is used when an icon name cant be matched\n// vendor icons\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar placeholder = _assets_ico_placeholder_svg_c__WEBPACK_IMPORTED_MODULE_52__[\"default\"];\nvar SvgIcons = {\n  agent: _assets_ico_wizard_agent_svg_c__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  api: _assets_ico_wizard_api_svg_c__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  edgeagent: _assets_ico_wizard_edge_agent_svg_c__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  cloudimport: _assets_ico_wizard_import_svg_c__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n  socket: _assets_ico_wizard_socket_svg_c__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n  automode: _assets_ico_theme_auto_svg_c__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  darkmode: _assets_ico_theme_darkmode_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  lightmode: _assets_ico_theme_lightmode_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  highcontrastmode: _assets_ico_theme_highcontrastmode_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  dataflow: _assets_ico_dataflow_1_svg_c__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n  dataflow2: _assets_ico_dataflow_2_svg_c__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n  arrowsupdown: _assets_ico_arrows_updown_svg_c__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n  arrowright: _assets_ico_arrow_right_long_svg_c__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n  bomb: _assets_ico_bomb_svg_c__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n  checked: _assets_ico_checked_svg_c__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n  circlenotch: _assets_ico_circle_notch_svg_c__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n  clockrewind: _assets_ico_clock_rewind_svg_c__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n  compress: _assets_ico_compress_svg_c__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  cubes: _assets_ico_cubes_svg_c__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n  custom: _assets_ico_custom_svg_c__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n  expand: _assets_ico_expand_svg_c__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n  filecode: _assets_ico_file_code_svg_c__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n  filesignature: _assets_ico_file_signature_svg_c__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n  fileupload: _assets_ico_file_upload_svg_c__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n  flask: _assets_ico_flask_svg_c__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n  git: _assets_ico_git_svg_c__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n  hacker: _assets_ico_hacker_svg_c__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n  heartbeat: _assets_ico_heartbeat_svg_c__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n  laptop: _assets_ico_laptop_svg_c__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n  laptopcode: _assets_ico_laptop_code_svg_c__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n  ldap: _assets_ico_ldap_svg_c__WEBPACK_IMPORTED_MODULE_30__[\"default\"],\n  magic: _assets_ico_magic_svg_c__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n  magicwand: _assets_ico_magic_wand_svg_c__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n  memory: _assets_ico_memory_svg_c__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n  objectgroup: _assets_ico_object_group_svg_c__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n  palette: _assets_ico_palette_svg_c__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n  placeholder: placeholder,\n  plug: _assets_ico_plug_svg_c__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n  restore: _assets_ico_restore_svg_c__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n  restorewindow: _assets_ico_restore_window_svg_c__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n  rocket: _assets_ico_rocket_svg_c__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n  route: _assets_ico_route_svg_c__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n  share: _assets_ico_share_svg_c__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n  sort: _assets_ico_sort_svg_c__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n  tachometer: _assets_ico_tachometer_svg_c__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n  template: _assets_ico_template_svg_c__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n  tag: _assets_ico_tag_2_svg_c__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n  tag2: _assets_ico_tags_svg_c__WEBPACK_IMPORTED_MODULE_46__[\"default\"],\n  tools: _assets_ico_tools_svg_c__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n  upload: _assets_ico_upload_svg_c__WEBPACK_IMPORTED_MODULE_48__[\"default\"],\n  url: _assets_ico_url_svg_c__WEBPACK_IMPORTED_MODULE_49__[\"default\"],\n  usercircle: _assets_ico_user_circle_svg_c__WEBPACK_IMPORTED_MODULE_50__[\"default\"],\n  userlock: _assets_ico_user_lock_svg_c__WEBPACK_IMPORTED_MODULE_51__[\"default\"],\n  aws: _assets_ico_vendor_aws_svg_c__WEBPACK_IMPORTED_MODULE_53__[\"default\"],\n  azure: _assets_ico_vendor_azure_svg_c__WEBPACK_IMPORTED_MODULE_54__[\"default\"],\n  civo: _assets_ico_vendor_civo_svg_c__WEBPACK_IMPORTED_MODULE_55__[\"default\"],\n  digitalocean: _assets_ico_vendor_digitalocean_svg_c__WEBPACK_IMPORTED_MODULE_56__[\"default\"],\n  docker: _assets_ico_vendor_docker_svg_c__WEBPACK_IMPORTED_MODULE_57__[\"default\"],\n  dockercompose: _assets_ico_vendor_docker_compose_svg_c__WEBPACK_IMPORTED_MODULE_58__[\"default\"],\n  ecr: _assets_ico_vendor_ecr_svg_c__WEBPACK_IMPORTED_MODULE_59__[\"default\"],\n  github: _assets_ico_vendor_github_svg_c__WEBPACK_IMPORTED_MODULE_60__[\"default\"],\n  gitlab: _assets_ico_vendor_gitlab_svg_c__WEBPACK_IMPORTED_MODULE_61__[\"default\"],\n  google: _assets_ico_vendor_google_svg_c__WEBPACK_IMPORTED_MODULE_62__[\"default\"],\n  googlecloud: _assets_ico_vendor_googlecloud_svg_c__WEBPACK_IMPORTED_MODULE_63__[\"default\"],\n  kubernetes: _assets_ico_vendor_kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_64__[\"default\"],\n  helm: _assets_ico_vendor_helm_svg_c__WEBPACK_IMPORTED_MODULE_65__[\"default\"],\n  linode: _assets_ico_vendor_linode_svg_c__WEBPACK_IMPORTED_MODULE_66__[\"default\"],\n  microsoft: _assets_ico_vendor_microsoft_svg_c__WEBPACK_IMPORTED_MODULE_67__[\"default\"],\n  nomad: _assets_ico_vendor_nomad_svg_c__WEBPACK_IMPORTED_MODULE_68__[\"default\"],\n  openldap: _assets_ico_vendor_openldap_svg_c__WEBPACK_IMPORTED_MODULE_69__[\"default\"],\n  proget: _assets_ico_vendor_proget_svg_c__WEBPACK_IMPORTED_MODULE_70__[\"default\"],\n  quay: _assets_ico_vendor_quay_svg_c__WEBPACK_IMPORTED_MODULE_71__[\"default\"],\n  internal: _assets_ico_vendor_internal_svg_c__WEBPACK_IMPORTED_MODULE_72__[\"default\"]\n};\n\nfunction Svg(_ref) {\n  var icon = _ref.icon,\n      className = _ref.className;\n  var SvgIcon = SvgIcons[icon];\n\n  if (!SvgIcon) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_73__.jsx)(\"span\", {\n      className: className,\n      \"aria-hidden\": \"true\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_73__.jsx)(_assets_ico_placeholder_svg_c__WEBPACK_IMPORTED_MODULE_52__[\"default\"], {})\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_73__.jsx)(\"span\", {\n    className: className,\n    \"aria-hidden\": \"true\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_73__.jsx)(SvgIcon, {})\n  });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Svg);//# sourceURL=webpack-internal:///13148\n");

}),

93058:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TagSelector\": function() { return /* binding */ TagSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _portainer_tags_queries__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/tags/queries */ 22878);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _TagSelector_module_css__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./TagSelector.module.css */ 76464);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction TagSelector(_ref) {\n  var value = _ref.value,\n      _ref$allowCreate = _ref.allowCreate,\n      allowCreate = _ref$allowCreate === void 0 ? false : _ref$allowCreate,\n      onChange = _ref.onChange;\n  // change the struct because react-select has a bug with Creatable (https://github.com/JedWatson/react-select/issues/3417#issuecomment-461868989)\n  var tagsQuery = (0,_portainer_tags_queries__WEBPACK_IMPORTED_MODULE_20__.useTags)(function (tags) {\n    return tags.map(function (opt) {\n      return {\n        label: opt.Name,\n        value: opt.ID\n      };\n    });\n  });\n  var createTagMutation = (0,_portainer_tags_queries__WEBPACK_IMPORTED_MODULE_20__.useCreateTagMutation)();\n\n  if (!tagsQuery.tags) {\n    return null;\n  }\n\n  var tags = tagsQuery.tags;\n\n  var selectedTags = lodash_compact__WEBPACK_IMPORTED_MODULE_10___default()(value.map(function (id) {\n    return tags.find(function (tag) {\n      return tag.value === id;\n    });\n  }));\n\n  var SelectComponent = allowCreate ? _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_21__.Creatable : _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_21__.Select;\n\n  if (!tags.length && !allowCreate) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n        className: \"col-sm-12 small text-muted\",\n        children: [\"No tags available. Head over to the\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_23__.Link, {\n          to: \"portainer.tags\",\n          className: \"space-right space-left\",\n          children: \"Tags view\"\n        }), \"to add tags\"]\n      })\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.Fragment, {\n    children: [value.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_22__.FormControl, {\n      label: \"Selected tags\",\n      children: selectedTags.map(function (tag) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"button\", {\n          type: \"button\",\n          title: \"Remove tag\",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(_TagSelector_module_css__WEBPACK_IMPORTED_MODULE_24__[\"default\"].removeTagBtn, 'space-left', 'tag', 'vertical-center'),\n          onClick: function onClick() {\n            return handleRemove(tag.value);\n          },\n          children: [tag.label, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_19__.Icon, {\n            icon: \"trash-2\",\n            feather: true\n          })]\n        }, tag.value);\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_22__.FormControl, {\n      label: \"Tags\",\n      inputId: \"tags-selector\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(SelectComponent, {\n        inputId: \"tags-selector\",\n        value: [],\n        hideSelectedOptions: true,\n        options: tags.filter(function (tag) {\n          return !value.includes(tag.value);\n        }),\n        closeMenuOnSelect: false,\n        onChange: handleAdd,\n        noOptionsMessage: function noOptionsMessage() {\n          return 'No tags available';\n        },\n        formatCreateLabel: function formatCreateLabel(inputValue) {\n          return \"Create \\\"\".concat(inputValue, \"\\\"\");\n        },\n        onCreateOption: handleCreateOption\n      })\n    })]\n  });\n\n  function handleAdd(tag) {\n    if (!tag) {\n      return;\n    }\n\n    onChange([].concat(_toConsumableArray(value), [tag.value]));\n  }\n\n  function handleRemove(tagId) {\n    onChange(value.filter(function (id) {\n      return id !== tagId;\n    }));\n  }\n\n  function handleCreateOption(inputValue) {\n    if (!allowCreate) {\n      return;\n    }\n\n    createTagMutation.mutate(inputValue, {\n      onSuccess: function onSuccess(tag) {\n        handleAdd({\n          label: tag.Name,\n          value: tag.ID\n        });\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///93058\n");

}),

49501:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "TagSelector": function() { return /* reexport safe */ _TagSelector__WEBPACK_IMPORTED_MODULE_0__.TagSelector; }
/* harmony export */ });
/* harmony import */ var _TagSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TagSelector */ 93058);


}),

50600:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamsSelector\": function() { return /* binding */ TeamsSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _form_components_PortainerSelect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/form-components/PortainerSelect */ 68871);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction TeamsSelector(_ref) {\n  var name = _ref.name,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      teams = _ref.teams,\n      dataCy = _ref.dataCy,\n      inputId = _ref.inputId,\n      placeholder = _ref.placeholder;\n  var options = teams.map(function (team) {\n    return {\n      label: team.Name,\n      value: team.Id\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_form_components_PortainerSelect__WEBPACK_IMPORTED_MODULE_4__.PortainerSelect, {\n    name: name,\n    isMulti: true,\n    options: options,\n    value: value,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (value) {\n      return onChange(value);\n    }),\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder\n  });\n}//# sourceURL=webpack-internal:///50600\n");

}),

82938:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "TeamsSelector": function() { return /* reexport safe */ _TeamsSelector__WEBPACK_IMPORTED_MODULE_0__.TeamsSelector; }
/* harmony export */ });
/* harmony import */ var _TeamsSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TeamsSelector */ 50600);


}),

84429:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TextTip\": function() { return /* binding */ TextTip; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction TextTip(_ref) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'orange' : _ref$color,\n      children = _ref.children;\n  var iconClass;\n\n  switch (color) {\n    case 'blue':\n      iconClass = 'icon-primary';\n      break;\n\n    case 'orange':\n      iconClass = 'icon-warning';\n      break;\n\n    default:\n      iconClass = 'icon-warning';\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"p\", {\n    className: \"small vertical-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n      className: \"icon-container\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n        icon: \"alert-circle\",\n        feather: true,\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\".concat(iconClass), 'space-right')\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      className: \"text-muted\",\n      children: children\n    })]\n  });\n}//# sourceURL=webpack-internal:///84429\n");

}),

59142:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "TextTip": function() { return /* reexport safe */ _TextTip__WEBPACK_IMPORTED_MODULE_0__.TextTip; }
/* harmony export */ });
/* harmony import */ var _TextTip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TextTip */ 84429);


}),

13115:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Tooltip\": function() { return /* binding */ Tooltip; }\n/* harmony export */ });\n/* harmony import */ var lodash_uniqueId__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/uniqueId */ 91941);\n/* harmony import */ var lodash_uniqueId__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqueId__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-tooltip */ 34542);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 86704);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Tooltip_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Tooltip.module.css */ 88049);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction Tooltip(_ref) {\n  var message = _ref.message,\n      _ref$position = _ref.position,\n      position = _ref$position === void 0 ? 'bottom' : _ref$position,\n      className = _ref.className;\n\n  var id = lodash_uniqueId__WEBPACK_IMPORTED_MODULE_0___default()('tooltip-');\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n    \"data-tip\": message,\n    \"data-for\": id,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_Tooltip_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].icon, 'inline-flex text-base'),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      className: \"feather\",\n      \"aria-hidden\": \"true\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tooltip__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n      id: id,\n      multiline: true,\n      type: \"info\",\n      place: position,\n      effect: \"solid\",\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_Tooltip_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].tooltip, className),\n      arrowColor: \"transparent\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///13115\n");

}),

36147:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Tooltip": function() { return /* reexport safe */ _Tooltip__WEBPACK_IMPORTED_MODULE_0__.Tooltip; }
/* harmony export */ });
/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tooltip */ 13115);


}),

64489:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UsersSelector\": function() { return /* binding */ UsersSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction UsersSelector(_ref) {\n  var name = _ref.name,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      users = _ref.users,\n      dataCy = _ref.dataCy,\n      inputId = _ref.inputId,\n      placeholder = _ref.placeholder;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_7__.Select, {\n    isMulti: true,\n    name: name,\n    getOptionLabel: function getOptionLabel(user) {\n      return user.Username;\n    },\n    getOptionValue: function getOptionValue(user) {\n      return \"\".concat(user.Id);\n    },\n    options: users,\n    value: users.filter(function (user) {\n      return value.includes(user.Id);\n    }),\n    closeMenuOnSelect: false,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (selectedUsers) {\n      return onChange(selectedUsers.map(function (user) {\n        return user.Id;\n      }));\n    }),\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder\n  });\n}//# sourceURL=webpack-internal:///64489\n");

}),

11068:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "UsersSelector": function() { return /* reexport safe */ _UsersSelector__WEBPACK_IMPORTED_MODULE_0__.UsersSelector; }
/* harmony export */ });
/* harmony import */ var _UsersSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UsersSelector */ 64489);


}),

59554:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ViewLoading\": function() { return /* binding */ ViewLoading; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _ViewLoading_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ViewLoading.module.css */ 70296);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction ViewLoading(_ref) {\n  var message = _ref.message;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('row', _ViewLoading_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].root),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n      className: \"sk-fold\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n        className: \"sk-fold-cube\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n        className: \"sk-fold-cube\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n        className: \"sk-fold-cube\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n        className: \"sk-fold-cube\"\n      })]\n    }), message && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"span\", {\n      className: _ViewLoading_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].message,\n      children: [message, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n        className: \"fa fa-cog fa-spin space-left\"\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///59554\n");

}),

83537:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ViewLoading": function() { return /* reexport safe */ _ViewLoading__WEBPACK_IMPORTED_MODULE_0__.ViewLoading; }
/* harmony export */ });
/* harmony import */ var _ViewLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ViewLoading */ 59554);


}),

53848:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Loading\": function() { return /* binding */ Loading; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction Loading() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", {\n    className: \"loading\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", {\n      className: \"double-bounce1\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", {\n      className: \"double-bounce2\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///53848\n");

}),

20363:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useWidgetContext\": function() { return /* binding */ useWidgetContext; },\n/* harmony export */   \"Widget\": function() { return /* binding */ Widget; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar Context = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\nContext.displayName = 'WidgetContext';\nfunction useWidgetContext() {\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n\n  if (context == null) {\n    throw new Error('Should be inside a Widget component');\n  }\n}\nfunction Widget(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, {\n    value: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n      className: \"widget\",\n      children: children\n    })\n  });\n}//# sourceURL=webpack-internal:///20363\n");

}),

50179:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetBody\": function() { return /* binding */ WidgetBody; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Widget */ 20363);\n/* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Loading */ 53848);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction WidgetBody(_ref) {\n  var loading = _ref.loading,\n      className = _ref.className,\n      children = _ref.children;\n  (0,_Widget__WEBPACK_IMPORTED_MODULE_1__.useWidgetContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(className, 'widget-body'),\n    children: loading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Loading__WEBPACK_IMPORTED_MODULE_2__.Loading, {}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n      className: \"widget-content\",\n      children: children\n    })\n  });\n}//# sourceURL=webpack-internal:///50179\n");

}),

72937:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetFooter\": function() { return /* binding */ WidgetFooter; }\n/* harmony export */ });\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Widget */ 20363);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction WidgetFooter(_ref) {\n  var children = _ref.children;\n  (0,_Widget__WEBPACK_IMPORTED_MODULE_0__.useWidgetContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"widget-footer\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///72937\n");

}),

72353:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetTaskbar\": function() { return /* binding */ WidgetTaskbar; }\n/* harmony export */ });\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Widget */ 20363);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction WidgetTaskbar(_ref) {\n  var children = _ref.children,\n      className = _ref.className;\n  (0,_Widget__WEBPACK_IMPORTED_MODULE_0__.useWidgetContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"widget-header\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n        className: className,\n        children: children\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///72353\n");

}),

20263:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetTitle\": function() { return /* binding */ WidgetTitle; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Widget */ 20363);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction WidgetTitle(_ref) {\n  var title = _ref.title,\n      icon = _ref.icon,\n      className = _ref.className,\n      children = _ref.children,\n      featherIcon = _ref.featherIcon;\n  (0,_Widget__WEBPACK_IMPORTED_MODULE_2__.useWidgetContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: \"widget-header\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      className: \"row\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"span\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('pull-left vertical-center', className),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: \"widget-icon\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n            icon: icon,\n            feather: featherIcon,\n            className: \"space-right feather\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n          children: title\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('pull-right', className),\n        children: children\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///20263\n");

}),

54592:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Widget\": function() { return /* binding */ Widget; },\n/* harmony export */   \"WidgetBody\": function() { return /* reexport safe */ _WidgetBody__WEBPACK_IMPORTED_MODULE_1__.WidgetBody; },\n/* harmony export */   \"WidgetFooter\": function() { return /* reexport safe */ _WidgetFooter__WEBPACK_IMPORTED_MODULE_2__.WidgetFooter; },\n/* harmony export */   \"WidgetTitle\": function() { return /* reexport safe */ _WidgetTitle__WEBPACK_IMPORTED_MODULE_3__.WidgetTitle; },\n/* harmony export */   \"WidgetTaskbar\": function() { return /* reexport safe */ _WidgetTaskbar__WEBPACK_IMPORTED_MODULE_4__.WidgetTaskbar; },\n/* harmony export */   \"Loading\": function() { return /* reexport safe */ _Loading__WEBPACK_IMPORTED_MODULE_5__.Loading; }\n/* harmony export */ });\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Widget */ 20363);\n/* harmony import */ var _WidgetBody__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WidgetBody */ 50179);\n/* harmony import */ var _WidgetFooter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./WidgetFooter */ 72937);\n/* harmony import */ var _WidgetTitle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WidgetTitle */ 20263);\n/* harmony import */ var _WidgetTaskbar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./WidgetTaskbar */ 72353);\n/* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Loading */ 53848);\n\n\n\n\n\n\nvar Widget = _Widget__WEBPACK_IMPORTED_MODULE_0__.Widget;\nWidget.Body = _WidgetBody__WEBPACK_IMPORTED_MODULE_1__.WidgetBody;\nWidget.Footer = _WidgetFooter__WEBPACK_IMPORTED_MODULE_2__.WidgetFooter;\nWidget.Title = _WidgetTitle__WEBPACK_IMPORTED_MODULE_3__.WidgetTitle;\nWidget.Taskbar = _WidgetTaskbar__WEBPACK_IMPORTED_MODULE_4__.WidgetTaskbar;\nWidget.Loading = _Loading__WEBPACK_IMPORTED_MODULE_5__.Loading;\n//# sourceURL=webpack-internal:///54592\n");

}),

50411:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AddButton\": function() { return /* binding */ AddButton; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _AddButton_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AddButton.module.css */ 99394);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction AddButton(_ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick,\n      className = _ref.className,\n      disabled = _ref.disabled;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"button\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(className, 'label', 'label-default', 'vertical-center', 'interactive', 'vertical-center', _AddButton_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].addButton),\n    type: \"button\",\n    onClick: onClick,\n    disabled: disabled,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n      icon: \"plus-circle\",\n      feather: true\n    }), label]\n  });\n}//# sourceURL=webpack-internal:///50411\n");

}),

51646:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Button\": function() { return /* binding */ Button; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Button_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Button.css */ 33184);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"type\", \"color\", \"size\", \"disabled\", \"className\", \"onClick\", \"title\", \"icon\", \"featherIcon\", \"children\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\nfunction Button(_ref) {\n  var _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'button' : _ref$type,\n      _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'primary' : _ref$color,\n      _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 'small' : _ref$size,\n      _ref$disabled = _ref.disabled,\n      disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n      className = _ref.className,\n      onClick = _ref.onClick,\n      title = _ref.title,\n      icon = _ref.icon,\n      featherIcon = _ref.featherIcon,\n      children = _ref.children,\n      ariaProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(\"button\", _objectSpread(_objectSpread({\n    /* eslint-disable-next-line react/button-has-type */\n    type: type,\n    disabled: disabled,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(\"btn btn-\".concat(color), sizeClass(size), className),\n    onClick: onClick,\n    title: title // eslint-disable-next-line react/jsx-props-no-spreading\n\n  }, ariaProps), {}, {\n    children: [icon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_8__.Icon, {\n      icon: icon,\n      size: getIconSize(size),\n      className: \"inline-flex\",\n      feather: featherIcon\n    }), children]\n  }));\n}\n\nfunction getIconSize(size) {\n  switch (size) {\n    case 'xsmall':\n      return 'xs';\n\n    case 'medium':\n      return 'md';\n\n    case 'large':\n      return 'lg';\n\n    case 'small':\n    default:\n      return 'sm';\n  }\n}\n\nfunction sizeClass(size) {\n  switch (size) {\n    case 'large':\n      return 'btn-lg';\n\n    case 'medium':\n      return 'btn-md';\n\n    case 'xsmall':\n      return 'btn-xs';\n\n    default:\n      return 'btn-sm';\n  }\n}//# sourceURL=webpack-internal:///51646\n");

}),

18917:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ButtonGroup\": function() { return /* binding */ ButtonGroup; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction ButtonGroup(_ref) {\n  var _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 'small' : _ref$size,\n      children = _ref.children,\n      className = _ref.className;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('btn-group', sizeClass(size), className),\n    role: \"group\",\n    children: children\n  });\n}\n\nfunction sizeClass(size) {\n  switch (size) {\n    case 'xsmall':\n      return 'btn-group-xs';\n\n    case 'large':\n      return 'btn-group-lg';\n\n    default:\n      return '';\n  }\n}//# sourceURL=webpack-internal:///18917\n");

}),

57596:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CopyButton\": function() { return /* binding */ CopyButton; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Button */ 51646);\n/* harmony import */ var _CopyButton_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CopyButton.module.css */ 29071);\n/* harmony import */ var _useCopy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useCopy */ 66070);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction CopyButton(_ref) {\n  var copyText = _ref.copyText,\n      _ref$fadeDelay = _ref.fadeDelay,\n      fadeDelay = _ref$fadeDelay === void 0 ? 1000 : _ref$fadeDelay,\n      _ref$displayText = _ref.displayText,\n      displayText = _ref$displayText === void 0 ? 'copied' : _ref$displayText,\n      className = _ref.className,\n      children = _ref.children;\n\n  var _useCopy = (0,_useCopy__WEBPACK_IMPORTED_MODULE_4__.useCopy)(copyText, fadeDelay),\n      handleCopy = _useCopy.handleCopy,\n      copiedSuccessfully = _useCopy.copiedSuccessfully;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"div\", {\n    className: _CopyButton_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].container,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_Button__WEBPACK_IMPORTED_MODULE_2__.Button, {\n      className: className,\n      size: \"small\",\n      onClick: handleCopy,\n      title: \"Copy Value\",\n      type: \"button\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n        icon: \"copy\",\n        feather: true\n      }), children]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"span\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(copiedSuccessfully && _CopyButton_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].fadeout, _CopyButton_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].displayText, 'space-left', 'vertical-center'),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n        icon: \"check\",\n        feather: true\n      }), displayText && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n        className: \"space-left\",\n        children: displayText\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///57596\n");

}),

69574:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CopyButton": function() { return /* reexport safe */ _CopyButton__WEBPACK_IMPORTED_MODULE_0__.CopyButton; }
/* harmony export */ });
/* harmony import */ var _CopyButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CopyButton */ 57596);


}),

66070:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCopy\": function() { return /* binding */ useCopy; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nfunction useCopy(copyText) {\n  var fadeDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      copiedSuccessfully = _useState2[0],\n      setCopiedSuccessfully = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_11__.useEffect)(function () {\n    var fadeoutTime = setTimeout(function () {\n      return setCopiedSuccessfully(false);\n    }, fadeDelay); // clear timeout when component unmounts\n\n    return function () {\n      clearTimeout(fadeoutTime);\n    };\n  }, [copiedSuccessfully, fadeDelay]);\n\n  function handleCopy() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\n    // https://caniuse.com/?search=clipboard\n    if (navigator.clipboard) {\n      navigator.clipboard.writeText(copyText);\n    } else {\n      // https://stackoverflow.com/a/57192718\n      var inputEl = document.createElement('textarea');\n      inputEl.value = copyText;\n      document.body.appendChild(inputEl);\n      inputEl.select();\n      document.execCommand('copy');\n      inputEl.hidden = true;\n      document.body.removeChild(inputEl);\n    }\n\n    setCopiedSuccessfully(true);\n  }\n\n  return {\n    handleCopy: handleCopy,\n    copiedSuccessfully: copiedSuccessfully\n  };\n}//# sourceURL=webpack-internal:///66070\n");

}),

97347:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LoadingButton\": function() { return /* binding */ LoadingButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Button */ 51646);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"loadingText\", \"isLoading\", \"disabled\", \"type\", \"children\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\nfunction LoadingButton(_ref) {\n  var loadingText = _ref.loadingText,\n      isLoading = _ref.isLoading,\n      disabled = _ref.disabled,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'submit' : _ref$type,\n      children = _ref.children,\n      buttonProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_7__.Button // eslint-disable-next-line react/jsx-props-no-spreading\n  , _objectSpread(_objectSpread({}, buttonProps), {}, {\n    type: type,\n    disabled: disabled || isLoading,\n    children: isLoading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"i\", {\n        className: \"fa fa-circle-notch fa-spin space-right\",\n        \"aria-label\": \"loading\",\n        \"aria-hidden\": \"true\"\n      }), loadingText]\n    }) : children\n  }));\n}//# sourceURL=webpack-internal:///97347\n");

}),

72595:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Button\": function() { return /* reexport safe */ _Button__WEBPACK_IMPORTED_MODULE_0__.Button; },\n/* harmony export */   \"AddButton\": function() { return /* reexport safe */ _AddButton__WEBPACK_IMPORTED_MODULE_1__.AddButton; },\n/* harmony export */   \"ButtonGroup\": function() { return /* reexport safe */ _ButtonGroup__WEBPACK_IMPORTED_MODULE_2__.ButtonGroup; },\n/* harmony export */   \"LoadingButton\": function() { return /* reexport safe */ _LoadingButton__WEBPACK_IMPORTED_MODULE_3__.LoadingButton; },\n/* harmony export */   \"CopyButton\": function() { return /* reexport safe */ _CopyButton__WEBPACK_IMPORTED_MODULE_4__.CopyButton; }\n/* harmony export */ });\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Button */ 51646);\n/* harmony import */ var _AddButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AddButton */ 50411);\n/* harmony import */ var _ButtonGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ButtonGroup */ 18917);\n/* harmony import */ var _LoadingButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoadingButton */ 97347);\n/* harmony import */ var _CopyButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CopyButton */ 69574);\n\n\n\n\n//# sourceURL=webpack-internal:///72595\n");

}),

65444:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ActionsMenu\": function() { return /* binding */ ActionsMenu; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var _ActionsMenu_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActionsMenu.module.css */ 52050);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction ActionsMenu(_ref) {\n  var _children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_3__.Menu, {\n    className: _ActionsMenu_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].actions,\n    children: function children(_ref2) {\n      var isExpanded = _ref2.isExpanded;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_3__.MenuButton, {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ActionsMenu_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].tableActionsMenuBtn, isExpanded && _ActionsMenu_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].actionsActive),\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n            className: \"fa fa-ellipsis-v\",\n            \"aria-hidden\": \"true\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_3__.MenuList, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n            className: _ActionsMenu_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].tableActionsMenuList,\n            children: _children\n          })\n        })]\n      });\n    }\n  });\n}//# sourceURL=webpack-internal:///65444\n");

}),

16163:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ActionsMenuTitle\": function() { return /* binding */ ActionsMenuTitle; }\n/* harmony export */ });\n/* harmony import */ var _ActionsMenuTitle_module_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActionsMenuTitle.module.css */ 50520);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction ActionsMenuTitle(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: _ActionsMenuTitle_module_css__WEBPACK_IMPORTED_MODULE_0__[\"default\"].tableActionsTitle,\n    children: children\n  });\n}//# sourceURL=webpack-internal:///16163\n");

}),

2294:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ColumnVisibilityMenu\": function() { return /* binding */ ColumnVisibilityMenu; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 48770);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ColumnVisibilityMenu(_ref) {\n  var columns = _ref.columns,\n      onChange = _ref.onChange,\n      value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_17__.Menu, {\n    className: \"setting\",\n    children: function children(_ref2) {\n      var isExpanded = _ref2.isExpanded;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_17__.MenuButton, {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_14__[\"default\"])('table-setting-menu-btn', {\n            'setting-active': isExpanded\n          }),\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n            size: \"13\",\n            className: \"space-right\",\n            strokeWidth: \"3px\",\n            \"aria-hidden\": \"true\",\n            \"aria-label\": \"Columns\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_17__.MenuList, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n            className: \"tableMenu\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"div\", {\n              className: \"menuHeader\",\n              children: \"\\u663E\\u793A/\\u9690\\u85CF\\u5217\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"div\", {\n              className: \"menuContent\",\n              children: columns.map(function (column) {\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"div\", {\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_15__.Checkbox, {\n                    checked: column.isVisible,\n                    label: column.Header,\n                    id: \"visibility_\".concat(column.id),\n                    onChange: function onChange(e) {\n                      return handleChangeColumnVisibility(column.id, e.target.checked);\n                    }\n                  })\n                }, column.id);\n              })\n            })]\n          })\n        })]\n      });\n    }\n  });\n\n  function handleChangeColumnVisibility(colId, visible) {\n    if (visible) {\n      onChange(value.filter(function (id) {\n        return id !== colId;\n      }));\n      return;\n    }\n\n    onChange([].concat(_toConsumableArray(value), [colId]));\n  }\n}//# sourceURL=webpack-internal:///2294\n");

}),

34544:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Datatable\": function() { return /* binding */ Datatable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ 90257);\n/* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _Table__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Table */ 63756);\n/* harmony import */ var _filter_types__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./filter-types */ 35138);\n/* harmony import */ var _SearchBar__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./SearchBar */ 1808);\n/* harmony import */ var _SelectedRowsCount__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./SelectedRowsCount */ 38276);\n/* harmony import */ var _useZustandTableSettings__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./useZustandTableSettings */ 96276);\n/* harmony import */ var _useRowSelect__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./useRowSelect */ 89996);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Datatable(_ref) {\n  var columns = _ref.columns,\n      dataset = _ref.dataset,\n      storageKey = _ref.storageKey,\n      renderTableSettings = _ref.renderTableSettings,\n      renderTableActions = _ref.renderTableActions,\n      settingsStore = _ref.settingsStore,\n      disableSelect = _ref.disableSelect,\n      _ref$getRowId = _ref.getRowId,\n      getRowId = _ref$getRowId === void 0 ? defaultGetRowId : _ref$getRowId,\n      _ref$isRowSelectable = _ref.isRowSelectable,\n      isRowSelectable = _ref$isRowSelectable === void 0 ? function () {\n    return true;\n  } : _ref$isRowSelectable,\n      titleOptions = _ref.titleOptions,\n      emptyContentLabel = _ref.emptyContentLabel,\n      _ref$initialTableStat = _ref.initialTableState,\n      initialTableState = _ref$initialTableStat === void 0 ? {} : _ref$initialTableStat,\n      isLoading = _ref.isLoading,\n      _ref$totalCount = _ref.totalCount,\n      totalCount = _ref$totalCount === void 0 ? dataset.length : _ref$totalCount,\n      description = _ref.description,\n      initialActiveItem = _ref.initialActiveItem;\n\n  var _useSearchBarState = (0,_SearchBar__WEBPACK_IMPORTED_MODULE_25__.useSearchBarState)(storageKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      searchBarValue = _useSearchBarState2[0],\n      setSearchBarValue = _useSearchBarState2[1];\n\n  var tableInstance = (0,react_table__WEBPACK_IMPORTED_MODULE_19__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: dataset,\n    filterTypes: {\n      multiple: _filter_types__WEBPACK_IMPORTED_MODULE_24__.multiple\n    },\n    initialState: _objectSpread({\n      pageSize: settingsStore.pageSize || 10,\n      sortBy: [settingsStore.sortBy],\n      globalFilter: searchBarValue\n    }, initialTableState),\n    isRowSelectable: isRowSelectable,\n    autoResetSelectedRows: false,\n    getRowId: getRowId,\n    stateReducer: function stateReducer(newState, action) {\n      switch (action.type) {\n        case 'setGlobalFilter':\n          setSearchBarValue(action.filterValue);\n          break;\n\n        case 'toggleSortBy':\n          settingsStore.setSortBy(action.columnId, action.desc);\n          break;\n\n        case 'setPageSize':\n          settingsStore.setPageSize(action.pageSize);\n          break;\n\n        default:\n          break;\n      }\n\n      return newState;\n    }\n  }, react_table__WEBPACK_IMPORTED_MODULE_19__.useFilters, react_table__WEBPACK_IMPORTED_MODULE_19__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_19__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_19__.usePagination, _useRowSelect__WEBPACK_IMPORTED_MODULE_28__.useRowSelect, !disableSelect ? _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_30__.useRowSelectColumn : emptyPlugin);\n  var rows = tableInstance.rows,\n      selectedFlatRows = tableInstance.selectedFlatRows,\n      getTableProps = tableInstance.getTableProps,\n      getTableBodyProps = tableInstance.getTableBodyProps,\n      headerGroups = tableInstance.headerGroups,\n      page = tableInstance.page,\n      prepareRow = tableInstance.prepareRow,\n      gotoPage = tableInstance.gotoPage,\n      setPageSize = tableInstance.setPageSize,\n      setGlobalFilter = tableInstance.setGlobalFilter,\n      _tableInstance$state = tableInstance.state,\n      pageIndex = _tableInstance$state.pageIndex,\n      pageSize = _tableInstance$state.pageSize;\n  (0,react__WEBPACK_IMPORTED_MODULE_20__.useEffect)(function () {\n    if (initialActiveItem && pageSize !== rows.length) {\n      var paginatedData = _toConsumableArray(Array(Math.ceil(rows.length / pageSize))).map(function (_, i) {\n        return rows.slice(pageSize * i, pageSize + pageSize * i);\n      });\n\n      var itemPage = paginatedData.findIndex(function (sub) {\n        return sub.some(function (row) {\n          return row.id === initialActiveItem;\n        });\n      });\n      gotoPage(itemPage);\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [initialActiveItem]);\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  var selectedItems = selectedFlatRows.map(function (row) {\n    return row.original;\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_27__.TableSettingsProvider, {\n        settings: settingsStore,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Container, {\n          children: [isTitleVisible(titleOptions) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Title, {\n            label: titleOptions.title,\n            icon: titleOptions.icon,\n            featherIcon: titleOptions.featherIcon,\n            description: description,\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_SearchBar__WEBPACK_IMPORTED_MODULE_25__.SearchBar, {\n              value: searchBarValue,\n              onChange: setGlobalFilter\n            }), renderTableActions && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Actions, {\n              children: renderTableActions(selectedItems)\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.TitleActions, {\n              children: !!renderTableSettings && renderTableSettings(tableInstance)\n            })]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table, {\n            className: tableProps.className,\n            role: tableProps.role,\n            style: tableProps.style,\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"thead\", {\n              children: headerGroups.map(function (headerGroup) {\n                var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                    key = _headerGroup$getHeade.key,\n                    className = _headerGroup$getHeade.className,\n                    role = _headerGroup$getHeade.role,\n                    style = _headerGroup$getHeade.style;\n\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.HeaderRow, {\n                  className: className,\n                  role: role,\n                  style: style,\n                  headers: headerGroup.headers\n                }, key);\n              })\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"tbody\", {\n              className: tbodyProps.className,\n              role: tbodyProps.role,\n              style: tbodyProps.style,\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Content, {\n                rows: page,\n                isLoading: isLoading,\n                prepareRow: prepareRow,\n                emptyContent: emptyContentLabel,\n                renderRow: function renderRow(row, _ref2) {\n                  var key = _ref2.key,\n                      className = _ref2.className,\n                      role = _ref2.role,\n                      style = _ref2.style;\n                  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Row, {\n                    cells: row.cells,\n                    className: (0,clsx__WEBPACK_IMPORTED_MODULE_21__[\"default\"])(className, initialActiveItem && initialActiveItem === row.id && 'active'),\n                    role: role,\n                    style: style\n                  }, key);\n                }\n              })\n            })]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Table__WEBPACK_IMPORTED_MODULE_23__.Table.Footer, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_26__.SelectedRowsCount, {\n              value: selectedFlatRows.length\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_22__.PaginationControls, {\n              showAll: true,\n              pageLimit: pageSize,\n              page: pageIndex + 1,\n              onPageChange: function onPageChange(p) {\n                return gotoPage(p - 1);\n              },\n              totalCount: totalCount,\n              onPageLimitChange: setPageSize\n            })]\n          })]\n        })\n      })\n    })\n  });\n}\n\nfunction isTitleVisible(titleSettings) {\n  return !titleSettings.hide;\n}\n\nfunction defaultGetRowId(row) {\n  if (row.id && (typeof row.id === 'string' || typeof row.id === 'number')) {\n    return row.id.toString();\n  }\n\n  if (row.Id && (typeof row.Id === 'string' || typeof row.Id === 'number')) {\n    return row.Id.toString();\n  }\n\n  if (row.ID && (typeof row.ID === 'string' || typeof row.ID === 'number')) {\n    return row.ID.toString();\n  }\n\n  return '';\n}\n\nfunction emptyPlugin() {}\n\nemptyPlugin.pluginName = 'emptyPlugin';//# sourceURL=webpack-internal:///34544\n");

}),

61963:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ExpandingCell\": function() { return /* binding */ ExpandingCell; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _ExpandingCell_module_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ExpandingCell.module.css */ 82089);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nfunction ExpandingCell(_ref) {\n  var row = _ref.row,\n      showExpandArrow = _ref.showExpandArrow,\n      children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [showExpandArrow && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"button\", {\n      type: \"button\",\n      className: _ExpandingCell_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].expandButton,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"i\", _objectSpread(_objectSpread({}, row.getToggleRowExpandedProps()), {}, {\n        className: \"fas \".concat(arrowClass(row.isExpanded), \" space-right\"),\n        \"aria-hidden\": \"true\"\n      }))\n    }), children]\n  });\n\n  function arrowClass(isExpanded) {\n    if (isExpanded) {\n      return 'fa-angle-down';\n    }\n\n    return 'fa-angle-right';\n  }\n}//# sourceURL=webpack-internal:///61963\n");

}),

33513:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultFilter\": function() { return /* binding */ DefaultFilter; },\n/* harmony export */   \"MultipleSelectionFilter\": function() { return /* binding */ MultipleSelectionFilter; },\n/* harmony export */   \"filterHOC\": function() { return /* binding */ filterHOC; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.set.js */ 89024);\n/* harmony import */ var core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DefaultFilter = filterHOC('按状态筛选');\nfunction MultipleSelectionFilter(_ref) {\n  var options = _ref.options,\n      _ref$value = _ref.value,\n      value = _ref$value === void 0 ? [] : _ref$value,\n      filterKey = _ref.filterKey,\n      onChange = _ref.onChange,\n      _ref$menuTitle = _ref.menuTitle,\n      menuTitle = _ref$menuTitle === void 0 ? '按状态筛选' : _ref$menuTitle;\n  var enabled = value.length > 0;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_21__.Menu, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_21__.MenuButton, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('table-filter', {\n          'filter-active': enabled\n        }),\n        children: [\"\\u7B5B\\u9009\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"i\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('fa', 'space-left', enabled ? 'fa-check' : 'fa-filter'),\n          \"aria-hidden\": \"true\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_21__.MenuPopover, {\n        className: \"dropdown-menu\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n          className: \"tableMenu\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n            className: \"menuHeader\",\n            children: menuTitle\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n            className: \"menuContent\",\n            children: options.map(function (option, index) {\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n                className: \"md-checkbox\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"input\", {\n                  id: \"filter_\".concat(filterKey, \"_\").concat(index),\n                  type: \"checkbox\",\n                  checked: value.includes(option),\n                  onChange: function onChange() {\n                    return handleChange(option);\n                  }\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"label\", {\n                  htmlFor: \"filter_\".concat(filterKey, \"_\").concat(index),\n                  children: option\n                })]\n              }, index);\n            })\n          })]\n        })\n      })]\n    })\n  });\n\n  function handleChange(option) {\n    if (value.includes(option)) {\n      onChange(value.filter(function (o) {\n        return o !== option;\n      }));\n      return;\n    }\n\n    onChange([].concat(_toConsumableArray(value), [option]));\n  }\n}\nfunction filterHOC(menuTitle) {\n  return function Filter(_ref2) {\n    var _ref2$column = _ref2.column,\n        filterValue = _ref2$column.filterValue,\n        setFilter = _ref2$column.setFilter,\n        preFilteredRows = _ref2$column.preFilteredRows,\n        id = _ref2$column.id;\n    var options = (0,react__WEBPACK_IMPORTED_MODULE_19__.useMemo)(function () {\n      var options = new Set();\n      preFilteredRows.forEach(function (row) {\n        options.add(row.values[id]);\n      });\n      return Array.from(options);\n    }, [id, preFilteredRows]);\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(MultipleSelectionFilter, {\n      options: options,\n      filterKey: id,\n      value: filterValue,\n      onChange: setFilter,\n      menuTitle: menuTitle\n    });\n  };\n}//# sourceURL=webpack-internal:///33513\n");

}),

1301:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FilterSearchBar\": function() { return /* binding */ FilterSearchBar; },\n/* harmony export */   \"useSearchBarState\": function() { return /* binding */ useSearchBarState; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-feather */ 7252);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction FilterSearchBar(_ref) {\n  var value = _ref.value,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '搜索...' : _ref$placeholder,\n      onChange = _ref.onChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n    className: \"searchBar items-center flex h-[34px]\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      className: \"searchIcon feather\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"input\", {\n      type: \"text\",\n      className: \"searchInput\",\n      value: value,\n      onChange: function (_onChange) {\n        function onChange(_x) {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function (e) {\n        return onChange(e.target.value);\n      }),\n      placeholder: placeholder,\n      \"data-cy\": \"home-environmentSearch\"\n    })]\n  });\n}\nfunction useSearchBarState(key) {\n  var filterKey = keyBuilder(key);\n\n  var _useLocalStorage = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_12__.useLocalStorage)(filterKey, '', sessionStorage),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),\n      value = _useLocalStorage2[0],\n      setValue = _useLocalStorage2[1];\n\n  return [value, setValue];\n\n  function keyBuilder(key) {\n    return \"datatable_text_filter_\".concat(key);\n  }\n}//# sourceURL=webpack-internal:///1301\n");

}),

96394:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InnerDatatable\": function() { return /* binding */ InnerDatatable; }\n/* harmony export */ });\n/* harmony import */ var _InnerDatatable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InnerDatatable.css */ 40062);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction InnerDatatable(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"inner-datatable\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///96394\n");

}),

94020:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildNameColumn\": function() { return /* binding */ buildNameColumn; }\n/* harmony export */ });\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction buildNameColumn(nameKey, idKey, path) {\n  var name = {\n    Header: '名称',\n    accessor: function accessor(row) {\n      return row[nameKey];\n    },\n    id: 'name',\n    Cell: NameCell,\n    disableFilters: true,\n    Filter: function Filter() {\n      return null;\n    },\n    canHide: false,\n    sortType: 'string'\n  };\n  return name;\n\n  function NameCell(_ref) {\n    var name = _ref.value,\n        row = _ref.row;\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_0__.Link, {\n      to: path,\n      params: {\n        id: row.original[idKey]\n      },\n      title: name,\n      children: name\n    });\n  }\n}//# sourceURL=webpack-internal:///94020\n");

}),

7763:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"QuickActionsSettings\": function() { return /* binding */ QuickActionsSettings; },\n/* harmony export */   \"buildAction\": function() { return /* binding */ buildAction; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _useZustandTableSettings__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./useZustandTableSettings */ 96276);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction QuickActionsSettings(_ref) {\n  var actions = _ref.actions;\n\n  var _useTableSettings = (0,_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_17__.useTableSettings)(),\n      settings = _useTableSettings.settings;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.Fragment, {\n    children: actions.map(function (_ref2) {\n      var id = _ref2.id,\n          label = _ref2.label;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_16__.Checkbox, {\n        label: label,\n        id: \"quick-actions-\".concat(id),\n        checked: !settings.hiddenQuickActions.includes(id),\n        onChange: function onChange(e) {\n          return toggleAction(id, e.target.checked);\n        }\n      }, id);\n    })\n  });\n\n  function toggleAction(key, visible) {\n    if (!visible) {\n      settings.setHiddenQuickActions([].concat(_toConsumableArray(settings.hiddenQuickActions), [key]));\n    } else {\n      settings.setHiddenQuickActions(settings.hiddenQuickActions.filter(function (action) {\n        return action !== key;\n      }));\n    }\n  }\n}\nfunction buildAction(id, label) {\n  return {\n    id: id,\n    label: label\n  };\n}//# sourceURL=webpack-internal:///7763\n");

}),

9924:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createRowContext\": function() { return /* binding */ createRowContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction createRowContext() {\n  var Context = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\n  Context.displayName = 'RowContext';\n  return {\n    RowProvider: RowProvider,\n    useRowContext: useRowContext\n  };\n\n  function RowProvider(_ref) {\n    var children = _ref.children,\n        context = _ref.context;\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, {\n      value: context,\n      children: children\n    });\n  }\n\n  function useRowContext() {\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n\n    if (!context) {\n      throw new Error('should be nested under RowProvider');\n    }\n\n    return context;\n  }\n}//# sourceURL=webpack-internal:///9924\n");

}),

1808:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SearchBar\": function() { return /* binding */ SearchBar; },\n/* harmony export */   \"useSearchBarState\": function() { return /* binding */ useSearchBarState; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/debounce */ 60352);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 7252);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction SearchBar(_ref) {\n  var value = _ref.value,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '搜索...' : _ref$placeholder,\n      onChange = _ref.onChange,\n      dataCy = _ref['data-cy'];\n\n  var _useDebounce = useDebounce(value, onChange),\n      _useDebounce2 = _slicedToArray(_useDebounce, 2),\n      searchValue = _useDebounce2[0],\n      setSearchValue = _useDebounce2[1];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\"div\", {\n    className: \"searchBar items-center flex min-w-[90px]\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n      className: \"searchIcon feather shrink-0\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"input\", {\n      type: \"text\",\n      className: \"searchInput\",\n      value: searchValue,\n      onChange: function onChange(e) {\n        return setSearchValue(e.target.value);\n      },\n      placeholder: placeholder,\n      \"data-cy\": dataCy\n    })]\n  });\n}\n\nfunction useDebounce(defaultValue, onChange) {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(defaultValue),\n      _useState2 = _slicedToArray(_useState, 2),\n      searchValue = _useState2[0],\n      setSearchValue = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_12__.useEffect)(function () {\n    setSearchValue(defaultValue);\n  }, [defaultValue]);\n  var onChangeDebounces = (0,react__WEBPACK_IMPORTED_MODULE_12__.useMemo)(function () {\n    return lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default()(onChange, 300);\n  }, [onChange]);\n  return [searchValue, handleChange];\n\n  function handleChange(value) {\n    setSearchValue(value);\n    onChangeDebounces(value);\n  }\n}\n\nfunction useSearchBarState(key) {\n  var filterKey = keyBuilder(key);\n\n  var _useLocalStorage = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_13__.useLocalStorage)(filterKey, '', sessionStorage),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),\n      value = _useLocalStorage2[0],\n      setValue = _useLocalStorage2[1];\n\n  return [value, setValue];\n\n  function keyBuilder(key) {\n    return \"datatable_text_filter_\".concat(key);\n  }\n}//# sourceURL=webpack-internal:///1808\n");

}),

38276:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SelectedRowsCount\": function() { return /* binding */ SelectedRowsCount; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\nfunction SelectedRowsCount(_ref) {\n  var value = _ref.value;\n  return value !== 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", {\n    className: \"infoBar\",\n    children: [\"\\u9009\\u62E9\\u4E86 \", value, \" \\u4E2A\\u9879\\u76EE\"]\n  }) : null;\n}//# sourceURL=webpack-internal:///38276\n");

}),

46785:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SortbySelector\": function() { return /* binding */ SortbySelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var _SortbySelector_module_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./SortbySelector.module.css */ 2960);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction SortbySelector(_ref) {\n  var filterOptions = _ref.filterOptions,\n      _onChange = _ref.onChange,\n      onDescending = _ref.onDescending,\n      placeHolder = _ref.placeHolder,\n      sortByDescending = _ref.sortByDescending,\n      sortByButton = _ref.sortByButton,\n      value = _ref.value;\n  var upIcon = 'fa fa-sort-alpha-up';\n  var downIcon = 'fa fa-sort-alpha-down';\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(downIcon),\n      _useState2 = _slicedToArray(_useState, 2),\n      iconStyle = _useState2[0],\n      setIconStyle = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_11__.useEffect)(function () {\n    if (sortByDescending) {\n      setIconStyle(upIcon);\n    } else {\n      setIconStyle(downIcon);\n    }\n  }, [sortByDescending]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\"div\", {\n    className: _SortbySelector_module_css__WEBPACK_IMPORTED_MODULE_13__[\"default\"].sortByContainer,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n      className: _SortbySelector_module_css__WEBPACK_IMPORTED_MODULE_13__[\"default\"].sortByElement,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_12__.Select, {\n        placeholder: placeHolder,\n        options: filterOptions,\n        onChange: function onChange(option) {\n          return _onChange(option);\n        },\n        isClearable: true,\n        value: value\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n      className: _SortbySelector_module_css__WEBPACK_IMPORTED_MODULE_13__[\"default\"].sortByElement,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"button\", {\n        className: _SortbySelector_module_css__WEBPACK_IMPORTED_MODULE_13__[\"default\"].sortButton,\n        type: \"button\",\n        disabled: !sortByButton,\n        onClick: function onClick(e) {\n          e.preventDefault();\n          onDescending();\n        },\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"i\", {\n          className: iconStyle\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///46785\n");

}),

63756:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Table\": function() { return /* binding */ Table; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _TableContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TableContainer */ 27109);\n/* harmony import */ var _TableActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableActions */ 25610);\n/* harmony import */ var _TableTitleActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TableTitleActions */ 88952);\n/* harmony import */ var _TableContent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TableContent */ 85813);\n/* harmony import */ var _TableHeaderCell__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TableHeaderCell */ 12249);\n/* harmony import */ var _TableSettingsMenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TableSettingsMenu */ 69931);\n/* harmony import */ var _TableTitle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TableTitle */ 1645);\n/* harmony import */ var _TableHeaderRow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TableHeaderRow */ 85881);\n/* harmony import */ var _TableRow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./TableRow */ 48759);\n/* harmony import */ var _TableFooter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TableFooter */ 33417);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction MainComponent(_ref) {\n  var children = _ref.children,\n      className = _ref.className,\n      role = _ref.role,\n      style = _ref.style;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n    className: \"table-responsive\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"table\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('table table-hover table-filters nowrap-cells', className),\n      role: role,\n      style: style,\n      children: children\n    })\n  });\n}\n\nvar Table = MainComponent;\nTable.Actions = _TableActions__WEBPACK_IMPORTED_MODULE_2__.TableActions;\nTable.TitleActions = _TableTitleActions__WEBPACK_IMPORTED_MODULE_3__.TableTitleActions;\nTable.Container = _TableContainer__WEBPACK_IMPORTED_MODULE_1__.TableContainer;\nTable.HeaderCell = _TableHeaderCell__WEBPACK_IMPORTED_MODULE_5__.TableHeaderCell;\nTable.SettingsMenu = _TableSettingsMenu__WEBPACK_IMPORTED_MODULE_6__.TableSettingsMenu;\nTable.Title = _TableTitle__WEBPACK_IMPORTED_MODULE_7__.TableTitle;\nTable.Row = _TableRow__WEBPACK_IMPORTED_MODULE_9__.TableRow;\nTable.HeaderRow = _TableHeaderRow__WEBPACK_IMPORTED_MODULE_8__.TableHeaderRow;\nTable.Content = _TableContent__WEBPACK_IMPORTED_MODULE_4__.TableContent;\nTable.Footer = _TableFooter__WEBPACK_IMPORTED_MODULE_10__.TableFooter;//# sourceURL=webpack-internal:///63756\n");

}),

25610:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableActions\": function() { return /* binding */ TableActions; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction TableActions(_ref) {\n  var children = _ref.children,\n      className = _ref.className;\n\n  if (react__WEBPACK_IMPORTED_MODULE_1__.Children.count(children) === 0) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('actionBar', className),\n    children: children\n  });\n}//# sourceURL=webpack-internal:///25610\n");

}),

27109:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableContainer\": function() { return /* binding */ TableContainer; }\n/* harmony export */ });\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction TableContainer(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"datatable\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_0__.Widget, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_0__.WidgetBody, {\n        className: \"no-padding\",\n        children: children\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///27109\n");

}),

85813:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableContent\": function() { return /* binding */ TableContent; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.max-safe-integer.js */ 43119);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction TableContent(_ref) {\n  var _ref$isLoading = _ref.isLoading,\n      isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,\n      rows = _ref.rows,\n      _ref$emptyContent = _ref.emptyContent,\n      emptyContent = _ref$emptyContent === void 0 ? '没有可用项目' : _ref$emptyContent,\n      prepareRow = _ref.prepareRow,\n      renderRow = _ref.renderRow;\n\n  if (isLoading) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TableContentOneColumn, {\n      children: \"\\u52A0\\u8F7D\\u4E2D...\"\n    });\n  }\n\n  if (!rows.length) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TableContentOneColumn, {\n      children: emptyContent\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n    children: rows.map(function (row) {\n      prepareRow(row);\n\n      var _row$getRowProps = row.getRowProps(),\n          key = _row$getRowProps.key,\n          className = _row$getRowProps.className,\n          role = _row$getRowProps.role,\n          style = _row$getRowProps.style;\n\n      return renderRow(row, {\n        key: key,\n        className: className,\n        role: role,\n        style: style\n      });\n    })\n  });\n}\n\nfunction TableContentOneColumn(_ref2) {\n  var children = _ref2.children;\n  // using MAX_SAFE_INTEGER to make sure the single column will be the size of the table\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"tr\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"td\", {\n      colSpan: Number.MAX_SAFE_INTEGER,\n      className: \"text-center text-muted\",\n      children: children\n    })\n  });\n}//# sourceURL=webpack-internal:///85813\n");

}),

33417:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableFooter\": function() { return /* binding */ TableFooter; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\nfunction TableFooter(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"footer\", {\n    className: \"footer\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///33417\n");

}),

12249:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableHeaderCell\": function() { return /* binding */ TableHeaderCell; },\n/* harmony export */   \"TableColumnHeaderAngular\": function() { return /* binding */ TableColumnHeaderAngular; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _TableHeaderSortIcons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TableHeaderSortIcons */ 36261);\n/* harmony import */ var _TableHeaderCell_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableHeaderCell.module.css */ 33145);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction TableHeaderCell(_ref) {\n  var _ref$headerProps = _ref.headerProps,\n      className = _ref$headerProps.className,\n      role = _ref$headerProps.role,\n      style = _ref$headerProps.style,\n      canSort = _ref.canSort,\n      render = _ref.render,\n      onSortClick = _ref.onSortClick,\n      isSorted = _ref.isSorted,\n      _ref$isSortedDesc = _ref.isSortedDesc,\n      isSortedDesc = _ref$isSortedDesc === void 0 ? true : _ref$isSortedDesc,\n      canFilter = _ref.canFilter,\n      renderFilter = _ref.renderFilter;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"th\", {\n    role: role,\n    style: style,\n    className: className,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      className: \"flex flex-row flex-nowrap h-full items-center gap-1\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(SortWrapper, {\n        canSort: canSort,\n        onClick: onSortClick,\n        isSorted: isSorted,\n        isSortedDesc: isSortedDesc,\n        children: render()\n      }), canFilter ? renderFilter() : null]\n    })\n  });\n}\n\nfunction SortWrapper(_ref2) {\n  var canSort = _ref2.canSort,\n      children = _ref2.children,\n      _ref2$onClick = _ref2.onClick,\n      _onClick = _ref2$onClick === void 0 ? function () {} : _ref2$onClick,\n      isSorted = _ref2.isSorted,\n      _ref2$isSortedDesc = _ref2.isSortedDesc,\n      isSortedDesc = _ref2$isSortedDesc === void 0 ? true : _ref2$isSortedDesc;\n\n  if (!canSort) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n      children: children\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"button\", {\n    type: \"button\",\n    onClick: function onClick() {\n      return _onClick(!isSortedDesc);\n    },\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('!bg-transparent w-full h-full !ml-0 !px-0 border-none focus:border-none', _TableHeaderCell_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sortable, isSorted && _TableHeaderCell_module_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sortingActive),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      className: \"flex flex-row justify-start items-center w-full h-full\",\n      children: [children, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_TableHeaderSortIcons__WEBPACK_IMPORTED_MODULE_1__.TableHeaderSortIcons, {\n        sorted: isSorted,\n        descending: isSorted && !!isSortedDesc\n      })]\n    })\n  });\n}\n\nfunction TableColumnHeaderAngular(_ref3) {\n  var canSort = _ref3.canSort,\n      isSorted = _ref3.isSorted,\n      colTitle = _ref3.colTitle,\n      _ref3$isSortedDesc = _ref3.isSortedDesc,\n      isSortedDesc = _ref3$isSortedDesc === void 0 ? true : _ref3$isSortedDesc;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: \"flex flex-row flex-nowrap h-full\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(SortWrapper, {\n      canSort: canSort,\n      isSorted: !!isSorted,\n      isSortedDesc: isSortedDesc,\n      children: colTitle\n    })\n  });\n}//# sourceURL=webpack-internal:///12249\n");

}),

85881:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableHeaderRow\": function() { return /* binding */ TableHeaderRow; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _TableHeaderCell__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TableHeaderCell */ 12249);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction TableHeaderRow(_ref) {\n  var headers = _ref.headers,\n      onSortChange = _ref.onSortChange,\n      className = _ref.className,\n      role = _ref.role,\n      style = _ref.style;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"tr\", {\n    className: className,\n    role: role,\n    style: style,\n    children: headers.map(function (column) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_TableHeaderCell__WEBPACK_IMPORTED_MODULE_8__.TableHeaderCell, {\n        headerProps: _objectSpread({}, column.getHeaderProps({\n          className: column.className,\n          style: {\n            width: column.disableResizing ? column.width : ''\n          }\n        })),\n        canSort: column.canSort,\n        onSortClick: function onSortClick(desc) {\n          column.toggleSortBy(desc);\n\n          if (onSortChange) {\n            onSortChange(column.id, desc);\n          }\n        },\n        isSorted: column.isSorted,\n        isSortedDesc: column.isSortedDesc,\n        render: function render() {\n          return column.render('Header');\n        },\n        canFilter: !column.disableFilters,\n        renderFilter: function renderFilter() {\n          return column.render('Filter');\n        }\n      }, column.id);\n    })\n  });\n}//# sourceURL=webpack-internal:///85881\n");

}),

36261:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableHeaderSortIcons\": function() { return /* binding */ TableHeaderSortIcons; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _sort_arrow_down_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sort-arrow-down.svg?c */ 88419);\n/* harmony import */ var _sort_arrow_up_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sort-arrow-up.svg?c */ 54291);\n/* harmony import */ var _TableHeaderSortIcons_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TableHeaderSortIcons.module.css */ 8008);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction TableHeaderSortIcons(_ref) {\n  var sorted = _ref.sorted,\n      descending = _ref.descending;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: \"flex flex-row no-wrap w-min-max\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_sort_arrow_down_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('space-left', sorted && !descending && _TableHeaderSortIcons_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].activeSortIcon, _TableHeaderSortIcons_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sortIcon),\n      \"aria-hidden\": \"true\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_sort_arrow_up_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('-ml-1', // shift closer to SortDownIcon to match the mockup\n      sorted && descending && _TableHeaderSortIcons_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].activeSortIcon, _TableHeaderSortIcons_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sortIcon),\n      \"aria-hidden\": \"true\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///36261\n");

}),

48759:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableRow\": function() { return /* binding */ TableRow; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction TableRow(_ref) {\n  var cells = _ref.cells,\n      className = _ref.className,\n      role = _ref.role,\n      style = _ref.style;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"tr\", {\n    className: className,\n    role: role,\n    style: style,\n    children: cells.map(function (cell) {\n      var cellProps = cell.getCellProps({\n        className: cell.className\n      });\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"td\", {\n        className: cellProps.className,\n        role: cellProps.role,\n        style: cellProps.style,\n        children: cell.render('Cell')\n      }, cellProps.key);\n    })\n  });\n}//# sourceURL=webpack-internal:///48759\n");

}),

69931:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableSettingsMenu\": function() { return /* binding */ TableSettingsMenu; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _reach_menu_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @reach/menu-button */ 78699);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 93671);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction TableSettingsMenu(_ref) {\n  var quickActions = _ref.quickActions,\n      _children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_2__.Menu, {\n    className: \"setting\",\n    children: function children(_ref2) {\n      var isExpanded = _ref2.isExpanded;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_2__.MenuButton, {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('table-setting-menu-btn', {\n            'setting-active': isExpanded\n          }),\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n            size: \"13\",\n            className: \"space-right\",\n            strokeWidth: \"3px\",\n            \"aria-hidden\": \"true\",\n            \"aria-label\": \"Settings\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_reach_menu_button__WEBPACK_IMPORTED_MODULE_2__.MenuList, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n            className: \"tableMenu\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n              className: \"menuHeader\",\n              children: \"\\u8868\\u683C\\u8BBE\\u7F6E\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n              className: \"menuContent\",\n              children: _children\n            }), quickActions && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n                className: \"menuHeader\",\n                children: \"\\u5FEB\\u901F\\u64CD\\u4F5C\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n                className: \"menuContent\",\n                children: quickActions\n              })]\n            })]\n          })\n        })]\n      });\n    }\n  });\n}//# sourceURL=webpack-internal:///69931\n");

}),

96082:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableSettingsMenuAutoRefresh\": function() { return /* binding */ TableSettingsMenuAutoRefresh; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _TableSettingsMenuAutoRefresh_module_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./TableSettingsMenuAutoRefresh.module.css */ 68540);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nfunction TableSettingsMenuAutoRefresh(_ref) {\n  var onChange = _ref.onChange,\n      value = _ref.value;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_14__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isCheckVisible = _useState2[0],\n      setIsCheckVisible = _useState2[1];\n\n  var isEnabled = value > 0;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_15__.Checkbox, {\n      id: \"settings-auto-refresh\",\n      label: \"\\u81EA\\u52A8\\u5237\\u65B0\",\n      checked: isEnabled,\n      onChange: function (_onChange) {\n        function onChange(_x) {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function (e) {\n        return onChange(e.target.checked ? 10 : 0);\n      })\n    }), isEnabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"label\", {\n        htmlFor: \"settings_refresh_rate\",\n        children: \"Refresh rate\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(\"select\", {\n        id: \"settings_refresh_rate\",\n        className: \"small-select\",\n        value: value,\n        onChange: function onChange(e) {\n          return handleChange(e.target.value);\n        },\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"option\", {\n          value: 10,\n          children: \"10s\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"option\", {\n          value: 30,\n          children: \"30s\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"option\", {\n          value: 60,\n          children: \"1min\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"option\", {\n          value: 120,\n          children: \"2min\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"option\", {\n          value: 300,\n          children: \"5min\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"span\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(isCheckVisible ? _TableSettingsMenuAutoRefresh_module_css__WEBPACK_IMPORTED_MODULE_16__[\"default\"].alertVisible : _TableSettingsMenuAutoRefresh_module_css__WEBPACK_IMPORTED_MODULE_16__[\"default\"].alertHidden, _TableSettingsMenuAutoRefresh_module_css__WEBPACK_IMPORTED_MODULE_16__[\"default\"].check),\n        onTransitionEnd: function onTransitionEnd() {\n          return setIsCheckVisible(false);\n        },\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"i\", {\n          id: \"refreshRateChange\",\n          className: \"fa fa-check green-icon\",\n          \"aria-hidden\": \"true\",\n          style: {\n            marginTop: '7px'\n          }\n        })\n      })]\n    })]\n  });\n\n  function handleChange(value) {\n    onChange(Number(value));\n    setIsCheckVisible(true);\n  }\n}//# sourceURL=webpack-internal:///96082\n");

}),

1645:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableTitle\": function() { return /* binding */ TableTitle; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction TableTitle(_ref) {\n  var icon = _ref.icon,\n      featherIcon = _ref.featherIcon,\n      label = _ref.label,\n      children = _ref.children,\n      description = _ref.description;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n    className: \"toolBar flex-col\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n      className: \"flex gap-1 p-0 w-full items-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n        className: \"toolBarTitle\",\n        children: [icon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n          className: \"widget-icon\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_2__.Icon, {\n            icon: icon,\n            feather: featherIcon,\n            className: \"space-right feather\"\n          })\n        }), label]\n      }), children]\n    }), description && description]\n  });\n}//# sourceURL=webpack-internal:///1645\n");

}),

88952:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TableTitleActions\": function() { return /* binding */ TableTitleActions; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction TableTitleActions(_ref) {\n  var children = _ref.children;\n\n  if (react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) === 0) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"settings\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///88952\n");

}),

35138:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"multiple\": function() { return /* binding */ multiple; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\nfunction multiple(rows, columnIds) {\n  var filterValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  if (filterValue.length === 0 || columnIds.length === 0) {\n    return rows;\n  }\n\n  return rows.filter(function (row) {\n    var value = row.values[columnIds[0]];\n    return filterValue.includes(value);\n  });\n}//# sourceURL=webpack-internal:///35138\n");

}),

12047:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Datatable\": function() { return /* reexport safe */ _Datatable__WEBPACK_IMPORTED_MODULE_0__.Datatable; },\n/* harmony export */   \"Table\": function() { return /* reexport safe */ _Table__WEBPACK_IMPORTED_MODULE_1__.Table; },\n/* harmony export */   \"TableActions\": function() { return /* reexport safe */ _TableActions__WEBPACK_IMPORTED_MODULE_2__.TableActions; },\n/* harmony export */   \"TableTitleActions\": function() { return /* reexport safe */ _TableTitleActions__WEBPACK_IMPORTED_MODULE_3__.TableTitleActions; },\n/* harmony export */   \"TableHeaderCell\": function() { return /* reexport safe */ _TableHeaderCell__WEBPACK_IMPORTED_MODULE_4__.TableHeaderCell; },\n/* harmony export */   \"TableSettingsMenu\": function() { return /* reexport safe */ _TableSettingsMenu__WEBPACK_IMPORTED_MODULE_5__.TableSettingsMenu; },\n/* harmony export */   \"TableTitle\": function() { return /* reexport safe */ _TableTitle__WEBPACK_IMPORTED_MODULE_6__.TableTitle; },\n/* harmony export */   \"TableContainer\": function() { return /* reexport safe */ _TableContainer__WEBPACK_IMPORTED_MODULE_7__.TableContainer; },\n/* harmony export */   \"TableHeaderRow\": function() { return /* reexport safe */ _TableHeaderRow__WEBPACK_IMPORTED_MODULE_8__.TableHeaderRow; },\n/* harmony export */   \"TableRow\": function() { return /* reexport safe */ _TableRow__WEBPACK_IMPORTED_MODULE_9__.TableRow; },\n/* harmony export */   \"TableContent\": function() { return /* reexport safe */ _TableContent__WEBPACK_IMPORTED_MODULE_10__.TableContent; },\n/* harmony export */   \"TableFooter\": function() { return /* reexport safe */ _TableFooter__WEBPACK_IMPORTED_MODULE_11__.TableFooter; }\n/* harmony export */ });\n/* harmony import */ var _Datatable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Datatable */ 34544);\n/* harmony import */ var _Table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Table */ 63756);\n/* harmony import */ var _TableActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableActions */ 25610);\n/* harmony import */ var _TableTitleActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TableTitleActions */ 88952);\n/* harmony import */ var _TableHeaderCell__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TableHeaderCell */ 12249);\n/* harmony import */ var _TableSettingsMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TableSettingsMenu */ 69931);\n/* harmony import */ var _TableTitle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TableTitle */ 1645);\n/* harmony import */ var _TableContainer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TableContainer */ 27109);\n/* harmony import */ var _TableHeaderRow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TableHeaderRow */ 85881);\n/* harmony import */ var _TableRow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./TableRow */ 48759);\n/* harmony import */ var _TableContent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TableContent */ 85813);\n/* harmony import */ var _TableFooter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TableFooter */ 33417);\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack-internal:///12047\n");

}),

16579:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"paginationSettings\": function() { return /* binding */ paginationSettings; },\n/* harmony export */   \"sortableSettings\": function() { return /* binding */ sortableSettings; },\n/* harmony export */   \"hiddenColumnsSettings\": function() { return /* binding */ hiddenColumnsSettings; },\n/* harmony export */   \"refreshableSettings\": function() { return /* binding */ refreshableSettings; }\n/* harmony export */ });\nfunction paginationSettings(set) {\n  return {\n    pageSize: 10,\n    setPageSize: function setPageSize(pageSize) {\n      return set({\n        pageSize: pageSize\n      });\n    }\n  };\n}\nfunction sortableSettings(set) {\n  var initialSortBy = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'name';\n  var desc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return {\n    sortBy: {\n      id: initialSortBy,\n      desc: desc\n    },\n    setSortBy: function setSortBy(id, desc) {\n      return set({\n        sortBy: {\n          id: id,\n          desc: desc\n        }\n      });\n    }\n  };\n}\nfunction hiddenColumnsSettings(set) {\n  return {\n    hiddenColumns: [],\n    setHiddenColumns: function setHiddenColumns(hiddenColumns) {\n      return set({\n        hiddenColumns: hiddenColumns\n      });\n    }\n  };\n}\nfunction refreshableSettings(set) {\n  return {\n    autoRefreshRate: 0,\n    setAutoRefreshRate: function setAutoRefreshRate(autoRefreshRate) {\n      return set({\n        autoRefreshRate: autoRefreshRate\n      });\n    }\n  };\n}//# sourceURL=webpack-internal:///16579\n");

}),

89996:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useRowSelect\": function() { return /* binding */ useRowSelect; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ 19992);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_9__);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n/* eslint no-param-reassign: [\"error\", { \"props\": false }] */\n\n\nvar pluginName = 'useRowSelect'; // Actions\n\nreact_table__WEBPACK_IMPORTED_MODULE_9__.actions.resetSelectedRows = 'resetSelectedRows';\nreact_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllRowsSelected = 'toggleAllRowsSelected';\nreact_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleRowSelected = 'toggleRowSelected';\nreact_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected';\nfunction useRowSelect(hooks) {\n  hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps];\n  hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps];\n  hooks.getToggleAllPageRowsSelectedProps = [defaultGetToggleAllPageRowsSelectedProps];\n  hooks.stateReducers.push(reducer);\n  hooks.useInstance.push(useInstance);\n  hooks.prepareRow.push(prepareRow);\n}\nuseRowSelect.pluginName = pluginName;\n\nfunction defaultGetToggleRowSelectedProps(props, _ref) {\n  var instance = _ref.instance,\n      row = _ref.row;\n  var _instance$manualRowSe = instance.manualRowSelectedKey,\n      manualRowSelectedKey = _instance$manualRowSe === void 0 ? 'isSelected' : _instance$manualRowSe,\n      _instance$isRowSelect = instance.isRowSelectable,\n      isRowSelectable = _instance$isRowSelect === void 0 ? defaultIsRowSelectable : _instance$isRowSelect;\n  var checked = false;\n\n  if (row.original && row.original[manualRowSelectedKey]) {\n    checked = true;\n  } else {\n    checked = row.isSelected;\n  }\n\n  return [props, {\n    onChange: function onChange(e) {\n      row.toggleRowSelected(e.target.checked);\n    },\n    style: {\n      cursor: 'pointer'\n    },\n    checked: checked,\n    title: 'Toggle Row Selected',\n    indeterminate: row.isSomeSelected,\n    disabled: !isRowSelectable(row)\n  }];\n}\n\nfunction defaultGetToggleAllRowsSelectedProps(props, _ref2) {\n  var instance = _ref2.instance;\n  return [props, {\n    onChange: function onChange(e) {\n      instance.toggleAllRowsSelected(e.target.checked);\n    },\n    style: {\n      cursor: 'pointer'\n    },\n    checked: instance.isAllRowsSelected,\n    title: 'Toggle All Rows Selected',\n    indeterminate: Boolean(!instance.isAllRowsSelected && Object.keys(instance.state.selectedRowIds).length)\n  }];\n}\n\nfunction defaultGetToggleAllPageRowsSelectedProps(props, _ref3) {\n  var instance = _ref3.instance;\n  return [props, {\n    onChange: function onChange(e) {\n      instance.toggleAllPageRowsSelected(e.target.checked);\n    },\n    style: {\n      cursor: 'pointer'\n    },\n    checked: instance.isAllPageRowsSelected,\n    title: '切换选中的所有当前页行数',\n    indeterminate: Boolean(!instance.isAllPageRowsSelected && instance.page.some(function (_ref4) {\n      var id = _ref4.id;\n      return instance.state.selectedRowIds[id];\n    }))\n  }];\n}\n\nfunction reducer(state, action, _previousState, instance) {\n  if (action.type === react_table__WEBPACK_IMPORTED_MODULE_9__.actions.init) {\n    return _objectSpread(_objectSpread({}, state), {}, {\n      selectedRowIds: {}\n    });\n  }\n\n  if (action.type === react_table__WEBPACK_IMPORTED_MODULE_9__.actions.resetSelectedRows) {\n    return _objectSpread(_objectSpread({}, state), {}, {\n      selectedRowIds: (instance === null || instance === void 0 ? void 0 : instance.initialState.selectedRowIds) || {}\n    });\n  }\n\n  if (action.type === react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllRowsSelected) {\n    var setSelected = action.value;\n\n    if (!instance) {\n      return state;\n    }\n\n    var isAllRowsSelected = instance.isAllRowsSelected,\n        rowsById = instance.rowsById,\n        _instance$nonGroupedR = instance.nonGroupedRowsById,\n        nonGroupedRowsById = _instance$nonGroupedR === void 0 ? rowsById : _instance$nonGroupedR,\n        _instance$isRowSelect2 = instance.isRowSelectable,\n        _isRowSelectable = _instance$isRowSelect2 === void 0 ? defaultIsRowSelectable : _instance$isRowSelect2;\n\n    var selectAll = typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected; // Only remove/add the rows that are visible on the screen\n    //  Leave all the other rows that are selected alone.\n\n    var selectedRowIds = _objectSpread({}, state.selectedRowIds);\n\n    Object.keys(nonGroupedRowsById).forEach(function (rowId) {\n      if (selectAll) {\n        var _row = rowsById[rowId];\n\n        if (_isRowSelectable(_row)) {\n          selectedRowIds[rowId] = true;\n        }\n      } else {\n        delete selectedRowIds[rowId];\n      }\n    });\n    return _objectSpread(_objectSpread({}, state), {}, {\n      selectedRowIds: selectedRowIds\n    });\n  }\n\n  if (action.type === react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleRowSelected) {\n    // eslint-disable-next-line no-inner-declarations\n    var handleRowById = function handleRowById(id) {\n      var row = _rowsById[id];\n\n      if (!_isRowSelectable2(row)) {\n        return;\n      }\n\n      if (!row.isGrouped) {\n        if (shouldExist) {\n          newSelectedRowIds[id] = true;\n        } else {\n          delete newSelectedRowIds[id];\n        }\n      }\n\n      if (selectSubRows && _getSubRows(row)) {\n        _getSubRows(row).forEach(function (row) {\n          return handleRowById(row.id);\n        });\n      }\n    };\n\n    if (!instance) {\n      return state;\n    }\n\n    var id = action.id,\n        _setSelected = action.value;\n\n    var _rowsById = instance.rowsById,\n        _instance$selectSubRo = instance.selectSubRows,\n        selectSubRows = _instance$selectSubRo === void 0 ? true : _instance$selectSubRo,\n        _getSubRows = instance.getSubRows,\n        _instance$isRowSelect3 = instance.isRowSelectable,\n        _isRowSelectable2 = _instance$isRowSelect3 === void 0 ? defaultIsRowSelectable : _instance$isRowSelect3;\n\n    var isSelected = state.selectedRowIds[id];\n    var shouldExist = typeof _setSelected !== 'undefined' ? _setSelected : !isSelected;\n\n    if (isSelected === shouldExist) {\n      return state;\n    }\n\n    var newSelectedRowIds = _objectSpread({}, state.selectedRowIds);\n\n    handleRowById(id);\n    return _objectSpread(_objectSpread({}, state), {}, {\n      selectedRowIds: newSelectedRowIds\n    });\n  }\n\n  if (action.type === react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllPageRowsSelected) {\n    // eslint-disable-next-line no-inner-declarations\n    var _handleRowById = function _handleRowById(id) {\n      var row = _rowsById2[id];\n\n      if (!row.isGrouped) {\n        if (_selectAll) {\n          _newSelectedRowIds[id] = true;\n        } else {\n          delete _newSelectedRowIds[id];\n        }\n      }\n\n      if (_selectSubRows && _getSubRows2(row)) {\n        _getSubRows2(row).forEach(function (row) {\n          return _handleRowById(row.id);\n        });\n      }\n    };\n\n    if (!instance) {\n      return state;\n    }\n\n    var _setSelected2 = action.value;\n\n    var page = instance.page,\n        _rowsById2 = instance.rowsById,\n        _instance$selectSubRo2 = instance.selectSubRows,\n        _selectSubRows = _instance$selectSubRo2 === void 0 ? true : _instance$selectSubRo2,\n        isAllPageRowsSelected = instance.isAllPageRowsSelected,\n        _getSubRows2 = instance.getSubRows;\n\n    var _selectAll = typeof _setSelected2 !== 'undefined' ? _setSelected2 : !isAllPageRowsSelected;\n\n    var _newSelectedRowIds = _objectSpread({}, state.selectedRowIds);\n\n    page.forEach(function (row) {\n      return _handleRowById(row.id);\n    });\n    return _objectSpread(_objectSpread({}, state), {}, {\n      selectedRowIds: _newSelectedRowIds\n    });\n  }\n\n  return state;\n}\n\nfunction useInstance(instance) {\n  var data = instance.data,\n      rows = instance.rows,\n      getHooks = instance.getHooks,\n      plugins = instance.plugins,\n      rowsById = instance.rowsById,\n      _instance$nonGroupedR2 = instance.nonGroupedRowsById,\n      nonGroupedRowsById = _instance$nonGroupedR2 === void 0 ? rowsById : _instance$nonGroupedR2,\n      _instance$autoResetSe = instance.autoResetSelectedRows,\n      autoResetSelectedRows = _instance$autoResetSe === void 0 ? true : _instance$autoResetSe,\n      selectedRowIds = instance.state.selectedRowIds,\n      _instance$selectSubRo3 = instance.selectSubRows,\n      selectSubRows = _instance$selectSubRo3 === void 0 ? true : _instance$selectSubRo3,\n      dispatch = instance.dispatch,\n      page = instance.page,\n      getSubRows = instance.getSubRows,\n      _instance$isRowSelect4 = instance.isRowSelectable,\n      isRowSelectable = _instance$isRowSelect4 === void 0 ? defaultIsRowSelectable : _instance$isRowSelect4;\n  (0,react_table__WEBPACK_IMPORTED_MODULE_9__.ensurePluginOrder)(plugins, ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'], 'useRowSelect');\n  var selectedFlatRows = (0,react__WEBPACK_IMPORTED_MODULE_8__.useMemo)(function () {\n    var selectedFlatRows = [];\n    rows.forEach(function (row) {\n      var isSelected = selectSubRows ? getRowIsSelected(row, selectedRowIds, getSubRows) : !!selectedRowIds[row.id];\n      row.isSelected = !!isSelected;\n      row.isSomeSelected = isSelected === null;\n\n      if (isSelected) {\n        selectedFlatRows.push(row);\n      }\n    });\n    return selectedFlatRows;\n  }, [rows, selectSubRows, selectedRowIds, getSubRows]);\n  var isAllRowsSelected = Boolean(Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length);\n  var isAllPageRowsSelected = isAllRowsSelected;\n\n  if (isAllRowsSelected) {\n    if (Object.keys(nonGroupedRowsById).some(function (id) {\n      var row = rowsById[id];\n      return !selectedRowIds[id] && isRowSelectable(row);\n    })) {\n      isAllRowsSelected = false;\n    }\n  }\n\n  if (!isAllRowsSelected) {\n    if (page && page.length && page.some(function (_ref5) {\n      var id = _ref5.id;\n      var row = rowsById[id];\n      return !selectedRowIds[id] && isRowSelectable(row);\n    })) {\n      isAllPageRowsSelected = false;\n    }\n  }\n\n  var getAutoResetSelectedRows = (0,react_table__WEBPACK_IMPORTED_MODULE_9__.useGetLatest)(autoResetSelectedRows);\n  (0,react_table__WEBPACK_IMPORTED_MODULE_9__.useMountedLayoutEffect)(function () {\n    if (getAutoResetSelectedRows()) {\n      dispatch({\n        type: react_table__WEBPACK_IMPORTED_MODULE_9__.actions.resetSelectedRows\n      });\n    }\n  }, [dispatch, data]);\n  var toggleAllRowsSelected = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(function (value) {\n    return dispatch({\n      type: react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllRowsSelected,\n      value: value\n    });\n  }, [dispatch]);\n  var toggleAllPageRowsSelected = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(function (value) {\n    return dispatch({\n      type: react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleAllPageRowsSelected,\n      value: value\n    });\n  }, [dispatch]);\n  var toggleRowSelected = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(function (id, value) {\n    return dispatch({\n      type: react_table__WEBPACK_IMPORTED_MODULE_9__.actions.toggleRowSelected,\n      id: id,\n      value: value\n    });\n  }, [dispatch]);\n  var getInstance = (0,react_table__WEBPACK_IMPORTED_MODULE_9__.useGetLatest)(instance);\n  var getToggleAllRowsSelectedProps = (0,react_table__WEBPACK_IMPORTED_MODULE_9__.makePropGetter)(getHooks().getToggleAllRowsSelectedProps, {\n    instance: getInstance()\n  });\n  var getToggleAllPageRowsSelectedProps = (0,react_table__WEBPACK_IMPORTED_MODULE_9__.makePropGetter)(getHooks().getToggleAllPageRowsSelectedProps, {\n    instance: getInstance()\n  });\n  Object.assign(instance, {\n    selectedFlatRows: selectedFlatRows,\n    isAllRowsSelected: isAllRowsSelected,\n    isAllPageRowsSelected: isAllPageRowsSelected,\n    toggleRowSelected: toggleRowSelected,\n    toggleAllRowsSelected: toggleAllRowsSelected,\n    getToggleAllRowsSelectedProps: getToggleAllRowsSelectedProps,\n    getToggleAllPageRowsSelectedProps: getToggleAllPageRowsSelectedProps,\n    toggleAllPageRowsSelected: toggleAllPageRowsSelected\n  });\n}\n\nfunction prepareRow(row, _ref6) {\n  var instance = _ref6.instance;\n\n  row.toggleRowSelected = function (set) {\n    return instance.toggleRowSelected(row.id, set);\n  };\n\n  row.getToggleRowSelectedProps = (0,react_table__WEBPACK_IMPORTED_MODULE_9__.makePropGetter)(instance.getHooks().getToggleRowSelectedProps, {\n    instance: instance,\n    row: row\n  });\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n  if (selectedRowIds[row.id]) {\n    return true;\n  }\n\n  var subRows = getSubRows(row);\n\n  if (subRows && subRows.length) {\n    var allChildrenSelected = true;\n    var someSelected = false;\n    subRows.forEach(function (subRow) {\n      // Bail out early if we know both of these\n      if (someSelected && !allChildrenSelected) {\n        return;\n      }\n\n      if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n        someSelected = true;\n      } else {\n        allChildrenSelected = false;\n      }\n    });\n\n    if (allChildrenSelected) {\n      return true;\n    }\n\n    return someSelected ? null : false;\n  }\n\n  return false;\n}\n\nfunction defaultIsRowSelectable(row) {\n  return !row.original.disabled;\n}//# sourceURL=webpack-internal:///89996\n");

}),

63613:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useTableSettings\": function() { return /* binding */ useTableSettings; },\n/* harmony export */   \"TableSettingsProvider\": function() { return /* binding */ TableSettingsProvider; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\nvar TableSettingsContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_16__.createContext)(null);\nTableSettingsContext.displayName = 'TableSettingsContext';\nfunction useTableSettings() {\n  var Context = getContextType();\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_16__.useContext)(Context);\n\n  if (context === null) {\n    throw new Error('must be nested under TableSettingsProvider');\n  }\n\n  return context;\n}\nfunction TableSettingsProvider(_ref) {\n  var children = _ref.children,\n      defaults = _ref.defaults,\n      storageKey = _ref.storageKey;\n  var Context = getContextType();\n\n  var _useLocalStorage = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_17__.useLocalStorage)(keyBuilder(storageKey), defaults),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),\n      storage = _useLocalStorage2[0],\n      setStorage = _useLocalStorage2[1];\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_16__.useState)(storage),\n      _useState2 = _slicedToArray(_useState, 2),\n      settings = _useState2[0],\n      setTableSettings = _useState2[1];\n\n  var handleChange = (0,react__WEBPACK_IMPORTED_MODULE_16__.useCallback)(function (mutation) {\n    setTableSettings(function (settings) {\n      var newTableSettings = mutation instanceof Function ? mutation(settings) : _objectSpread(_objectSpread({}, settings), mutation);\n      setStorage(newTableSettings);\n      return newTableSettings;\n    });\n  }, [setStorage]);\n  var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_16__.useMemo)(function () {\n    return {\n      settings: settings,\n      setTableSettings: handleChange\n    };\n  }, [settings, handleChange]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(Context.Provider, {\n    value: contextValue,\n    children: children\n  });\n\n  function keyBuilder(key) {\n    return \"datatable_TableSettings_\".concat(key);\n  }\n}\n\nfunction getContextType() {\n  return TableSettingsContext;\n}//# sourceURL=webpack-internal:///63613\n");

}),

96276:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useTableSettings\": function() { return /* binding */ useTableSettings; },\n/* harmony export */   \"TableSettingsProvider\": function() { return /* binding */ TableSettingsProvider; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar TableSettingsContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\nTableSettingsContext.displayName = 'TableSettingsContext';\nfunction useTableSettings() {\n  var Context = getContextType();\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n\n  if (context === null) {\n    throw new Error('must be nested under TableSettingsProvider');\n  }\n\n  return context;\n}\nfunction TableSettingsProvider(_ref) {\n  var children = _ref.children,\n      settings = _ref.settings;\n  var Context = getContextType();\n  var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return {\n      settings: settings\n    };\n  }, [settings]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, {\n    value: contextValue,\n    children: children\n  });\n}\n\nfunction getContextType() {\n  return TableSettingsContext;\n}//# sourceURL=webpack-internal:///96276\n");

}),

27026:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ButtonSelector\": function() { return /* binding */ ButtonSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _buttons_ButtonGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/buttons/ButtonGroup */ 18917);\n/* harmony import */ var _ButtonSelector_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ButtonSelector.module.css */ 18162);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction ButtonSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      size = _ref.size,\n      options = _ref.options,\n      disabled = _ref.disabled,\n      readOnly = _ref.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_buttons_ButtonGroup__WEBPACK_IMPORTED_MODULE_4__.ButtonGroup, {\n    size: size,\n    className: _ButtonSelector_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].group,\n    children: options.map(function (option) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(OptionItem, {\n        selected: value === option.value,\n        onChange: function (_onChange) {\n          function onChange() {\n            return _onChange.apply(this, arguments);\n          }\n\n          onChange.toString = function () {\n            return _onChange.toString();\n          };\n\n          return onChange;\n        }(function () {\n          return onChange(option.value);\n        }),\n        disabled: disabled,\n        readOnly: readOnly,\n        children: option.label || option.value.toString()\n      }, option.value);\n    })\n  });\n}\n\nfunction OptionItem(_ref2) {\n  var selected = _ref2.selected,\n      children = _ref2.children,\n      onChange = _ref2.onChange,\n      disabled = _ref2.disabled,\n      readOnly = _ref2.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"label\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('btn btn-primary', {\n      active: selected,\n      disabled: readOnly || disabled\n    }),\n    children: [children, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"input\", {\n      type: \"radio\",\n      checked: selected,\n      onChange: onChange,\n      disabled: disabled,\n      readOnly: readOnly\n    })]\n  });\n}//# sourceURL=webpack-internal:///27026\n");

}),

59748:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Checkbox\": function() { return /* binding */ Checkbox; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"indeterminate\", \"title\", \"label\", \"id\", \"checked\", \"onChange\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\nvar Checkbox = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_7__.forwardRef)(function (_ref, ref) {\n  var indeterminate = _ref.indeterminate,\n      title = _ref.title,\n      label = _ref.label,\n      id = _ref.id,\n      checked = _ref.checked,\n      onChange = _ref.onChange,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var defaultRef = (0,react__WEBPACK_IMPORTED_MODULE_7__.useRef)(null);\n  var resolvedRef = ref;\n\n  if (!ref) {\n    resolvedRef = defaultRef;\n  }\n\n  (0,react__WEBPACK_IMPORTED_MODULE_7__.useEffect)(function () {\n    if (resolvedRef === null || resolvedRef.current === null) {\n      return;\n    }\n\n    if (typeof indeterminate !== 'undefined') {\n      resolvedRef.current.indeterminate = indeterminate;\n    }\n  }, [resolvedRef, indeterminate]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n    className: \"md-checkbox flex\",\n    title: title || label,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"input\", _objectSpread({\n      id: id,\n      type: \"checkbox\",\n      ref: resolvedRef,\n      onChange: onChange,\n      checked: checked // eslint-disable-next-line react/jsx-props-no-spreading\n\n    }, props)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"label\", {\n      htmlFor: id,\n      children: label\n    })]\n  });\n});//# sourceURL=webpack-internal:///59748\n");

}),

86597:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FileUploadField\": function() { return /* binding */ FileUploadField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _FileUploadField_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FileUploadField.module.css */ 78366);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction FileUploadField(_ref) {\n  var onChange = _ref.onChange,\n      value = _ref.value,\n      accept = _ref.accept,\n      _ref$title = _ref.title,\n      title = _ref$title === void 0 ? 'Select a file' : _ref$title,\n      _ref$required = _ref.required,\n      required = _ref$required === void 0 ? false : _ref$required,\n      inputId = _ref.inputId;\n  var fileRef = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createRef)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"div\", {\n    className: \"file-upload-field vertical-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"input\", {\n      id: inputId,\n      ref: fileRef,\n      type: \"file\",\n      accept: accept,\n      required: required,\n      className: _FileUploadField_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].fileInput,\n      onChange: changeHandler,\n      \"aria-label\": \"file-input\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_2__.Button, {\n      size: \"small\",\n      color: \"primary\",\n      onClick: handleButtonClick,\n      className: _FileUploadField_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].fileButton,\n      children: title\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n      className: \"vertical-center\",\n      children: value ? value.name : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n        icon: \"x-circle\",\n        feather: true,\n        mode: \"danger\"\n      })\n    })]\n  });\n\n  function handleButtonClick() {\n    if (fileRef && fileRef.current) {\n      fileRef.current.click();\n    }\n  }\n\n  function changeHandler(event) {\n    if (event.target && event.target.files && event.target.files.length > 0) {\n      onChange(event.target.files[0]);\n    }\n  }\n}//# sourceURL=webpack-internal:///86597\n");

}),

25100:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FileUploadForm\": function() { return /* binding */ FileUploadForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _form_components_FileUpload_FileUploadField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/form-components/FileUpload/FileUploadField */ 86597);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction FileUploadForm(_ref) {\n  var onChange = _ref.onChange,\n      value = _ref.value,\n      _ref$title = _ref.title,\n      title = _ref$title === void 0 ? 'Select a file' : _ref$title,\n      _ref$required = _ref.required,\n      required = _ref$required === void 0 ? false : _ref$required,\n      description = _ref.description;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: \"file-upload-form\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_2__.FormSectionTitle, {\n      children: \"Upload\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        className: \"col-sm-12 text-muted small\",\n        children: description\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FileUpload_FileUploadField__WEBPACK_IMPORTED_MODULE_3__.FileUploadField, {\n          inputId: \"file-upload-field\",\n          onChange: onChange,\n          value: value,\n          title: title,\n          required: required\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///25100\n");

}),

41519:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FileUploadField\": function() { return /* reexport safe */ _FileUploadField__WEBPACK_IMPORTED_MODULE_0__.FileUploadField; },\n/* harmony export */   \"FileUploadForm\": function() { return /* reexport safe */ _FileUploadForm__WEBPACK_IMPORTED_MODULE_1__.FileUploadForm; }\n/* harmony export */ });\n/* harmony import */ var _FileUploadField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FileUploadField */ 86597);\n/* harmony import */ var _FileUploadForm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FileUploadForm */ 25100);\n\n//# sourceURL=webpack-internal:///41519\n");

}),

42453:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormControl\": function() { return /* binding */ FormControl; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _FormError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../FormError */ 24751);\n/* harmony import */ var _FormControl_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FormControl.module.css */ 29467);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction FormControl(_ref) {\n  var inputId = _ref.inputId,\n      label = _ref.label,\n      _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 'small' : _ref$size,\n      _ref$tooltip = _ref.tooltip,\n      tooltip = _ref$tooltip === void 0 ? '' : _ref$tooltip,\n      children = _ref.children,\n      errors = _ref.errors,\n      required = _ref.required;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('form-group', _FormControl_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].container),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"label\", {\n      htmlFor: inputId,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(sizeClassLabel(size), 'control-label', 'text-left'),\n      children: [label, required && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        className: \"text-danger\",\n        children: \"*\"\n      }), tooltip && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_1__.Tooltip, {\n        message: tooltip\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n      className: sizeClassChildren(size),\n      children: [children, errors && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        className: \"help-block\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_FormError__WEBPACK_IMPORTED_MODULE_2__.FormError, {\n          children: errors\n        })\n      })]\n    })]\n  });\n}\n\nfunction sizeClassLabel(size) {\n  switch (size) {\n    case 'large':\n      return 'col-sm-5 col-lg-4';\n\n    case 'medium':\n      return 'col-sm-4 col-lg-3';\n\n    default:\n      return 'col-sm-3 col-lg-2';\n  }\n}\n\nfunction sizeClassChildren(size) {\n  switch (size) {\n    case 'large':\n      return 'col-sm-7 col-lg-8';\n\n    case 'medium':\n      return 'col-sm-8 col-lg-9';\n\n    default:\n      return 'col-sm-9 col-lg-10';\n  }\n}//# sourceURL=webpack-internal:///42453\n");

}),

89400:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FormControl": function() { return /* reexport safe */ _FormControl__WEBPACK_IMPORTED_MODULE_0__.FormControl; }
/* harmony export */ });
/* harmony import */ var _FormControl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormControl */ 42453);


}),

24751:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormError\": function() { return /* binding */ FormError; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction FormError(_ref) {\n  var children = _ref.children,\n      className = _ref.className;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"p\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"text-muted small vertical-center\", className),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n      icon: \"alert-triangle\",\n      className: \"icon-warning\",\n      feather: true\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      className: \"text-warning\",\n      children: children\n    })]\n  });\n}//# sourceURL=webpack-internal:///24751\n");

}),

77313:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormSection\": function() { return /* binding */ FormSection; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _FormSectionTitle__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../FormSectionTitle */ 91928);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\nfunction FormSection(_ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      _ref$isFoldable = _ref.isFoldable,\n      isFoldable = _ref$isFoldable === void 0 ? false : _ref$isFoldable;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(!isFoldable),\n      _useState2 = _slicedToArray(_useState, 2),\n      isExpanded = _useState2[0],\n      setIsExpanded = _useState2[1];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_FormSectionTitle__WEBPACK_IMPORTED_MODULE_13__.FormSectionTitle, {\n      htmlFor: isFoldable ? \"foldingButton\".concat(title) : '',\n      children: [isFoldable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"button\", {\n        id: \"foldingButton\".concat(title),\n        type: \"button\",\n        onClick: function onClick() {\n          return setIsExpanded(!isExpanded);\n        },\n        className: \"border-0 mx-2 !ml-0 bg-transparent inline-flex justify-center items-center w-2\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_12__.Icon, {\n          icon: isExpanded ? 'chevron-down' : 'chevron-right',\n          className: \"shrink-0\",\n          feather: true\n        })\n      }), title]\n    }), isExpanded && children]\n  });\n}//# sourceURL=webpack-internal:///77313\n");

}),

17092:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FormSection": function() { return /* reexport safe */ _FormSection__WEBPACK_IMPORTED_MODULE_0__.FormSection; }
/* harmony export */ });
/* harmony import */ var _FormSection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormSection */ 77313);


}),

4896:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormSectionTitle\": function() { return /* binding */ FormSectionTitle; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\nfunction FormSectionTitle(_ref) {\n  var children = _ref.children,\n      htmlFor = _ref.htmlFor;\n\n  if (htmlFor) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"label\", {\n      htmlFor: htmlFor,\n      className: \"col-sm-12 form-section-title cursor-pointer flex items-center\",\n      children: children\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", {\n    className: \"col-sm-12 form-section-title\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///4896\n");

}),

91928:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FormSectionTitle": function() { return /* reexport safe */ _FormSectionTitle__WEBPACK_IMPORTED_MODULE_0__.FormSectionTitle; }
/* harmony export */ });
/* harmony import */ var _FormSectionTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormSectionTitle */ 4896);


}),

87902:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Input\": function() { return /* binding */ Input; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\nfunction Input(_ref) {\n  var className = _ref.className,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"input\", _objectSpread(_objectSpread({}, props), {}, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('form-control', className)\n  }));\n}//# sourceURL=webpack-internal:///87902\n");

}),

47661:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Select\": function() { return /* binding */ Select; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"options\", \"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\nfunction Select(_ref) {\n  var options = _ref.options,\n      className = _ref.className,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"select\", _objectSpread(_objectSpread({}, props), {}, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('form-control', className),\n    children: options.map(function (item) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"option\", {\n        value: item.value,\n        children: item.label\n      }, item.value);\n    })\n  }));\n}//# sourceURL=webpack-internal:///47661\n");

}),

96155:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Input\": function() { return /* reexport safe */ _Input__WEBPACK_IMPORTED_MODULE_0__.Input; },\n/* harmony export */   \"Select\": function() { return /* reexport safe */ _Select__WEBPACK_IMPORTED_MODULE_1__.Select; }\n/* harmony export */ });\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Input */ 87902);\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Select */ 47661);\n\n//# sourceURL=webpack-internal:///96155\n");

}),

6266:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useInputGroupContext\": function() { return /* binding */ useInputGroupContext; },\n/* harmony export */   \"InputGroup\": function() { return /* binding */ InputGroup; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nvar Context = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);\nContext.displayName = 'InputGroupContext';\nfunction useInputGroupContext() {\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(Context);\n\n  if (context == null) {\n    throw new Error('Should be inside a InputGroup component');\n  }\n}\nfunction InputGroup(_ref) {\n  var children = _ref.children,\n      size = _ref.size,\n      className = _ref.className;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Context.Provider, {\n    value: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('input-group', sizeClass(size), className),\n      children: children\n    })\n  });\n}\n\nfunction sizeClass(size) {\n  switch (size) {\n    case 'large':\n      return 'input-group-lg';\n\n    case 'small':\n      return 'input-group-sm';\n\n    default:\n      return '';\n  }\n}//# sourceURL=webpack-internal:///6266\n");

}),

33765:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputGroupAddon\": function() { return /* binding */ InputGroupAddon; }\n/* harmony export */ });\n/* harmony import */ var _InputGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputGroup */ 6266);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction InputGroupAddon(_ref) {\n  var children = _ref.children;\n  (0,_InputGroup__WEBPACK_IMPORTED_MODULE_0__.useInputGroupContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n    className: \"input-group-addon\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///33765\n");

}),

49258:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputGroupButtonWrapper\": function() { return /* binding */ InputGroupButtonWrapper; }\n/* harmony export */ });\n/* harmony import */ var _InputGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputGroup */ 6266);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction InputGroupButtonWrapper(_ref) {\n  var children = _ref.children;\n  (0,_InputGroup__WEBPACK_IMPORTED_MODULE_0__.useInputGroupContext)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n    className: \"input-group-btn\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///49258\n");

}),

40413:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputGroup\": function() { return /* binding */ InputGroup; }\n/* harmony export */ });\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Input */ 96155);\n/* harmony import */ var _InputGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InputGroup */ 6266);\n/* harmony import */ var _InputGroupAddon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InputGroupAddon */ 33765);\n/* harmony import */ var _InputGroupButtonWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InputGroupButtonWrapper */ 49258);\n\n\n\n\nvar InputGroup = _InputGroup__WEBPACK_IMPORTED_MODULE_1__.InputGroup;\nInputGroup.Addon = _InputGroupAddon__WEBPACK_IMPORTED_MODULE_2__.InputGroupAddon;\nInputGroup.ButtonWrapper = _InputGroupButtonWrapper__WEBPACK_IMPORTED_MODULE_3__.InputGroupButtonWrapper;\nInputGroup.Input = _Input__WEBPACK_IMPORTED_MODULE_0__.Input;\n//# sourceURL=webpack-internal:///40413\n");

}),

70930:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputList\": function() { return /* binding */ InputList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../Input */ 96155);\n/* harmony import */ var _FormError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../FormError */ 24751);\n/* harmony import */ var _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./InputList.module.css */ 11796);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./utils */ 5015);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction InputList(_ref) {\n  var label = _ref.label,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      _ref$itemBuilder = _ref.itemBuilder,\n      itemBuilder = _ref$itemBuilder === void 0 ? defaultItemBuilder : _ref$itemBuilder,\n      _ref$renderItem = _ref.renderItem,\n      renderItem = _ref$renderItem === void 0 ? renderDefaultItem : _ref$renderItem,\n      Item = _ref.item,\n      tooltip = _ref.tooltip,\n      _ref$addLabel = _ref.addLabel,\n      addLabel = _ref$addLabel === void 0 ? 'Add item' : _ref$addLabel,\n      _ref$itemKeyGetter = _ref.itemKeyGetter,\n      itemKeyGetter = _ref$itemKeyGetter === void 0 ? function (item, index) {\n    return index;\n  } : _ref$itemKeyGetter,\n      movable = _ref.movable,\n      errors = _ref.errors,\n      textTip = _ref.textTip,\n      _ref$isAddButtonHidde = _ref.isAddButtonHidden,\n      isAddButtonHidden = _ref$isAddButtonHidde === void 0 ? false : _ref$isAddButtonHidde,\n      disabled = _ref.disabled,\n      readOnly = _ref.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])('form-group', _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].root),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])('col-sm-12', _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].header),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])('control-label text-left', _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].label),\n        children: [label, tooltip && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_18__.Tooltip, {\n          message: tooltip\n        })]\n      }), !(isAddButtonHidden || readOnly) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_16__.AddButton, {\n        label: addLabel,\n        className: \"space-left\",\n        onClick: handleAdd,\n        disabled: disabled\n      })]\n    }), textTip && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n      className: \"col-sm-12 mt-5\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__.TextTip, {\n        color: \"blue\",\n        children: textTip\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])('col-sm-12', _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].items, 'space-y-4'),\n      children: value.map(function (item, index) {\n        var key = itemKeyGetter(item, index);\n        var error = _typeof(errors) === 'object' ? errors[index] : undefined;\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(\"div\", {\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].itemLine, _defineProperty({}, _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].hasError, !!error), 'vertical-center'),\n          children: [Item ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(Item, {\n            item: item,\n            onChange: function onChange(value) {\n              return handleChangeItem(key, value);\n            },\n            error: error,\n            disabled: disabled,\n            readOnly: readOnly\n          }) : renderItem(item, function (value) {\n            return handleChangeItem(key, value);\n          }, error), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(\"div\", {\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].itemActions, 'items-start'),\n            children: [!readOnly && movable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.Fragment, {\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_16__.Button, {\n                size: \"medium\",\n                disabled: disabled || index === 0,\n                onClick: function onClick() {\n                  return handleMoveUp(index);\n                },\n                className: \"vertical-center btn-only-icon\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_17__.Icon, {\n                  icon: \"arrow-up\",\n                  feather: true\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_16__.Button, {\n                size: \"medium\",\n                type: \"button\",\n                disabled: disabled || index === value.length - 1,\n                onClick: function onClick() {\n                  return handleMoveDown(index);\n                },\n                className: \"vertical-center btn-only-icon\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_17__.Icon, {\n                  icon: \"arrow-down\",\n                  feather: true\n                })\n              })]\n            }), !readOnly && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_16__.Button, {\n              color: \"dangerlight\",\n              size: \"medium\",\n              onClick: function onClick() {\n                return handleRemoveItem(key, item);\n              },\n              className: \"vertical-center btn-only-icon\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_17__.Icon, {\n                icon: \"trash-2\",\n                feather: true,\n                size: \"md\"\n              })\n            })]\n          })]\n        }, key);\n      })\n    })]\n  });\n\n  function handleMoveUp(index) {\n    if (index <= 0) {\n      return;\n    }\n\n    handleMove(index, index - 1);\n  }\n\n  function handleMoveDown(index) {\n    if (index >= value.length - 1) {\n      return;\n    }\n\n    handleMove(index, index + 1);\n  }\n\n  function handleMove(from, to) {\n    if (!movable) {\n      return;\n    }\n\n    onChange((0,_utils__WEBPACK_IMPORTED_MODULE_23__.arrayMove)(value, from, to), {\n      type: 'move',\n      fromIndex: from,\n      to: to\n    });\n  }\n\n  function handleRemoveItem(key, item) {\n    onChange(value.filter(function (item, index) {\n      var itemKey = itemKeyGetter(item, index);\n      return itemKey !== key;\n    }), {\n      type: 'delete',\n      item: item\n    });\n  }\n\n  function handleAdd() {\n    var newItem = itemBuilder();\n    onChange([].concat(_toConsumableArray(value), [newItem]), {\n      type: 'create',\n      item: newItem\n    });\n  }\n\n  function handleChangeItem(key, newItemValue) {\n    var newItems = value.map(function (item, index) {\n      var itemKey = itemKeyGetter(item, index);\n\n      if (itemKey !== key) {\n        return item;\n      }\n\n      return newItemValue;\n    });\n    onChange(newItems, {\n      type: 'update',\n      item: newItemValue\n    });\n  }\n}\n\nfunction defaultItemBuilder() {\n  return {\n    value: ''\n  };\n}\n\nfunction DefaultItem(_ref2) {\n  var item = _ref2.item,\n      onChange = _ref2.onChange,\n      error = _ref2.error,\n      disabled = _ref2.disabled,\n      readOnly = _ref2.readOnly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Input__WEBPACK_IMPORTED_MODULE_20__.Input, {\n      value: item.value,\n      onChange: function (_onChange) {\n        function onChange(_x) {\n          return _onChange.apply(this, arguments);\n        }\n\n        onChange.toString = function () {\n          return _onChange.toString();\n        };\n\n        return onChange;\n      }(function (e) {\n        return onChange({\n          value: e.target.value\n        });\n      }),\n      className: _InputList_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].defaultItem,\n      disabled: disabled,\n      readOnly: readOnly\n    }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_FormError__WEBPACK_IMPORTED_MODULE_21__.FormError, {\n      children: error\n    })]\n  });\n}\n\nfunction renderDefaultItem(item, onChange, error) {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(DefaultItem, {\n    item: item,\n    onChange: onChange,\n    error: error\n  });\n}//# sourceURL=webpack-internal:///70930\n");

}),

59505:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "InputList": function() { return /* reexport safe */ _InputList__WEBPACK_IMPORTED_MODULE_0__.InputList; }
/* harmony export */ });
/* harmony import */ var _InputList__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputList */ 70930);


}),

5015:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"arrayMove\": function() { return /* binding */ arrayMove; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nfunction arrayMove(array, from, to) {\n  if (!checkValidIndex(array, from) || !checkValidIndex(array, to)) {\n    throw new Error('index is out of bounds');\n  }\n\n  var item = array[from];\n  var length = array.length;\n  var diff = from - to;\n\n  if (diff > 0) {\n    // move left\n    return [].concat(_toConsumableArray(array.slice(0, to)), [item], _toConsumableArray(array.slice(to, from)), _toConsumableArray(array.slice(from + 1, length)));\n  }\n\n  if (diff < 0) {\n    // move right\n    var targetIndex = to + 1;\n    return [].concat(_toConsumableArray(array.slice(0, from)), _toConsumableArray(array.slice(from + 1, targetIndex)), [item], _toConsumableArray(array.slice(targetIndex, length)));\n  }\n\n  return _toConsumableArray(array);\n\n  function checkValidIndex(array, index) {\n    return index >= 0 && index <= array.length;\n  }\n}//# sourceURL=webpack-internal:///5015\n");

}),

68871:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PortainerSelect\": function() { return /* binding */ PortainerSelect; },\n/* harmony export */   \"SingleSelect\": function() { return /* binding */ SingleSelect; },\n/* harmony export */   \"MultiSelect\": function() { return /* binding */ MultiSelect; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_first__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/first */ 6806);\n/* harmony import */ var lodash_first__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_first__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ 89999);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ 58613);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction PortainerSelect(props) {\n  return isMultiProps(props) ?\n  /*#__PURE__*/\n  // eslint-disable-next-line react/jsx-props-no-spreading\n  (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(MultiSelect, _objectSpread({}, props)) :\n  /*#__PURE__*/\n  // eslint-disable-next-line react/jsx-props-no-spreading\n  (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(SingleSelect, _objectSpread({}, props));\n}\n\nfunction isMultiProps(props) {\n  return 'isMulti' in props && !!props.isMulti;\n}\n\nfunction SingleSelect(_ref) {\n  var name = _ref.name,\n      options = _ref.options,\n      onChange = _ref.onChange,\n      value = _ref.value,\n      dataCy = _ref['data-cy'],\n      disabled = _ref.disabled,\n      inputId = _ref.inputId,\n      placeholder = _ref.placeholder,\n      isClearable = _ref.isClearable,\n      bindToBody = _ref.bindToBody;\n  var selectedValue = value ? lodash_first__WEBPACK_IMPORTED_MODULE_7___default()(findSelectedOptions(options, value)) : null;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__.Select, {\n    name: name,\n    isClearable: isClearable,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.label;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return String(option.value);\n    },\n    options: options,\n    value: selectedValue,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (option) {\n      return onChange(option ? option.value : null);\n    }),\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder,\n    isDisabled: disabled,\n    menuPortalTarget: bindToBody ? document.body : undefined\n  });\n}\n\nfunction findSelectedOptions(options, value) {\n  var valueArr = Array.isArray(value) ? value : [value];\n  return lodash_compact__WEBPACK_IMPORTED_MODULE_6___default()(options.flatMap(function (option) {\n    if (isGroup(option)) {\n      return option.options.find(function (option) {\n        return valueArr.includes(option.value);\n      });\n    }\n\n    if (valueArr.includes(option.value)) {\n      return option;\n    }\n\n    return null;\n  }));\n}\n\nfunction MultiSelect(_ref2) {\n  var name = _ref2.name,\n      value = _ref2.value,\n      onChange = _ref2.onChange,\n      options = _ref2.options,\n      dataCy = _ref2['data-cy'],\n      inputId = _ref2.inputId,\n      placeholder = _ref2.placeholder,\n      disabled = _ref2.disabled,\n      isClearable = _ref2.isClearable,\n      bindToBody = _ref2.bindToBody;\n  var selectedOptions = findSelectedOptions(options, value);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__.Select, {\n    name: name,\n    isMulti: true,\n    isClearable: isClearable,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.label;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return String(option.value);\n    },\n    options: options,\n    value: selectedOptions,\n    closeMenuOnSelect: false,\n    onChange: function (_onChange2) {\n      function onChange(_x2) {\n        return _onChange2.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange2.toString();\n      };\n\n      return onChange;\n    }(function (newValue) {\n      return onChange(newValue.map(function (option) {\n        return option.value;\n      }));\n    }),\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder,\n    isDisabled: disabled,\n    menuPortalTarget: bindToBody ? document.body : undefined\n  });\n}\n\nfunction isGroup(option) {\n  return 'options' in option;\n}//# sourceURL=webpack-internal:///68871\n");

}),

6174:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Select\": function() { return /* binding */ Select; },\n/* harmony export */   \"Creatable\": function() { return /* binding */ Creatable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_select_creatable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-select/creatable */ 89344);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-select */ 53954);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _ReactSelect_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ReactSelect.css */ 55516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"className\", \"isCreatable\"],\n    _excluded2 = [\"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\nfunction Select(_ref) {\n  var className = _ref.className,\n      _ref$isCreatable = _ref.isCreatable,\n      isCreatable = _ref$isCreatable === void 0 ? false : _ref$isCreatable,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var Component = isCreatable ? react_select_creatable__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : react_select__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(Component, _objectSpread({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(className, 'portainer-selector-root'),\n    classNamePrefix: \"portainer-selector\" // eslint-disable-next-line react/jsx-props-no-spreading\n\n  }, props));\n}\nfunction Creatable(_ref2) {\n  var className = _ref2.className,\n      props = _objectWithoutProperties(_ref2, _excluded2);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(react_select_creatable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _objectSpread({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(className, 'portainer-selector-root'),\n    classNamePrefix: \"portainer-selector\" // eslint-disable-next-line react/jsx-props-no-spreading\n\n  }, props));\n}//# sourceURL=webpack-internal:///6174\n");

}),

60304:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Slider\": function() { return /* binding */ Slider; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var rc_slider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rc-slider */ 90518);\n/* harmony import */ var _Slider_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Slider.module.css */ 91114);\n/* harmony import */ var rc_slider_assets_index_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rc-slider/assets/index.css */ 57100);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction Slider(_ref) {\n  var _marks;\n\n  var min = _ref.min,\n      max = _ref.max,\n      step = _ref.step,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      dataCy = _ref.dataCy,\n      visible = _ref.visibleTooltip;\n  var SliderWithTooltip = rc_slider__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createSliderWithTooltip(rc_slider__WEBPACK_IMPORTED_MODULE_2__[\"default\"]); // if the tooltip is always visible, hide the marks when tooltip value gets close to the edges\n\n  var marks = (_marks = {}, _defineProperty(_marks, min, visible && value / max < 0.1 ? '' : translateMinValue(min)), _defineProperty(_marks, max, visible && value / max > 0.9 ? '' : max.toString()), _marks);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"div\", {\n    className: _Slider_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].root,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(SliderWithTooltip, {\n      tipFormatter: translateMinValue,\n      min: min,\n      max: max,\n      step: step,\n      marks: marks,\n      defaultValue: value,\n      onAfterChange: onChange,\n      className: _Slider_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].slider,\n      tipProps: {\n        visible: visible\n      },\n      railStyle: {\n        height: 8\n      },\n      trackStyle: {\n        height: 8\n      },\n      dotStyle: {\n        visibility: 'hidden'\n      },\n      \"data-cy\": dataCy\n    })\n  });\n}\n\nfunction translateMinValue(value) {\n  if (value === 0) {\n    return 'unlimited';\n  }\n\n  return value.toString();\n}//# sourceURL=webpack-internal:///60304\n");

}),

14531:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Slider": function() { return /* reexport safe */ _Slider__WEBPACK_IMPORTED_MODULE_0__.Slider; }
/* harmony export */ });
/* harmony import */ var _Slider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Slider */ 60304);


}),

79410:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Switch\": function() { return /* binding */ Switch; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/BEFeatureIndicator */ 95814);\n/* harmony import */ var _Switch_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Switch.css */ 42538);\n/* harmony import */ var _Switch_module_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Switch.module.css */ 50494);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction Switch(_ref) {\n  var name = _ref.name,\n      checked = _ref.checked,\n      id = _ref.id,\n      disabled = _ref.disabled,\n      dataCy = _ref.dataCy,\n      onChange = _ref.onChange,\n      featureId = _ref.featureId,\n      className = _ref.className;\n  var limitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__.isLimitedToBE)(featureId);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"label\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('switch', className, _Switch_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].root, {\n        business: limitedToBE,\n        limited: limitedToBE\n      }),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"input\", {\n        type: \"checkbox\",\n        name: name,\n        id: id,\n        checked: checked,\n        disabled: disabled || limitedToBE,\n        onChange: function (_onChange) {\n          function onChange(_x) {\n            return _onChange.apply(this, arguments);\n          }\n\n          onChange.toString = function () {\n            return _onChange.toString();\n          };\n\n          return onChange;\n        }(function (_ref2) {\n          var checked = _ref2.target.checked;\n          return onChange(checked);\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"span\", {\n        className: \"slider round before:content-['']\",\n        \"data-cy\": dataCy\n      })]\n    }), limitedToBE && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_5__.BEFeatureIndicator, {\n      featureId: featureId\n    })]\n  });\n}//# sourceURL=webpack-internal:///79410\n");

}),

44620:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SwitchField\": function() { return /* binding */ SwitchField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _SwitchField_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SwitchField.module.css */ 33714);\n/* harmony import */ var _Switch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Switch */ 79410);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction SwitchField(_ref) {\n  var tooltip = _ref.tooltip,\n      checked = _ref.checked,\n      label = _ref.label,\n      name = _ref.name,\n      labelClass = _ref.labelClass,\n      fieldClass = _ref.fieldClass,\n      dataCy = _ref.dataCy,\n      disabled = _ref.disabled,\n      onChange = _ref.onChange,\n      featureId = _ref.featureId,\n      switchClass = _ref.switchClass;\n  var toggleName = name ? \"toggle_\".concat(name) : '';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"label\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_SwitchField_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].root, fieldClass),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"span\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('text-left space-right control-label', _SwitchField_module_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"].label, labelClass),\n      children: [label, tooltip && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n        message: tooltip\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_4__.Switch, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('space-right', switchClass),\n      name: toggleName,\n      id: toggleName,\n      checked: checked,\n      disabled: disabled,\n      onChange: onChange,\n      featureId: featureId,\n      dataCy: dataCy\n    })]\n  });\n}//# sourceURL=webpack-internal:///44620\n");

}),

68980:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SwitchField": function() { return /* reexport safe */ _SwitchField__WEBPACK_IMPORTED_MODULE_0__.SwitchField; }
/* harmony export */ });
/* harmony import */ var _SwitchField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SwitchField */ 44620);


}),

33960:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useContainerStatusComponent\": function() { return /* binding */ useContainerStatusComponent; },\n/* harmony export */   \"ContainerStatus\": function() { return /* binding */ ContainerStatus; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction useContainerStatusComponent(containers) {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ContainerStatus, {\n    containers: containers\n  });\n}\nfunction ContainerStatus(_ref) {\n  var containers = _ref.containers;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    className: \"pull-right\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n        className: \"vertical-center space-right pr-5\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n          icon: \"power\",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('icon icon-sm icon-success'),\n          feather: true\n        }), runningContainersFilter(containers), \" running\"]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n        className: \"vertical-center space-right\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n          icon: \"power\",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('icon icon-sm icon-danger'),\n          feather: true\n        }), stoppedContainersFilter(containers), \" stopped\"]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n        className: \"vertical-center space-right pr-5\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n          icon: \"heart\",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('icon icon-sm icon-success'),\n          feather: true\n        }), healthyContainersFilter(containers), \" healthy\"]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n        className: \"vertical-center space-right\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n          icon: \"heart\",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('icon icon-sm icon-danger'),\n          feather: true\n        }), unhealthyContainersFilter(containers), \" unhealthy\"]\n      })]\n    })]\n  });\n}\n\nfunction runningContainersFilter(containers) {\n  return containers.filter(function (container) {\n    return container.Status === 'running';\n  }).length;\n}\n\nfunction stoppedContainersFilter(containers) {\n  return containers.filter(function (container) {\n    return container.Status === 'exited';\n  }).length;\n}\n\nfunction healthyContainersFilter(containers) {\n  return containers.filter(function (container) {\n    return container.Status === 'healthy';\n  }).length;\n}\n\nfunction unhealthyContainersFilter(containers) {\n  return containers.filter(function (container) {\n    return container.Status === 'unhealthy';\n  }).length;\n}//# sourceURL=webpack-internal:///33960\n");

}),

76981:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useImagesTotalSizeComponent\": function() { return /* binding */ useImagesTotalSizeComponent; },\n/* harmony export */   \"ImagesTotalSize\": function() { return /* binding */ ImagesTotalSize; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction useImagesTotalSizeComponent(imagesTotalSize) {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ImagesTotalSize, {\n    imagesTotalSize: imagesTotalSize\n  });\n}\nfunction ImagesTotalSize(_ref) {\n  var imagesTotalSize = _ref.imagesTotalSize;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", {\n    className: \"vertical-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n      icon: \"pie-chart\",\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('space-right'),\n      feather: true\n    }), (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_2__.humanize)(imagesTotalSize)]\n  });\n}//# sourceURL=webpack-internal:///76981\n");

}),

80727:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TemplateListDropdown\": function() { return /* binding */ TemplateListDropdown; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction TemplateListDropdown(_ref) {\n  var options = _ref.options,\n      _onChange = _ref.onChange,\n      placeholder = _ref.placeholder,\n      value = _ref.value;\n  var filterOptions = options.map(function (value) {\n    return {\n      label: value\n    };\n  });\n  var filterValue = value ? {\n    label: value\n  } : null;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_1__.Select, {\n    placeholder: placeholder,\n    options: filterOptions,\n    value: filterValue,\n    isClearable: true,\n    onChange: function onChange(option) {\n      var _option$label;\n\n      return _onChange((_option$label = option === null || option === void 0 ? void 0 : option.label) !== null && _option$label !== void 0 ? _option$label : null);\n    }\n  });\n}//# sourceURL=webpack-internal:///80727\n");

}),

31475:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TemplateListDropdown\": function() { return /* reexport safe */ _TemplateListDropdown__WEBPACK_IMPORTED_MODULE_1__.TemplateListDropdown; },\n/* harmony export */   \"TemplateListDropdownAngular\": function() { return /* binding */ TemplateListDropdownAngular; }\n/* harmony export */ });\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _TemplateListDropdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TemplateListDropdown */ 80727);\n\n\nvar TemplateListDropdownAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__.react2angular)(_TemplateListDropdown__WEBPACK_IMPORTED_MODULE_1__.TemplateListDropdown, ['options', 'onChange', 'placeholder', 'value']);\n//# sourceURL=webpack-internal:///31475\n");

}),

17665:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TemplateListSort\": function() { return /* binding */ TemplateListSort; }\n/* harmony export */ });\n/* harmony import */ var _TemplateListDropdown__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../TemplateListDropdown */ 31475);\n/* harmony import */ var _TemplateListSort_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TemplateListSort.module.css */ 14907);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction TemplateListSort(_ref) {\n  var options = _ref.options,\n      onChange = _ref.onChange,\n      onDescending = _ref.onDescending,\n      placeholder = _ref.placeholder,\n      sortByDescending = _ref.sortByDescending,\n      sortByButton = _ref.sortByButton,\n      value = _ref.value;\n  var upIcon = 'fa fa-sort-alpha-up';\n  var downIcon = 'fa fa-sort-alpha-down';\n  var iconStyle = sortByDescending ? upIcon : downIcon;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n    className: _TemplateListSort_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sortByContainer,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: _TemplateListSort_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sortByElement,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_TemplateListDropdown__WEBPACK_IMPORTED_MODULE_0__.TemplateListDropdown, {\n        placeholder: placeholder,\n        options: options,\n        onChange: onChange,\n        value: value\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: _TemplateListSort_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sortByElement,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"button\", {\n        className: _TemplateListSort_module_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sortButton,\n        type: \"button\",\n        disabled: !sortByButton || !value,\n        onClick: function onClick(e) {\n          e.preventDefault();\n          onDescending();\n        },\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"i\", {\n          className: iconStyle\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///17665\n");

}),

42148:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TemplateListSort\": function() { return /* reexport safe */ _TemplateListSort__WEBPACK_IMPORTED_MODULE_1__.TemplateListSort; },\n/* harmony export */   \"TemplateListSortAngular\": function() { return /* binding */ TemplateListSortAngular; }\n/* harmony export */ });\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _TemplateListSort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TemplateListSort */ 17665);\n\n\nvar TemplateListSortAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_0__.react2angular)(_TemplateListSort__WEBPACK_IMPORTED_MODULE_1__.TemplateListSort, ['options', 'onChange', 'onDescending', 'placeholder', 'sortByDescending', 'sortByButton', 'value']);\n//# sourceURL=webpack-internal:///42148\n");

}),

33525:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Gpu\": function() { return /* binding */ Gpu; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react-select */ 68847);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var _form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/SwitchField/Switch */ 79410);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NvidiaCapabilitiesOptions = [// Taken from https://github.com/containerd/containerd/blob/master/contrib/nvidia/nvidia.go#L40\n{\n  value: 'compute',\n  label: 'compute',\n  description: 'CUDA和OpenCL应用所需的'\n}, {\n  value: 'compat32',\n  label: 'compat32',\n  description: '运行32位应用程序时需要'\n}, {\n  value: 'graphics',\n  label: 'graphics',\n  description: '运行OpenGL和Vulkan应用程序所需要的'\n}, {\n  value: 'utility',\n  label: 'utility',\n  description: '使用nvidia-smi和NVML时需要'\n}, {\n  value: 'video',\n  label: 'video',\n  description: '使用视频编解码器SDK时需要'\n}, {\n  value: 'display',\n  label: 'display',\n  description: '需要利用X11显示'\n}];\n\nfunction Option(props) {\n  var _props$data = props.data,\n      value = _props$data.value,\n      description = _props$data.description;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_21__.c.Option, _objectSpread(_objectSpread({}, props), {}, {\n      children: \"\".concat(value, \" - \").concat(description)\n    }))\n  });\n}\n\nfunction MultiValueRemove(props) {\n  var value = props.selectProps.value;\n\n  if (value && value.length === 1) {\n    return null;\n  } // eslint-disable-next-line react/jsx-props-no-spreading\n\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_21__.c.MultiValueRemove, _objectSpread({}, props));\n}\n\nfunction Gpu(_ref) {\n  var values = _ref.values,\n      onChange = _ref.onChange,\n      _ref$gpus = _ref.gpus,\n      gpus = _ref$gpus === void 0 ? [] : _ref$gpus,\n      _ref$usedGpus = _ref.usedGpus,\n      usedGpus = _ref$usedGpus === void 0 ? [] : _ref$usedGpus,\n      usedAllGpus = _ref.usedAllGpus;\n  var options = (0,react__WEBPACK_IMPORTED_MODULE_16__.useMemo)(function () {\n    var options = (gpus || []).map(function (gpu) {\n      return {\n        value: gpu.value,\n        label: usedGpus.includes(gpu.value) || usedAllGpus ? \"\".concat(gpu.name, \" (in use)\") : gpu.name\n      };\n    });\n    options.unshift({\n      value: 'all',\n      label: '使用所有GPU'\n    });\n    return options;\n  }, [gpus, usedGpus, usedAllGpus]);\n\n  function onChangeValues(key, newValue) {\n    var newValues = _objectSpread(_objectSpread({}, values), {}, _defineProperty({}, key, newValue));\n\n    onChange(newValues);\n  }\n\n  function toggleEnableGpu() {\n    onChangeValues('enabled', !values.enabled);\n  }\n\n  function onChangeSelectedGpus(newValue, actionMeta) {\n    var useSpecific = values.useSpecific;\n    var selectedGPUs = newValue.map(function (option) {\n      return option.value;\n    });\n\n    if (actionMeta.action === 'select-option') {\n      var _actionMeta$option;\n\n      useSpecific = ((_actionMeta$option = actionMeta.option) === null || _actionMeta$option === void 0 ? void 0 : _actionMeta$option.value) !== 'all';\n      selectedGPUs = selectedGPUs.filter(function (value) {\n        return useSpecific ? value !== 'all' : value === 'all';\n      });\n    }\n\n    var newValues = _objectSpread(_objectSpread({}, values), {}, {\n      selectedGPUs: selectedGPUs,\n      useSpecific: useSpecific\n    });\n\n    onChange(newValues);\n  }\n\n  function onChangeSelectedCaps(newValue) {\n    onChangeValues('capabilities', newValue.map(function (option) {\n      return option.value;\n    }));\n  }\n\n  var gpuCmd = (0,react__WEBPACK_IMPORTED_MODULE_16__.useMemo)(function () {\n    var devices = values.selectedGPUs.join(',');\n    var deviceStr = devices === 'all' ? 'all,' : \"device=\".concat(devices, \",\");\n    var caps = values.capabilities.join(',');\n    return \"--gpus '\".concat(deviceStr, \"\\\"capabilities=\").concat(caps, \"\\\"'\");\n  }, [values.selectedGPUs, values.capabilities]);\n  var gpuValue = (0,react__WEBPACK_IMPORTED_MODULE_16__.useMemo)(function () {\n    return options.filter(function (option) {\n      return values.selectedGPUs.includes(option.value);\n    });\n  }, [values.selectedGPUs, options]);\n  var capValue = (0,react__WEBPACK_IMPORTED_MODULE_16__.useMemo)(function () {\n    return NvidiaCapabilitiesOptions.filter(function (option) {\n      return values.capabilities.includes(option.value);\n    });\n  }, [values.capabilities]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n      className: \"form-group\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n        className: \"col-sm-3 col-lg-2 control-label text-left\",\n        children: [\"\\u542F\\u7528 GPU\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_18__.Switch, {\n          id: \"enabled\",\n          name: \"enabled\",\n          checked: values.enabled,\n          onChange: toggleEnableGpu,\n          className: \"ml-2\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n        className: \"col-sm-9 col-lg-10 text-left\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__.Select, {\n          isMulti: true,\n          closeMenuOnSelect: true,\n          value: gpuValue,\n          isClearable: false,\n          backspaceRemovesValue: false,\n          isDisabled: !values.enabled,\n          onChange: onChangeSelectedGpus,\n          options: options,\n          components: {\n            MultiValueRemove: MultiValueRemove\n          }\n        })\n      })]\n    }), values.enabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n        className: \"form-group\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n          className: \"col-sm-3 col-lg-2 control-label text-left\",\n          children: [\"\\u80FD\\u529B\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_19__.Tooltip, {\n            message: \"\\u8BA1\\u7B97 \\u548C \\u5B9E\\u7528 \\u529F\\u80FD\\u7531Portainer\\u9884\\u9009\\uFF0C\\u56E0\\u4E3A\\u5F53\\u4F60\\u6CA1\\u6709\\u7528docker CLI\\u7684 '--gpus' \\u9009\\u9879\\u660E\\u786E\\u6307\\u5B9A\\u529F\\u80FD\\u65F6\\uFF0C\\u5B83\\u4EEC\\u88AB\\u9ED8\\u8BA4\\u4E3A\\u4F7F\\u7528\\u3002\"\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n          className: \"col-sm-9 col-lg-10 text-left\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_17__.Select, {\n            isMulti: true,\n            closeMenuOnSelect: true,\n            value: capValue,\n            options: NvidiaCapabilitiesOptions,\n            components: {\n              Option: Option\n            },\n            onChange: onChangeSelectedCaps\n          })\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n        className: \"form-group\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n          className: \"col-sm-3 col-lg-2 control-label text-left\",\n          children: [\"\\u63A7\\u5236\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_19__.Tooltip, {\n            message: \"\\u8FD9\\u662F\\u6839\\u636E\\u4F60\\u7684\\u8BBE\\u7F6E\\u751F\\u6210\\u7684\\u76F8\\u5F53\\u4E8E '--gpus' \\u7684docker CLI\\u53C2\\u6570\\u3002\"\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"div\", {\n          className: \"col-sm-9 col-lg-10\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\"code\", {\n            children: gpuCmd\n          })\n        })]\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///33525\n");

}),

17060:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainersDatatable\": function() { return /* binding */ ContainersDatatable; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _react_docker_containers_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/docker/containers/utils */ 77070);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/datatables/QuickActionsSettings */ 7763);\n/* harmony import */ var _datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/datatables/ColumnVisibilityMenu */ 2294);\n/* harmony import */ var _queries_containers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../queries/containers */ 86781);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./datatable-store */ 51539);\n/* harmony import */ var _ContainersDatatableSettings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ContainersDatatableSettings */ 55892);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./columns */ 67293);\n/* harmony import */ var _ContainersDatatableActions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ContainersDatatableActions */ 65949);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./RowContext */ 30516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar storageKey = 'containers';\nvar useStore = (0,_datatable_store__WEBPACK_IMPORTED_MODULE_11__.createStore)(storageKey);\nvar actions = [(0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.buildAction)('logs', '日志'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.buildAction)('inspect', '检查'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.buildAction)('stats', '状态'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.buildAction)('exec', '控制台'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.buildAction)('attach', '附加')];\nfunction ContainersDatatable(_ref) {\n  var isHostColumnVisible = _ref.isHostColumnVisible,\n      environment = _ref.environment;\n  var settings = useStore();\n  var isGPUsColumnVisible = (0,_react_docker_containers_utils__WEBPACK_IMPORTED_MODULE_6__.useShowGPUsColumn)(environment.Id);\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_13__.useColumns)(isHostColumnVisible, isGPUsColumnVisible);\n\n  var hidableColumns = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(columns.filter(function (col) {\n    return col.canHide;\n  }).map(function (col) {\n    return col.id;\n  }));\n\n  var containersQuery = (0,_queries_containers__WEBPACK_IMPORTED_MODULE_10__.useContainers)(environment.Id, true, undefined, settings.autoRefreshRate * 1000);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_RowContext__WEBPACK_IMPORTED_MODULE_15__.RowProvider, {\n    context: {\n      environment: environment\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_7__.Datatable, {\n      titleOptions: {\n        icon: 'svg-cubes',\n        title: '容器'\n      },\n      settingsStore: settings,\n      columns: columns,\n      renderTableActions: function renderTableActions(selectedRows) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_ContainersDatatableActions__WEBPACK_IMPORTED_MODULE_14__.ContainersDatatableActions, {\n          selectedItems: selectedRows,\n          isAddActionVisible: true,\n          endpointId: environment.Id\n        });\n      },\n      isLoading: containersQuery.isLoading,\n      isRowSelectable: function isRowSelectable(row) {\n        return !row.original.IsPortainer;\n      },\n      initialTableState: {\n        hiddenColumns: settings.hiddenColumns\n      },\n      renderTableSettings: function renderTableSettings(tableInstance) {\n        var columnsToHide = tableInstance.allColumns.filter(function (colInstance) {\n          return hidableColumns === null || hidableColumns === void 0 ? void 0 : hidableColumns.includes(colInstance.id);\n        });\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_9__.ColumnVisibilityMenu, {\n            columns: columnsToHide,\n            onChange: function onChange(hiddenColumns) {\n              settings.setHiddenColumns(hiddenColumns);\n              tableInstance.setHiddenColumns(hiddenColumns);\n            },\n            value: settings.hiddenColumns\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_7__.TableSettingsMenu, {\n            quickActions: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_8__.QuickActionsSettings, {\n              actions: actions\n            }),\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_ContainersDatatableSettings__WEBPACK_IMPORTED_MODULE_12__.ContainersDatatableSettings, {\n              isRefreshVisible: true,\n              settings: settings\n            })\n          })]\n        });\n      },\n      storageKey: storageKey,\n      dataset: containersQuery.data || [],\n      emptyContentLabel: \"\\u672A\\u627E\\u5230\\u5BB9\\u5668\"\n    })\n  });\n}//# sourceURL=webpack-internal:///17060\n");

}),

65949:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainersDatatableActions\": function() { return /* binding */ ContainersDatatableActions; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 17043);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-feather */ 7701);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 19937);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-feather */ 96636);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-feather */ 80213);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react-feather */ 32346);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/services/modal.service/prompt */ 77918);\n/* harmony import */ var _portainer_services_http_request_helper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/http-request.helper */ 50477);\n/* harmony import */ var _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react/docker/containers/types */ 56864);\n/* harmony import */ var _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/react/docker/containers/containers.service */ 61838);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ContainersDatatableActions(_ref) {\n  var selectedItems = _ref.selectedItems,\n      isAddActionVisible = _ref.isAddActionVisible,\n      endpointId = _ref.endpointId;\n  var selectedItemCount = selectedItems.length;\n  var hasPausedItemsSelected = selectedItems.some(function (item) {\n    return item.State === _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Paused;\n  });\n  var hasStoppedItemsSelected = selectedItems.some(function (item) {\n    return [_react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Stopped, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Created, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Exited].includes(item.Status);\n  });\n  var hasRunningItemsSelected = selectedItems.some(function (item) {\n    return [_react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Running, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Healthy, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Unhealthy, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_11__.ContainerStatus.Starting].includes(item.Status);\n  });\n  var isAuthorized = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.useAuthorizations)(['DockerContainerStart', 'DockerContainerStop', 'DockerContainerKill', 'DockerContainerRestart', 'DockerContainerPause', 'DockerContainerUnpause', 'DockerContainerDelete', 'DockerContainerCreate']);\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_6__.useRouter)();\n\n  if (!isAuthorized) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_14__.ButtonGroup, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerStart\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onStartClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0 || !hasStoppedItemsSelected,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n          children: \"\\u542F\\u52A8\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerStop\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onStopClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0 || !hasRunningItemsSelected,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n          children: \"\\u505C\\u6B62\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerKill\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onKillClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0 || hasStoppedItemsSelected,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n          children: \"\\u7EC8\\u6B62\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerRestart\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onRestartClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n          children: \"\\u91CD\\u542F\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerPause\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onPauseClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0 || !hasRunningItemsSelected,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n          children: \"\\u6682\\u505C\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerUnpause\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"light\",\n          onClick: function onClick() {\n            return onResumeClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0 || !hasPausedItemsSelected,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n          children: \"\\u6062\\u590D\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n        authorizations: \"DockerContainerDelete\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          color: \"dangerlight\",\n          onClick: function onClick() {\n            return onRemoveClick(selectedItems);\n          },\n          disabled: selectedItemCount === 0,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n          children: \"\\u5220\\u9664\"\n        })\n      })]\n    }), isAddActionVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_8__.Authorized, {\n      authorizations: \"DockerContainerCreate\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n        to: \"docker.containers.new\",\n        className: \"space-left\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n          children: \"\\u6DFB\\u52A0\\u5BB9\\u5668\"\n        })\n      })\n    })]\n  });\n\n  function onStartClick(selectedItems) {\n    var successMessage = '容器已成功启动';\n    var errorMessage = '无法启动容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.startContainer, successMessage, errorMessage);\n  }\n\n  function onStopClick(selectedItems) {\n    var successMessage = '容器已成功停止';\n    var errorMessage = '无法停止容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.stopContainer, successMessage, errorMessage);\n  }\n\n  function onRestartClick(selectedItems) {\n    var successMessage = '容器已成功重新启动';\n    var errorMessage = '无法重新启动容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.restartContainer, successMessage, errorMessage);\n  }\n\n  function onKillClick(selectedItems) {\n    var successMessage = '容器已成功终止';\n    var errorMessage = '无法终止容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.killContainer, successMessage, errorMessage);\n  }\n\n  function onPauseClick(selectedItems) {\n    var successMessage = '容器已成功暂停';\n    var errorMessage = '无法暂停容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.pauseContainer, successMessage, errorMessage);\n  }\n\n  function onResumeClick(selectedItems) {\n    var successMessage = '容器已成功恢复';\n    var errorMessage = '无法恢复容器';\n    executeActionOnContainerList(selectedItems, _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.resumeContainer, successMessage, errorMessage);\n  }\n\n  function onRemoveClick(selectedItems) {\n    var isOneContainerRunning = selectedItems.some(function (container) {\n      return container.State === 'running';\n    });\n    var runningTitle = isOneContainerRunning ? 'running' : '';\n    var title = \"\\u60A8\\u5C06\\u8981\\u5220\\u9664\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A \".concat(runningTitle, \" \\u5BB9\\u5668\\u3002\");\n    (0,_portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_9__.confirmContainerDeletion)(title, function (result) {\n      if (!result) {\n        return;\n      }\n\n      var cleanVolumes = !!result[0];\n      removeSelectedContainers(selectedItems, cleanVolumes);\n    });\n  }\n\n  function executeActionOnContainerList(_x, _x2, _x3, _x4) {\n    return _executeActionOnContainerList.apply(this, arguments);\n  }\n\n  function _executeActionOnContainerList() {\n    _executeActionOnContainerList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(containers, action, successMessage, errorMessage) {\n      var i, container;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              i = 0;\n\n            case 1:\n              if (!(i < containers.length)) {\n                _context.next = 16;\n                break;\n              }\n\n              container = containers[i];\n              _context.prev = 3;\n              (0,_portainer_services_http_request_helper__WEBPACK_IMPORTED_MODULE_10__.setPortainerAgentTargetHeader)(container.NodeName);\n              _context.next = 7;\n              return action(endpointId, container.Id);\n\n            case 7:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.success(successMessage, container.Names[0]);\n              _context.next = 13;\n              break;\n\n            case 10:\n              _context.prev = 10;\n              _context.t0 = _context[\"catch\"](3);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.error('Failure', _context.t0, \"\".concat(errorMessage, \":\").concat(container.Names[0]));\n\n            case 13:\n              i += 1;\n              _context.next = 1;\n              break;\n\n            case 16:\n              router.stateService.reload();\n\n            case 17:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[3, 10]]);\n    }));\n    return _executeActionOnContainerList.apply(this, arguments);\n  }\n\n  function removeSelectedContainers(_x5, _x6) {\n    return _removeSelectedContainers.apply(this, arguments);\n  }\n\n  function _removeSelectedContainers() {\n    _removeSelectedContainers = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(containers, cleanVolumes) {\n      var i, container;\n      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              i = 0;\n\n            case 1:\n              if (!(i < containers.length)) {\n                _context2.next = 16;\n                break;\n              }\n\n              container = containers[i];\n              _context2.prev = 3;\n              (0,_portainer_services_http_request_helper__WEBPACK_IMPORTED_MODULE_10__.setPortainerAgentTargetHeader)(container.NodeName);\n              _context2.next = 7;\n              return (0,_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_12__.removeContainer)(endpointId, container, cleanVolumes);\n\n            case 7:\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.success('容器已成功删除', container.Names[0]);\n              _context2.next = 13;\n              break;\n\n            case 10:\n              _context2.prev = 10;\n              _context2.t0 = _context2[\"catch\"](3);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_7__.error('Failure', _context2.t0, '无法删除容器');\n\n            case 13:\n              i += 1;\n              _context2.next = 1;\n              break;\n\n            case 16:\n              router.stateService.reload();\n\n            case 17:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2, null, [[3, 10]]);\n    }));\n    return _removeSelectedContainers.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///65949\n");

}),

55892:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainersDatatableSettings\": function() { return /* binding */ ContainersDatatableSettings; }\n/* harmony export */ });\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _datatables_TableSettingsMenuAutoRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/datatables/TableSettingsMenuAutoRefresh */ 96082);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datatable-store */ 51539);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction ContainersDatatableSettings(_ref) {\n  var isRefreshVisible = _ref.isRefreshVisible,\n      settings = _ref.settings;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_0__.Checkbox, {\n      id: \"settings-container-truncate-nae\",\n      label: \"\\u622A\\u65AD\\u5BB9\\u5668\\u540D\\u79F0\",\n      checked: settings.truncateContainerName > 0,\n      onChange: function onChange() {\n        return settings.setTruncateContainerName(settings.truncateContainerName > 0 ? 0 : _datatable_store__WEBPACK_IMPORTED_MODULE_2__.TRUNCATE_LENGTH);\n      }\n    }), isRefreshVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_datatables_TableSettingsMenuAutoRefresh__WEBPACK_IMPORTED_MODULE_1__.TableSettingsMenuAutoRefresh, {\n      value: settings.autoRefreshRate,\n      onChange: function onChange(value) {\n        return settings.setAutoRefreshRate(value);\n      }\n    })]\n  });\n}//# sourceURL=webpack-internal:///55892\n");

}),

30516:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RowProvider\": function() { return /* binding */ RowProvider; },\n/* harmony export */   \"useRowContext\": function() { return /* binding */ useRowContext; }\n/* harmony export */ });\n/* harmony import */ var _datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/RowContext */ 9924);\n\n\nvar _createRowContext = (0,_datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__.createRowContext)(),\n    RowProvider = _createRowContext.RowProvider,\n    useRowContext = _createRowContext.useRowContext;\n\n//# sourceURL=webpack-internal:///30516\n");

}),

73313:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"created\": function() { return /* binding */ created; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n\nvar created = {\n  Header: '创建于',\n  accessor: 'Created',\n  id: 'created',\n  Cell: function Cell(_ref) {\n    var value = _ref.value;\n    return (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.isoDateFromTimestamp)(value);\n  },\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///73313\n");

}),

98171:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gpus\": function() { return /* binding */ gpus; }\n/* harmony export */ });\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _react_docker_containers_queries_gpus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/docker/containers/queries/gpus */ 83510);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nvar gpus = {\n  Header: 'GPUs',\n  id: 'gpus',\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  },\n  Cell: GpusCell\n};\n\nfunction GpusCell(_ref) {\n  var container = _ref.row.original;\n  var containerId = container.Id;\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_0__.useEnvironmentId)();\n  var gpusQuery = (0,_react_docker_containers_queries_gpus__WEBPACK_IMPORTED_MODULE_1__.useContainerGpus)(environmentId, containerId);\n\n  if (!gpusQuery.data) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: gpusQuery.data\n  });\n}//# sourceURL=webpack-internal:///98171\n");

}),

44158:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"host\": function() { return /* binding */ host; }\n/* harmony export */ });\nvar host = {\n  Header: 'Host',\n  accessor: function accessor(row) {\n    return row.NodeName || '-';\n  },\n  id: 'host',\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///44158\n");

}),

19608:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"image\": function() { return /* binding */ image; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../RowContext */ 30516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nvar image = {\n  Header: '镜像',\n  accessor: 'Image',\n  id: 'image',\n  disableFilters: true,\n  Cell: ImageCell,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction ImageCell(_ref) {\n  var imageName = _ref.value;\n  var linkProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_2__.useSref)('docker.images.image', {\n    id: imageName\n  });\n  var shortImageName = trimSHASum(imageName);\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_4__.useRowContext)(),\n      environment = _useRowContext.environment;\n\n  if ((0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__.isOfflineEndpoint)(environment)) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n      children: shortImageName\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"a\", {\n    href: linkProps.href,\n    onClick: linkProps.onClick,\n    children: shortImageName\n  });\n\n  function trimSHASum(imageName) {\n    if (!imageName) {\n      return '';\n    }\n\n    if (imageName.indexOf('sha256:') === 0) {\n      return imageName.substring(7, 19);\n    }\n\n    return imageName.split('@sha256')[0];\n  }\n}//# sourceURL=webpack-internal:///19608\n");

}),

67293:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _created__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./created */ 73313);\n/* harmony import */ var _host__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./host */ 44158);\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ 19608);\n/* harmony import */ var _ip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ip */ 71561);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./name */ 31412);\n/* harmony import */ var _ownership__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ownership */ 72614);\n/* harmony import */ var _ports__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ports */ 37205);\n/* harmony import */ var _quick_actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./quick-actions */ 19882);\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./stack */ 32274);\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./state */ 48786);\n/* harmony import */ var _gpus__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./gpus */ 98171);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction useColumns(isHostColumnVisible, isGPUsColumnVisible) {\n  return (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n    return lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()([_name__WEBPACK_IMPORTED_MODULE_6__.name, _state__WEBPACK_IMPORTED_MODULE_11__.state, _quick_actions__WEBPACK_IMPORTED_MODULE_9__.quickActions, _stack__WEBPACK_IMPORTED_MODULE_10__.stack, _image__WEBPACK_IMPORTED_MODULE_4__.image, _created__WEBPACK_IMPORTED_MODULE_2__.created, _ip__WEBPACK_IMPORTED_MODULE_5__.ip, isHostColumnVisible && _host__WEBPACK_IMPORTED_MODULE_3__.host, isGPUsColumnVisible && _gpus__WEBPACK_IMPORTED_MODULE_12__.gpus, _ports__WEBPACK_IMPORTED_MODULE_8__.ports, _ownership__WEBPACK_IMPORTED_MODULE_7__.ownership]);\n  }, [isHostColumnVisible, isGPUsColumnVisible]);\n}//# sourceURL=webpack-internal:///67293\n");

}),

71561:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ip\": function() { return /* binding */ ip; }\n/* harmony export */ });\nvar ip = {\n  Header: 'IP 地址',\n  accessor: function accessor(row) {\n    return row.IP || '-';\n  },\n  id: 'ip',\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///71561\n");

}),

31412:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var lodash_truncate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/truncate */ 80738);\n/* harmony import */ var lodash_truncate__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_truncate__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var _datatables_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/datatables/useZustandTableSettings */ 96276);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../RowContext */ 30516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: function accessor(row) {\n    var name = row.Names[0];\n    return name.substring(1, name.length);\n  },\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: true,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      container = _ref.row.original;\n  var linkProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_1__.useSref)('.container', {\n    id: container.Id,\n    nodeName: container.NodeName\n  });\n\n  var _useTableSettings = (0,_datatables_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_3__.useTableSettings)(),\n      settings = _useTableSettings.settings;\n\n  var truncate = settings.truncateContainerName;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_4__.useRowContext)(),\n      environment = _useRowContext.environment;\n\n  var shortName = name;\n\n  if (truncate > 0) {\n    shortName = lodash_truncate__WEBPACK_IMPORTED_MODULE_0___default()(name, {\n      length: truncate\n    });\n  }\n\n  if ((0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_2__.isOfflineEndpoint)(environment)) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n      children: shortName\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"a\", {\n    href: linkProps.href,\n    onClick: linkProps.onClick,\n    title: name,\n    children: shortName\n  });\n}//# sourceURL=webpack-internal:///31412\n");

}),

72614:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ownership\": function() { return /* binding */ ownership; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nvar ownership = {\n  Header: '所有权',\n  id: 'ownership',\n  accessor: function accessor(row) {\n    var _row$ResourceControl;\n\n    return ((_row$ResourceControl = row.ResourceControl) === null || _row$ResourceControl === void 0 ? void 0 : _row$ResourceControl.Ownership) || _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_2__.ResourceControlOwnership.ADMINISTRATORS;\n  },\n  Cell: OwnershipCell,\n  disableFilters: true,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction OwnershipCell(_ref) {\n  var value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_1__.ownershipIcon)(value), 'space-right'),\n      \"aria-hidden\": \"true\"\n    }), value || _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_2__.ResourceControlOwnership.ADMINISTRATORS]\n  });\n}//# sourceURL=webpack-internal:///72614\n");

}),

37205:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ports\": function() { return /* binding */ ports; }\n/* harmony export */ });\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/uniqBy */ 93715);\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../RowContext */ 30516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nvar ports = {\n  Header: '已发布端口',\n  accessor: 'Ports',\n  id: 'ports',\n  Cell: PortsCell,\n  disableSortBy: true,\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction PortsCell(_ref) {\n  var ports = _ref.value;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_3__.useRowContext)(),\n      environment = _useRowContext.environment;\n\n  if (ports.length === 0) {\n    return '-';\n  }\n\n  var publicUrl = environment.PublicURL;\n  return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(ports, 'public').map(function (port) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"a\", {\n      className: \"image-tag\",\n      href: \"http://\".concat(publicUrl || port.host, \":\").concat(port.public),\n      target: \"_blank\",\n      rel: \"noreferrer\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"i\", {\n        className: \"fa fa-external-link-alt\",\n        \"aria-hidden\": \"true\"\n      }), port.public, \":\", port.private]\n    }, \"\".concat(port.host, \":\").concat(port.public));\n  });\n}//# sourceURL=webpack-internal:///37205\n");

}),

19882:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"quickActions\": function() { return /* binding */ quickActions; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var _portainer_hooks_useCurrentEnvironment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/hooks/useCurrentEnvironment */ 4819);\n/* harmony import */ var _react_docker_containers_components_ContainerQuickActions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/docker/containers/components/ContainerQuickActions */ 67335);\n/* harmony import */ var _datatables_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/datatables/useZustandTableSettings */ 96276);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nvar quickActions = {\n  Header: '快速操作',\n  id: 'actions',\n  Cell: QuickActionsCell,\n  disableFilters: true,\n  disableSortBy: true,\n  canHide: true,\n  sortType: 'string',\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction QuickActionsCell(_ref) {\n  var container = _ref.row.original;\n  var environmentQuery = (0,_portainer_hooks_useCurrentEnvironment__WEBPACK_IMPORTED_MODULE_4__.useCurrentEnvironment)();\n  var environment = environmentQuery.data;\n  var offlineMode = !environment || (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__.isOfflineEndpoint)(environment);\n\n  var _useTableSettings = (0,_datatables_useZustandTableSettings__WEBPACK_IMPORTED_MODULE_6__.useTableSettings)(),\n      settings = _useTableSettings.settings;\n\n  var _settings$hiddenQuick = settings.hiddenQuickActions,\n      hiddenQuickActions = _settings$hiddenQuick === void 0 ? [] : _settings$hiddenQuick;\n  var wrapperState = {\n    showQuickActionAttach: !hiddenQuickActions.includes('attach'),\n    showQuickActionExec: !hiddenQuickActions.includes('exec'),\n    showQuickActionInspect: !hiddenQuickActions.includes('inspect'),\n    showQuickActionLogs: !hiddenQuickActions.includes('logs'),\n    showQuickActionStats: !hiddenQuickActions.includes('stats')\n  };\n  var someOn = wrapperState.showQuickActionAttach || wrapperState.showQuickActionExec || wrapperState.showQuickActionInspect || wrapperState.showQuickActionLogs || wrapperState.showQuickActionStats;\n  var isAuthorized = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__.useAuthorizations)(['DockerContainerStats', 'DockerContainerLogs', 'DockerExecStart', 'DockerContainerInspect', 'DockerTaskInspect', 'DockerTaskLogs']);\n\n  if (offlineMode || !someOn || !isAuthorized) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_react_docker_containers_components_ContainerQuickActions__WEBPACK_IMPORTED_MODULE_5__.ContainerQuickActions, {\n    containerId: container.Id,\n    nodeName: container.NodeName,\n    status: container.Status,\n    state: wrapperState\n  });\n}//# sourceURL=webpack-internal:///19882\n");

}),

32274:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stack\": function() { return /* binding */ stack; }\n/* harmony export */ });\nvar stack = {\n  Header: '堆栈',\n  accessor: function accessor(row) {\n    return row.StackName || '-';\n  },\n  id: 'stack',\n  sortType: 'string',\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///32274\n");

}),

48786:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"state\": function() { return /* binding */ state; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/docker/containers/types */ 56864);\n/* harmony import */ var _datatables_Filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/datatables/Filter */ 33513);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nvar state = {\n  Header: '状态',\n  accessor: 'Status',\n  id: 'state',\n  Cell: StatusCell,\n  sortType: 'string',\n  filter: 'multiple',\n  Filter: _datatables_Filter__WEBPACK_IMPORTED_MODULE_4__.DefaultFilter,\n  canHide: true\n};\n\nfunction StatusCell(_ref) {\n  var status = _ref.value;\n  var hasHealthCheck = [_react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Starting, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Healthy, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Unhealthy].includes(status);\n  var statusClassName = getClassName();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('label', \"label-\".concat(statusClassName), {\n      interactive: hasHealthCheck\n    }),\n    title: hasHealthCheck ? '该容器有一个健康检查' : '',\n    children: status\n  });\n\n  function getClassName() {\n    switch (status) {\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Paused:\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Starting:\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Unhealthy:\n        return 'warning';\n\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Created:\n        return 'info';\n\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Stopped:\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Dead:\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Exited:\n        return 'danger';\n\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Healthy:\n      case _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Running:\n      default:\n        return 'success';\n    }\n  }\n}//# sourceURL=webpack-internal:///48786\n");

}),

51539:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TRUNCATE_LENGTH\": function() { return /* binding */ TRUNCATE_LENGTH; },\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/components/datatables/types */ 16579);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nvar TRUNCATE_LENGTH = 32;\nfunction createStore(storageKey) {\n  return (0,zustand__WEBPACK_IMPORTED_MODULE_9__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_10__.persist)(function (set) {\n    return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.sortableSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.paginationSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.hiddenColumnsSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.refreshableSettings)(set)), {}, {\n      truncateContainerName: TRUNCATE_LENGTH,\n      setTruncateContainerName: function setTruncateContainerName(truncateContainerName) {\n        set({\n          truncateContainerName: truncateContainerName\n        });\n      },\n      hiddenQuickActions: [],\n      setHiddenQuickActions: function setHiddenQuickActions(hiddenQuickActions) {\n        return set({\n          hiddenQuickActions: hiddenQuickActions\n        });\n      }\n    });\n  }, {\n    name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)(storageKey)\n  }));\n}//# sourceURL=webpack-internal:///51539\n");

}),

23896:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ContainersDatatable": function() { return /* reexport safe */ _ContainersDatatable__WEBPACK_IMPORTED_MODULE_0__.ContainersDatatable; }
/* harmony export */ });
/* harmony import */ var _ContainersDatatable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContainersDatatable */ 17060);


}),

94956:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ListView\": function() { return /* binding */ ListView; }\n/* harmony export */ });\n/* harmony import */ var _docker_services_system_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/docker/services/system.service */ 30788);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _ContainersDatatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ContainersDatatable */ 23896);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction ListView(_ref) {\n  var environment = _ref.endpoint;\n  var isAgent = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_1__.isAgentEnvironment)(environment.Type);\n  var envInfoQuery = (0,_docker_services_system_service__WEBPACK_IMPORTED_MODULE_0__.useInfo)(environment.Id, function (info) {\n    var _info$Swarm;\n\n    return !!((_info$Swarm = info.Swarm) !== null && _info$Swarm !== void 0 && _info$Swarm.NodeID);\n  });\n  var isSwarmManager = !!envInfoQuery.data;\n  var isHostColumnVisible = isAgent && isSwarmManager;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_2__.PageHeader, {\n      title: \"\\u5BB9\\u5668\\u5217\\u8868\",\n      breadcrumbs: [{\n        label: '容器'\n      }],\n      reload: true\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_ContainersDatatable__WEBPACK_IMPORTED_MODULE_3__.ContainersDatatable, {\n      isHostColumnVisible: isHostColumnVisible,\n      environment: environment\n    })]\n  });\n}//# sourceURL=webpack-internal:///94956\n");

}),

54518:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ListView": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_0__.ListView; }
/* harmony export */ });
/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListView */ 94956);


}),

44528:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainerQuickActions\": function() { return /* binding */ ContainerQuickActions; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/docker/containers/types */ 56864);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _ContainerQuickActions_module_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ContainerQuickActions.module.css */ 77580);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nfunction ContainerQuickActions(_ref) {\n  var taskId = _ref.taskId,\n      containerId = _ref.containerId,\n      nodeName = _ref.nodeName,\n      state = _ref.state,\n      status = _ref.status;\n\n  if (taskId) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(TaskQuickActions, {\n      taskId: taskId,\n      state: state\n    });\n  }\n\n  var isActive = [_react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Starting, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Running, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Healthy, _react_docker_containers_types__WEBPACK_IMPORTED_MODULE_3__.ContainerStatus.Unhealthy].includes(status);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('space-x-1', _ContainerQuickActions_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].root),\n    children: [state.showQuickActionLogs && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerContainerLogs\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.containers.container.logs\",\n        params: {\n          id: containerId,\n          nodeName: nodeName\n        },\n        title: \"\\u65E5\\u5FD7\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"file-text\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    }), state.showQuickActionInspect && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerContainerInspect\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.containers.container.inspect\",\n        params: {\n          id: containerId,\n          nodeName: nodeName\n        },\n        title: \"\\u68C0\\u67E5\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"info\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    }), state.showQuickActionStats && isActive && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerContainerStats\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.containers.container.stats\",\n        params: {\n          id: containerId,\n          nodeName: nodeName\n        },\n        title: \"\\u72B6\\u6001\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"bar-chart\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    }), state.showQuickActionExec && isActive && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerExecStart\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.containers.container.exec\",\n        params: {\n          id: containerId,\n          nodeName: nodeName\n        },\n        title: \"\\u6267\\u884C\\u63A7\\u5236\\u53F0\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"terminal\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    }), state.showQuickActionAttach && isActive && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerContainerAttach\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.containers.container.attach\",\n        params: {\n          id: containerId,\n          nodeName: nodeName\n        },\n        title: \"\\u9644\\u52A0\\u63A7\\u5236\\u53F0\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"paperclip\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    })]\n  });\n}\n\nfunction TaskQuickActions(_ref2) {\n  var taskId = _ref2.taskId,\n      state = _ref2.state;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('space-x-1', _ContainerQuickActions_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].root),\n    children: [state.showQuickActionLogs && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerTaskLogs\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.tasks.task.logs\",\n        params: {\n          id: taskId\n        },\n        title: \"\\u65E5\\u5FD7\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"file-text\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    }), state.showQuickActionInspect && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.Authorized, {\n      authorizations: \"DockerTaskInspect\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n        to: \"docker.tasks.task\",\n        params: {\n          id: taskId\n        },\n        title: \"Inspect\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n          icon: \"info\",\n          feather: true,\n          className: \"space-right\"\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///44528\n");

}),

67335:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ContainerQuickActions": function() { return /* reexport safe */ _ContainerQuickActions__WEBPACK_IMPORTED_MODULE_0__.ContainerQuickActions; }
/* harmony export */ });
/* harmony import */ var _ContainerQuickActions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContainerQuickActions */ 44528);


}),

61838:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"startContainer\": function() { return /* binding */ startContainer; },\n/* harmony export */   \"stopContainer\": function() { return /* binding */ stopContainer; },\n/* harmony export */   \"restartContainer\": function() { return /* binding */ restartContainer; },\n/* harmony export */   \"killContainer\": function() { return /* binding */ killContainer; },\n/* harmony export */   \"pauseContainer\": function() { return /* binding */ pauseContainer; },\n/* harmony export */   \"resumeContainer\": function() { return /* binding */ resumeContainer; },\n/* harmony export */   \"renameContainer\": function() { return /* binding */ renameContainer; },\n/* harmony export */   \"removeContainer\": function() { return /* binding */ removeContainer; },\n/* harmony export */   \"urlBuilder\": function() { return /* binding */ urlBuilder; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/error */ 20023);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/docker/rest/response/handlers */ 12944);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\nfunction startContainer(_x, _x2) {\n  return _startContainer.apply(this, arguments);\n}\n\nfunction _startContainer() {\n  _startContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'start'), {}, {\n              transformResponse: _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_5__.genericHandler\n            });\n\n          case 2:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _startContainer.apply(this, arguments);\n}\n\nfunction stopContainer(_x3, _x4) {\n  return _stopContainer.apply(this, arguments);\n}\n\nfunction _stopContainer() {\n  _stopContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'stop'), {});\n\n          case 2:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n  return _stopContainer.apply(this, arguments);\n}\n\nfunction restartContainer(_x5, _x6) {\n  return _restartContainer.apply(this, arguments);\n}\n\nfunction _restartContainer() {\n  _restartContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'restart'), {});\n\n          case 2:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3);\n  }));\n  return _restartContainer.apply(this, arguments);\n}\n\nfunction killContainer(_x7, _x8) {\n  return _killContainer.apply(this, arguments);\n}\n\nfunction _killContainer() {\n  _killContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'kill'), {});\n\n          case 2:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4);\n  }));\n  return _killContainer.apply(this, arguments);\n}\n\nfunction pauseContainer(_x9, _x10) {\n  return _pauseContainer.apply(this, arguments);\n}\n\nfunction _pauseContainer() {\n  _pauseContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'pause'), {});\n\n          case 2:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5);\n  }));\n  return _pauseContainer.apply(this, arguments);\n}\n\nfunction resumeContainer(_x11, _x12) {\n  return _resumeContainer.apply(this, arguments);\n}\n\nfunction _resumeContainer() {\n  _resumeContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(endpointId, id) {\n    return regeneratorRuntime.wrap(function _callee6$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            _context6.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'unpause'), {});\n\n          case 2:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee6);\n  }));\n  return _resumeContainer.apply(this, arguments);\n}\n\nfunction renameContainer(_x13, _x14, _x15) {\n  return _renameContainer.apply(this, arguments);\n}\n\nfunction _renameContainer() {\n  _renameContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(endpointId, id, name) {\n    return regeneratorRuntime.wrap(function _callee7$(_context7) {\n      while (1) {\n        switch (_context7.prev = _context7.next) {\n          case 0:\n            _context7.next = 2;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post(urlBuilder(endpointId, id, 'rename'), {}, {\n              params: {\n                name: name\n              },\n              transformResponse: _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_5__.genericHandler\n            });\n\n          case 2:\n          case \"end\":\n            return _context7.stop();\n        }\n      }\n    }, _callee7);\n  }));\n  return _renameContainer.apply(this, arguments);\n}\n\nfunction removeContainer(_x16, _x17, _x18) {\n  return _removeContainer.apply(this, arguments);\n}\n\nfunction _removeContainer() {\n  _removeContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(endpointId, container, removeVolumes) {\n    var _yield$axios$delete, data;\n\n    return regeneratorRuntime.wrap(function _callee8$(_context8) {\n      while (1) {\n        switch (_context8.prev = _context8.next) {\n          case 0:\n            _context8.prev = 0;\n            _context8.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"][\"delete\"](urlBuilder(endpointId, container.Id), {\n              params: {\n                v: removeVolumes ? 1 : 0,\n                force: true\n              },\n              transformResponse: _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_5__.genericHandler\n            });\n\n          case 3:\n            _yield$axios$delete = _context8.sent;\n            data = _yield$axios$delete.data;\n\n            if (!(data && data.message)) {\n              _context8.next = 7;\n              break;\n            }\n\n            throw new _portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"](data.message);\n\n          case 7:\n            _context8.next = 12;\n            break;\n\n          case 9:\n            _context8.prev = 9;\n            _context8.t0 = _context8[\"catch\"](0);\n            throw new _portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('无法删除容器', _context8.t0);\n\n          case 12:\n          case \"end\":\n            return _context8.stop();\n        }\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n  return _removeContainer.apply(this, arguments);\n}\n\nfunction urlBuilder(endpointId, id, action) {\n  var url = \"/endpoints/\".concat(endpointId, \"/docker/containers\");\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///61838\n");

}),

86781:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useContainers\": function() { return /* binding */ useContainers; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _containers_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../containers.service */ 61838);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ 77070);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./query-keys */ 64639);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\nfunction useContainers(environmentId) {\n  var all = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  var filters = arguments.length > 2 ? arguments[2] : undefined;\n  var autoRefreshRate = arguments.length > 3 ? arguments[3] : undefined;\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_8__.queryKeys.filters(environmentId, all, filters), function () {\n    return getContainers(environmentId, all, filters);\n  }, {\n    meta: {\n      title: 'Failure',\n      message: 'Unable to retrieve containers'\n    },\n    refetchInterval: function refetchInterval() {\n      return autoRefreshRate !== null && autoRefreshRate !== void 0 ? autoRefreshRate : false;\n    }\n  });\n}\n\nfunction getContainers(_x) {\n  return _getContainers.apply(this, arguments);\n}\n\nfunction _getContainers() {\n  _getContainers = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId) {\n    var all,\n        filters,\n        _yield$axios$get,\n        data,\n        _args = arguments;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            all = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;\n            filters = _args.length > 2 ? _args[2] : undefined;\n            _context.prev = 2;\n            _context.next = 5;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__[\"default\"].get((0,_containers_service__WEBPACK_IMPORTED_MODULE_6__.urlBuilder)(environmentId, undefined, 'json'), {\n              params: {\n                all: all,\n                filters: filters && JSON.stringify(filters)\n              }\n            });\n\n          case 5:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data.map(function (c) {\n              return (0,_utils__WEBPACK_IMPORTED_MODULE_7__.parseViewModel)(c);\n            }));\n\n          case 10:\n            _context.prev = 10;\n            _context.t0 = _context[\"catch\"](2);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__.parseAxiosError)(_context.t0, 'Unable to retrieve containers');\n\n          case 13:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[2, 10]]);\n  }));\n  return _getContainers.apply(this, arguments);\n}//# sourceURL=webpack-internal:///86781\n");

}),

83510:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useContainerGpus\": function() { return /* binding */ useContainerGpus; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./query-keys */ 64639);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\nfunction getContainerGpus(_x, _x2) {\n  return _getContainerGpus.apply(this, arguments);\n}\n\nfunction _getContainerGpus() {\n  _getContainerGpus = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, containerId) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__[\"default\"].get(\"/docker/\".concat(environmentId, \"/containers/\").concat(containerId, \"/gpus\"));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data.gpus);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_5__.parseAxiosError)(_context.t0);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getContainerGpus.apply(this, arguments);\n}\n\nfunction useContainerGpus(environmentId, containerId) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_6__.queryKeys.gpus(environmentId, containerId), function () {\n    return getContainerGpus(environmentId, containerId);\n  });\n}//# sourceURL=webpack-internal:///83510\n");

}),

64639:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"queryKeys\": function() { return /* binding */ queryKeys; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _queries_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../queries/utils */ 50443);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nvar queryKeys = {\n  list: function list(environmentId) {\n    return [_queries_utils__WEBPACK_IMPORTED_MODULE_12__.queryKeys.root(environmentId), 'containers'];\n  },\n  filters: function filters(environmentId, all, _filters) {\n    return [].concat(_toConsumableArray(queryKeys.list(environmentId)), [{\n      all: all,\n      filters: _filters\n    }]);\n  },\n  container: function container(environmentId, id) {\n    return [].concat(_toConsumableArray(queryKeys.list(environmentId)), [id]);\n  },\n  gpus: function gpus(environmentId, id) {\n    return [].concat(_toConsumableArray(queryKeys.container(environmentId, id)), ['gpus']);\n  }\n};//# sourceURL=webpack-internal:///64639\n");

}),

56864:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainerStatus\": function() { return /* binding */ ContainerStatus; }\n/* harmony export */ });\nvar ContainerStatus;\n\n(function (ContainerStatus) {\n  ContainerStatus[\"Paused\"] = \"\\u6682\\u505C\";\n  ContainerStatus[\"Stopped\"] = \"\\u505C\\u6B62\";\n  ContainerStatus[\"Created\"] = \"\\u521B\\u5EFA\";\n  ContainerStatus[\"Healthy\"] = \"healthy\";\n  ContainerStatus[\"Unhealthy\"] = \"unhealthy\";\n  ContainerStatus[\"Starting\"] = \"\\u542F\\u52A8\\u4E2D\";\n  ContainerStatus[\"Running\"] = \"running\";\n  ContainerStatus[\"Dead\"] = \"dead\";\n  ContainerStatus[\"Exited\"] = \"exited\";\n})(ContainerStatus || (ContainerStatus = {}));//# sourceURL=webpack-internal:///56864\n");

}),

77070:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parseViewModel\": function() { return /* binding */ parseViewModel; },\n/* harmony export */   \"useShowGPUsColumn\": function() { return /* binding */ useShowGPUsColumn; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _docker_services_system_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/docker/services/system.service */ 30788);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./types */ 56864);\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\nfunction parseViewModel(response) {\n  var _response$Portainer, _response$Portainer2, _response$Portainer3, _response$Portainer3$, _Object$values$, _response$NetworkSett, _response$Ports;\n\n  var resourceControl = ((_response$Portainer = response.Portainer) === null || _response$Portainer === void 0 ? void 0 : _response$Portainer.ResourceControl) && new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_13__.ResourceControlViewModel(response === null || response === void 0 ? void 0 : (_response$Portainer2 = response.Portainer) === null || _response$Portainer2 === void 0 ? void 0 : _response$Portainer2.ResourceControl);\n  var nodeName = ((_response$Portainer3 = response.Portainer) === null || _response$Portainer3 === void 0 ? void 0 : (_response$Portainer3$ = _response$Portainer3.Agent) === null || _response$Portainer3$ === void 0 ? void 0 : _response$Portainer3$.NodeName) || '';\n  var ip = ((_Object$values$ = Object.values((response === null || response === void 0 ? void 0 : (_response$NetworkSett = response.NetworkSettings) === null || _response$NetworkSett === void 0 ? void 0 : _response$NetworkSett.Networks) || {})[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.IPAddress) || '';\n  var labels = response.Labels || {};\n  var stackName = labels['com.docker.compose.project'] || labels['com.docker.stack.namespace'];\n  var status = createStatus(response.Status);\n\n  var ports = lodash_compact__WEBPACK_IMPORTED_MODULE_7___default()((_response$Ports = response.Ports) === null || _response$Ports === void 0 ? void 0 : _response$Ports.map(function (p) {\n    return p.PublicPort && {\n      host: p.IP,\n      private: p.PrivatePort,\n      public: p.PublicPort\n    };\n  }));\n\n  return _objectSpread(_objectSpread({}, response), {}, {\n    ResourceControl: resourceControl,\n    NodeName: nodeName,\n    IP: ip,\n    StackName: stackName,\n    Status: status,\n    Ports: ports,\n    StatusText: response.Status,\n    Gpus: ''\n  });\n}\n\nfunction createStatus() {\n  var statusText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var status = statusText.toLowerCase();\n\n  if (status.includes(_types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Paused)) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Paused;\n  }\n\n  if (status.includes(_types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Dead)) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Dead;\n  }\n\n  if (status.includes(_types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Created)) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Created;\n  }\n\n  if (status.includes(_types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Stopped)) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Stopped;\n  }\n\n  if (status.includes(_types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Exited)) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Exited;\n  }\n\n  if (status.includes('(healthy)')) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Healthy;\n  }\n\n  if (status.includes('(unhealthy)')) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Unhealthy;\n  }\n\n  if (status.includes('(health: starting)')) {\n    return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Starting;\n  }\n\n  return _types__WEBPACK_IMPORTED_MODULE_14__.ContainerStatus.Running;\n}\n\nfunction useShowGPUsColumn(environmentID) {\n  var envInfoQuery = (0,_docker_services_system_service__WEBPACK_IMPORTED_MODULE_12__.useInfo)(environmentID, function (info) {\n    var _info$Swarm, _info$Swarm2;\n\n    return !!((_info$Swarm = info.Swarm) !== null && _info$Swarm !== void 0 && _info$Swarm.NodeID) && !!((_info$Swarm2 = info.Swarm) !== null && _info$Swarm2 !== void 0 && _info$Swarm2.ControlAvailable);\n  });\n  return envInfoQuery.data !== true && !envInfoQuery.isLoading;\n}//# sourceURL=webpack-internal:///77070\n");

}),

87026:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemView\": function() { return /* binding */ ItemView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/portainer/hooks/useEnvironmentId */ 45588);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _react_portainer_access_control_AccessControlPanel_AccessControlPanel__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @/react/portainer/access-control/AccessControlPanel/AccessControlPanel */ 60113);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var _react_docker_containers_queries_containers__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/react/docker/containers/queries/containers */ 86781);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../queries */ 29230);\n/* harmony import */ var _network_helper__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../network.helper */ 38548);\n/* harmony import */ var _NetworkDetailsTable__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./NetworkDetailsTable */ 11376);\n/* harmony import */ var _NetworkOptionsTable__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./NetworkOptionsTable */ 77154);\n/* harmony import */ var _NetworkContainersTable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./NetworkContainersTable */ 56947);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ItemView() {\n  var _network$Portainer;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_21__.useRouter)();\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_22__.useQueryClient)();\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_20__.useState)([]),\n      _useState2 = _slicedToArray(_useState, 2),\n      networkContainers = _useState2[0],\n      setNetworkContainers = _useState2[1];\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_21__.useCurrentStateAndParams)(),\n      _useCurrentStateAndPa2 = _useCurrentStateAndPa.params,\n      networkId = _useCurrentStateAndPa2.id,\n      nodeName = _useCurrentStateAndPa2.nodeName;\n\n  var environmentId = (0,_portainer_hooks_useEnvironmentId__WEBPACK_IMPORTED_MODULE_23__.useEnvironmentId)();\n  var networkQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_30__.useNetwork)(environmentId, networkId);\n  var deleteNetworkMutation = (0,_queries__WEBPACK_IMPORTED_MODULE_30__.useDeleteNetwork)();\n  var filters = {\n    network: [networkId]\n  };\n  var containersQuery = (0,_react_docker_containers_queries_containers__WEBPACK_IMPORTED_MODULE_28__.useContainers)(environmentId, true, filters);\n  (0,react__WEBPACK_IMPORTED_MODULE_20__.useEffect)(function () {\n    if (networkQuery.data && containersQuery.data) {\n      setNetworkContainers(filterContainersInNetwork(networkQuery.data, containersQuery.data));\n    }\n  }, [networkQuery.data, containersQuery.data]);\n\n  if (!networkQuery.data) {\n    return null;\n  }\n\n  var network = networkQuery.data;\n  var resourceControl = (_network$Portainer = network.Portainer) !== null && _network$Portainer !== void 0 && _network$Portainer.ResourceControl ? new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_27__.ResourceControlViewModel(network.Portainer.ResourceControl) : undefined;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_29__.PageHeader, {\n      title: \"\\u7F51\\u7EDC\\u8BE6\\u60C5\",\n      breadcrumbs: [{\n        link: 'docker.networks',\n        label: '网络'\n      }, {\n        link: 'docker.networks.network',\n        label: networkQuery.data.Name\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_NetworkDetailsTable__WEBPACK_IMPORTED_MODULE_32__.NetworkDetailsTable, {\n      network: networkQuery.data,\n      onRemoveNetworkClicked: onRemoveNetworkClicked\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_react_portainer_access_control_AccessControlPanel_AccessControlPanel__WEBPACK_IMPORTED_MODULE_25__.AccessControlPanel, {\n      onUpdateSuccess: function onUpdateSuccess() {\n        return queryClient.invalidateQueries(['environments', environmentId, 'docker', 'networks', networkId]);\n      },\n      resourceControl: resourceControl,\n      resourceType: _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_26__.ResourceControlType.Network,\n      disableOwnershipChange: (0,_network_helper__WEBPACK_IMPORTED_MODULE_31__.isSystemNetwork)(networkQuery.data.Name),\n      resourceId: networkId,\n      environmentId: environmentId\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_NetworkOptionsTable__WEBPACK_IMPORTED_MODULE_33__.NetworkOptionsTable, {\n      options: networkQuery.data.Options\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_NetworkContainersTable__WEBPACK_IMPORTED_MODULE_34__.NetworkContainersTable, {\n      networkContainers: networkContainers,\n      nodeName: nodeName,\n      environmentId: environmentId,\n      networkId: networkId\n    })]\n  });\n\n  function onRemoveNetworkClicked() {\n    return _onRemoveNetworkClicked.apply(this, arguments);\n  }\n\n  function _onRemoveNetworkClicked() {\n    _onRemoveNetworkClicked = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var message, confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              message = '是否要删除网络？';\n              _context.next = 3;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_24__.confirmDeletionAsync)(message);\n\n            case 3:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                deleteNetworkMutation.mutate({\n                  environmentId: environmentId,\n                  networkId: networkId\n                }, {\n                  onSuccess: function onSuccess() {\n                    router.stateService.go('docker.networks');\n                  }\n                });\n              }\n\n            case 5:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _onRemoveNetworkClicked.apply(this, arguments);\n  }\n\n  function filterContainersInNetwork(network, containers) {\n    var containersInNetwork = lodash_compact__WEBPACK_IMPORTED_MODULE_17___default()(containers.map(function (container) {\n      var containerInNetworkResponse = network.Containers[container.Id];\n\n      if (containerInNetworkResponse) {\n        var containerInNetwork = _objectSpread(_objectSpread({}, containerInNetworkResponse), {}, {\n          Id: container.Id\n        });\n\n        return containerInNetwork;\n      }\n\n      return null;\n    }));\n\n    return containersInNetwork;\n  }\n}//# sourceURL=webpack-internal:///87026\n");

}),

56947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NetworkContainersTable\": function() { return /* binding */ NetworkContainersTable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _DetailsTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/DetailsTable */ 68710);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../queries */ 29230);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nvar tableHeaders = ['容器名称', 'IPv4 地址', 'IPv6 地址', 'Mac地址', '操作'];\nfunction NetworkContainersTable(_ref) {\n  var networkContainers = _ref.networkContainers,\n      nodeName = _ref.nodeName,\n      environmentId = _ref.environmentId,\n      networkId = _ref.networkId;\n  var disconnectContainer = (0,_queries__WEBPACK_IMPORTED_MODULE_7__.useDisconnectContainer)();\n\n  if (networkContainers.length === 0) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n      className: \"col-lg-12 col-md-12 col-xs-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_3__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_3__.TableTitle, {\n          label: \"\\u7F51\\u7EDC\\u4E2D\\u7684\\u5BB9\\u5668\",\n          icon: \"server\",\n          featherIcon: true\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_3__.Table, {\n          className: \"nopadding\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_4__.DetailsTable, {\n            headers: tableHeaders,\n            dataCy: \"networkDetails-networkContainers\",\n            children: networkContainers.map(function (container) {\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"tr\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"td\", {\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_6__.Link, {\n                    to: \"docker.containers.container\",\n                    params: {\n                      id: container.Id,\n                      nodeName: nodeName\n                    },\n                    title: container.Name,\n                    children: container.Name\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"td\", {\n                  children: container.IPv4Address || '-'\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"td\", {\n                  children: container.IPv6Address || '-'\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"td\", {\n                  children: container.MacAddress || '-'\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"td\", {\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.Authorized, {\n                    authorizations: \"DockerNetworkDisconnect\",\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_5__.Button, {\n                      \"data-cy\": \"networkDetails-disconnect\".concat(container.Name),\n                      size: \"xsmall\",\n                      color: \"dangerlight\",\n                      onClick: function onClick() {\n                        if (container.Id) {\n                          disconnectContainer.mutate({\n                            containerId: container.Id,\n                            environmentId: environmentId,\n                            networkId: networkId\n                          });\n                        }\n                      },\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_2__.Icon, {\n                        icon: \"trash-2\",\n                        feather: true,\n                        \"class-name\": \"icon-secondary icon-md\"\n                      }), \"\\u65AD\\u5F00\\u7F51\\u7EDC\"]\n                    })\n                  })\n                })]\n              }, container.Id);\n            })\n          })\n        })]\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///56947\n");

}),

11376:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NetworkDetailsTable\": function() { return /* binding */ NetworkDetailsTable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/docker/helpers/networkHelper */ 69452);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _DetailsTable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/DetailsTable */ 68710);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _network_helper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../network.helper */ 38548);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NetworkDetailsTable(_ref) {\n  var _network$IPAM, _network$IPAM2;\n\n  var network = _ref.network,\n      onRemoveNetworkClicked = _ref.onRemoveNetworkClicked;\n  var allowRemoveNetwork = !(0,_network_helper__WEBPACK_IMPORTED_MODULE_10__.isSystemNetwork)(network.Name);\n  var ipv4Configs = _docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getIPV4Configs((_network$IPAM = network.IPAM) === null || _network$IPAM === void 0 ? void 0 : _network$IPAM.Config);\n  var ipv6Configs = _docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getIPV6Configs((_network$IPAM2 = network.IPAM) === null || _network$IPAM2 === void 0 ? void 0 : _network$IPAM2.Config);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(\"div\", {\n      className: \"col-lg-12 col-md-12 col-xs-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_6__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_6__.TableTitle, {\n          label: \"\\u7F51\\u7EDC\\u8BE6\\u60C5\",\n          icon: \"share-2\",\n          featherIcon: true\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_6__.Table, {\n          className: \"nopadding\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable, {\n            dataCy: \"networkDetails-detailsTable\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"\\u540D\\u79F0\",\n              children: network.Name\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"Id\",\n              children: [network.Id, allowRemoveNetwork && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_5__.Authorized, {\n                authorizations: \"DockerNetworkDelete\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_8__.Button, {\n                  \"data-cy\": \"networkDetails-deleteNetwork\",\n                  size: \"xsmall\",\n                  color: \"danger\",\n                  onClick: function onClick() {\n                    return onRemoveNetworkClicked();\n                  },\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_9__.Icon, {\n                    icon: \"trash-2\",\n                    feather: true,\n                    className: \"space-right\",\n                    \"aria-hidden\": \"true\"\n                  }), \"\\u5220\\u9664\\u6B64\\u7F51\\u7EDC\"]\n                })\n              })]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"\\u9A71\\u52A8\\u7A0B\\u5E8F\",\n              children: network.Driver\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"\\u8303\\u56F4\",\n              children: network.Scope\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"\\u53EF\\u9644\\u52A0\\u7684\",\n              children: String(network.Attachable)\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n              label: \"\\u5185\\u90E8\",\n              children: String(network.Internal)\n            }), ipv4Configs.map(function (config) {\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n                  label: \"IPV4 \\u5B50\\u7F51\".concat(getConfigDetails(config.Subnet)),\n                  children: \"IPV4 \\u7F51\\u5173\".concat(getConfigDetails(config.Gateway))\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n                  label: \"IPV4 IP \\u8303\\u56F4\".concat(getConfigDetails(config.IPRange)),\n                  children: \"IPV4 \\u6392\\u9664\\u7684IP\".concat(getAuxiliaryAddresses(config.AuxiliaryAddresses))\n                })]\n              }, config.Subnet);\n            }), ipv6Configs.map(function (config) {\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n                  label: \"IPV6 Subnet\".concat(getConfigDetails(config.Subnet)),\n                  children: \"IPV6 Gateway\".concat(getConfigDetails(config.Gateway))\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_7__.DetailsTable.Row, {\n                  label: \"IPV6 IP Range\".concat(getConfigDetails(config.IPRange)),\n                  children: \"IPV6 Excluded IPs\".concat(getAuxiliaryAddresses(config.AuxiliaryAddresses))\n                })]\n              }, config.Subnet);\n            })]\n          })\n        })]\n      })\n    })\n  });\n\n  function getConfigDetails(configValue) {\n    return configValue ? \" - \".concat(configValue) : '';\n  }\n\n  function getAuxiliaryAddresses(auxiliaryAddresses) {\n    return auxiliaryAddresses ? \" - \".concat(Object.values(auxiliaryAddresses).join(' - ')) : '';\n  }\n}//# sourceURL=webpack-internal:///11376\n");

}),

77154:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NetworkOptionsTable\": function() { return /* binding */ NetworkOptionsTable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _DetailsTable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/DetailsTable */ 68710);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NetworkOptionsTable(_ref) {\n  var options = _ref.options;\n  var networkEntries = Object.entries(options);\n\n  if (networkEntries.length === 0) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n      className: \"col-lg-12 col-md-12 col-xs-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_13__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_13__.TableTitle, {\n          label: \"\\u7F51\\u7EDC\\u9009\\u9879\",\n          icon: \"share-2\",\n          featherIcon: true\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_13__.Table, {\n          className: \"nopadding\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_14__.DetailsTable, {\n            dataCy: \"networkDetails-networkOptionsTable\",\n            children: networkEntries.map(function (_ref2) {\n              var _ref3 = _slicedToArray(_ref2, 2),\n                  key = _ref3[0],\n                  value = _ref3[1];\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_DetailsTable__WEBPACK_IMPORTED_MODULE_14__.DetailsTable.Row, {\n                label: key,\n                children: value\n              }, key);\n            })\n          })\n        })]\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///77154\n");

}),

96156:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ItemView": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_0__.ItemView; }
/* harmony export */ });
/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemView */ 87026);


}),

38548:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isSystemNetwork\": function() { return /* binding */ isSystemNetwork; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n\nvar systemNetworks = ['host', 'bridge', 'ingress', 'nat', 'none'];\nfunction isSystemNetwork(networkName) {\n  return systemNetworks.includes(networkName);\n}//# sourceURL=webpack-internal:///38548\n");

}),

31646:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getNetwork\": function() { return /* binding */ getNetwork; },\n/* harmony export */   \"deleteNetwork\": function() { return /* binding */ deleteNetwork; },\n/* harmony export */   \"disconnectContainer\": function() { return /* binding */ disconnectContainer; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getNetwork(_x, _x2) {\n  return _getNetwork.apply(this, arguments);\n}\n\nfunction _getNetwork() {\n  _getNetwork = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, networkId) {\n    var _yield$axios$get, network;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(environmentId, networkId));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            network = _yield$axios$get.data;\n            return _context.abrupt(\"return\", network);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve network details');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getNetwork.apply(this, arguments);\n}\n\nfunction deleteNetwork(_x3, _x4) {\n  return _deleteNetwork.apply(this, arguments);\n}\n\nfunction _deleteNetwork() {\n  _deleteNetwork = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, networkId) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"][\"delete\"](buildUrl(environmentId, networkId));\n\n          case 3:\n            return _context2.abrupt(\"return\", networkId);\n\n          case 6:\n            _context2.prev = 6;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to remove network');\n\n          case 9:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n  return _deleteNetwork.apply(this, arguments);\n}\n\nfunction disconnectContainer(_x5, _x6, _x7) {\n  return _disconnectContainer.apply(this, arguments);\n}\n\nfunction _disconnectContainer() {\n  _disconnectContainer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(environmentId, networkId, containerId) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(buildUrl(environmentId, networkId, 'disconnect'), {\n              Container: containerId,\n              Force: false\n            });\n\n          case 3:\n            return _context3.abrupt(\"return\", {\n              networkId: networkId,\n              environmentId: environmentId\n            });\n\n          case 6:\n            _context3.prev = 6;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context3.t0, 'Unable to disconnect container from network');\n\n          case 9:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n  return _disconnectContainer.apply(this, arguments);\n}\n\nfunction buildUrl(environmentId, networkId, action) {\n  var url = \"endpoints/\".concat(environmentId, \"/docker/networks\");\n\n  if (networkId) {\n    url += \"/\".concat(networkId);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///31646\n");

}),

29230:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useNetwork\": function() { return /* binding */ useNetwork; },\n/* harmony export */   \"useDeleteNetwork\": function() { return /* binding */ useDeleteNetwork; },\n/* harmony export */   \"useDisconnectContainer\": function() { return /* binding */ useDisconnectContainer; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _network_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./network.service */ 31646);\n\n\n\nfunction useNetwork(environmentId, networkId) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', environmentId, 'docker', 'networks', networkId], function () {\n    return (0,_network_service__WEBPACK_IMPORTED_MODULE_2__.getNetwork)(environmentId, networkId);\n  }, {\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to get network');\n    }\n  });\n}\nfunction useDeleteNetwork() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useMutation)(function (_ref) {\n    var environmentId = _ref.environmentId,\n        networkId = _ref.networkId;\n    return (0,_network_service__WEBPACK_IMPORTED_MODULE_2__.deleteNetwork)(environmentId, networkId);\n  }, {\n    onSuccess: function onSuccess(networkId) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.success)('Network successfully removed', networkId);\n    },\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to remove network');\n    }\n  });\n}\nfunction useDisconnectContainer() {\n  var client = (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useMutation)(function (_ref2) {\n    var containerId = _ref2.containerId,\n        environmentId = _ref2.environmentId,\n        networkId = _ref2.networkId;\n    return (0,_network_service__WEBPACK_IMPORTED_MODULE_2__.disconnectContainer)(environmentId, networkId, containerId);\n  }, {\n    onSuccess: function onSuccess(_ref3) {\n      var networkId = _ref3.networkId,\n          environmentId = _ref3.environmentId;\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.success)('Container successfully disconnected', networkId);\n      return client.invalidateQueries(['environments', environmentId, 'docker', 'networks', networkId]);\n    },\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to disconnect container from network');\n    }\n  });\n}//# sourceURL=webpack-internal:///29230\n");

}),

50443:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"queryKeys\": function() { return /* binding */ queryKeys; }\n/* harmony export */ });\nvar queryKeys = {\n  root: function root(environmentId) {\n    return ['docker', environmentId];\n  }\n};//# sourceURL=webpack-internal:///50443\n");

}),

50087:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StackContainersDatatable\": function() { return /* binding */ StackContainersDatatable; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _react_docker_containers_ListView_ContainersDatatable_datatable_store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/docker/containers/ListView/ContainersDatatable/datatable-store */ 51539);\n/* harmony import */ var _react_docker_containers_ListView_ContainersDatatable_columns__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/docker/containers/ListView/ContainersDatatable/columns */ 67293);\n/* harmony import */ var _react_docker_containers_ListView_ContainersDatatable_ContainersDatatableActions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableActions */ 65949);\n/* harmony import */ var _react_docker_containers_ListView_ContainersDatatable_ContainersDatatableSettings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableSettings */ 55892);\n/* harmony import */ var _react_docker_containers_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react/docker/containers/utils */ 77070);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/datatables/QuickActionsSettings */ 7763);\n/* harmony import */ var _datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/datatables/ColumnVisibilityMenu */ 2294);\n/* harmony import */ var _containers_queries_containers__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../containers/queries/containers */ 86781);\n/* harmony import */ var _containers_ListView_ContainersDatatable_RowContext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../containers/ListView/ContainersDatatable/RowContext */ 30516);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar storageKey = 'stack-containers';\nvar useStore = (0,_react_docker_containers_ListView_ContainersDatatable_datatable_store__WEBPACK_IMPORTED_MODULE_6__.createStore)(storageKey);\nvar actions = [(0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.buildAction)('logs', 'Logs'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.buildAction)('inspect', 'Inspect'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.buildAction)('stats', 'Stats'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.buildAction)('exec', 'Console'), (0,_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.buildAction)('attach', 'Attach')];\nfunction StackContainersDatatable(_ref) {\n  var environment = _ref.environment,\n      stackName = _ref.stackName;\n  var settings = useStore();\n  var isGPUsColumnVisible = (0,_react_docker_containers_utils__WEBPACK_IMPORTED_MODULE_10__.useShowGPUsColumn)(environment.Id);\n  var columns = (0,_react_docker_containers_ListView_ContainersDatatable_columns__WEBPACK_IMPORTED_MODULE_7__.useColumns)(false, isGPUsColumnVisible);\n\n  var hidableColumns = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(columns.filter(function (col) {\n    return col.canHide;\n  }).map(function (col) {\n    return col.id;\n  }));\n\n  var containersQuery = (0,_containers_queries_containers__WEBPACK_IMPORTED_MODULE_14__.useContainers)(environment.Id, true, {\n    label: [\"com.docker.compose.project=\".concat(stackName)]\n  }, settings.autoRefreshRate * 1000);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_containers_ListView_ContainersDatatable_RowContext__WEBPACK_IMPORTED_MODULE_15__.RowProvider, {\n    context: {\n      environment: environment\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_11__.Datatable, {\n      titleOptions: {\n        icon: 'fa-cubes',\n        title: '容器'\n      },\n      settingsStore: settings,\n      columns: columns,\n      renderTableActions: function renderTableActions(selectedRows) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_react_docker_containers_ListView_ContainersDatatable_ContainersDatatableActions__WEBPACK_IMPORTED_MODULE_8__.ContainersDatatableActions, {\n          selectedItems: selectedRows,\n          isAddActionVisible: false,\n          endpointId: environment.Id\n        });\n      },\n      initialTableState: {\n        hiddenColumns: settings.hiddenColumns\n      },\n      renderTableSettings: function renderTableSettings(tableInstance) {\n        var columnsToHide = tableInstance.allColumns.filter(function (colInstance) {\n          return hidableColumns === null || hidableColumns === void 0 ? void 0 : hidableColumns.includes(colInstance.id);\n        });\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables_ColumnVisibilityMenu__WEBPACK_IMPORTED_MODULE_13__.ColumnVisibilityMenu, {\n            columns: columnsToHide,\n            onChange: function onChange(hiddenColumns) {\n              settings.setHiddenColumns(hiddenColumns);\n              tableInstance.setHiddenColumns(hiddenColumns);\n            },\n            value: settings.hiddenColumns\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_11__.TableSettingsMenu, {\n            quickActions: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_datatables_QuickActionsSettings__WEBPACK_IMPORTED_MODULE_12__.QuickActionsSettings, {\n              actions: actions\n            }),\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_react_docker_containers_ListView_ContainersDatatable_ContainersDatatableSettings__WEBPACK_IMPORTED_MODULE_9__.ContainersDatatableSettings, {\n              settings: settings\n            })\n          })]\n        });\n      },\n      storageKey: storageKey,\n      dataset: containersQuery.data || [],\n      isLoading: containersQuery.isLoading,\n      emptyContentLabel: \"\\u672A\\u627E\\u5230\\u5BB9\\u5668\"\n    })\n  });\n}//# sourceURL=webpack-internal:///50087\n");

}),

62118:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StackType\": function() { return /* binding */ StackType; },\n/* harmony export */   \"StackStatus\": function() { return /* binding */ StackStatus; }\n/* harmony export */ });\nvar StackType;\n\n(function (StackType) {\n  StackType[StackType[\"DockerSwarm\"] = 1] = \"DockerSwarm\";\n  StackType[StackType[\"DockerCompose\"] = 2] = \"DockerCompose\";\n  StackType[StackType[\"Kubernetes\"] = 3] = \"Kubernetes\";\n  StackType[StackType[\"Nomad\"] = 4] = \"Nomad\";\n})(StackType || (StackType = {}));\n\nvar StackStatus;\n\n(function (StackStatus) {\n  StackStatus[StackStatus[\"Active\"] = 1] = \"Active\";\n  StackStatus[StackStatus[\"Inactive\"] = 2] = \"Inactive\";\n})(StackStatus || (StackStatus = {}));//# sourceURL=webpack-internal:///62118\n");

}),

2471:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeGroupsSelector\": function() { return /* binding */ EdgeGroupsSelector; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction EdgeGroupsSelector(_ref) {\n  var items = _ref.items,\n      value = _ref.value,\n      _onChange = _ref.onChange;\n\n  var valueGroups = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(value.map(function (id) {\n    return items.find(function (item) {\n      return item.Id === id;\n    });\n  }));\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_4__.Select, {\n    \"aria-label\": \"Edge groups\",\n    options: items,\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(item) {\n      return item.Name;\n    },\n    getOptionValue: function getOptionValue(item) {\n      return String(item.Id);\n    },\n    value: valueGroups,\n    onChange: function onChange(value) {\n      _onChange(value.map(function (item) {\n        return item.Id;\n      }));\n    },\n    placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u7EC4\",\n    closeMenuOnSelect: false\n  });\n}//# sourceURL=webpack-internal:///2471\n");

}),

59062:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeScriptForm\": function() { return /* binding */ EdgeScriptForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _OsSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OsSelector */ 45809);\n/* harmony import */ var _ScriptTabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ScriptTabs */ 70186);\n/* harmony import */ var _EdgeScriptSettingsFieldset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./EdgeScriptSettingsFieldset */ 54394);\n/* harmony import */ var _EdgeScriptForm_validation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./EdgeScriptForm.validation */ 6359);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nvar edgePropertiesFormInitialValues = {\n  allowSelfSignedCertificates: true,\n  envVars: '',\n  os: 'linux',\n  platform: 'k8s',\n  nomadToken: '',\n  authEnabled: true\n};\nfunction EdgeScriptForm(_ref) {\n  var edgeInfo = _ref.edgeInfo,\n      commands = _ref.commands,\n      isNomadTokenVisible = _ref.isNomadTokenVisible;\n  var showOsSelector = !(commands instanceof Array);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n    className: \"form-horizontal\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(formik__WEBPACK_IMPORTED_MODULE_3__.Formik, {\n      initialValues: edgePropertiesFormInitialValues,\n      validationSchema: function validationSchema() {\n        return (0,_EdgeScriptForm_validation__WEBPACK_IMPORTED_MODULE_7__.validationSchema)(isNomadTokenVisible);\n      },\n      onSubmit: function onSubmit() {},\n      children: function children(_ref2) {\n        var values = _ref2.values,\n            setFieldValue = _ref2.setFieldValue;\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_EdgeScriptSettingsFieldset__WEBPACK_IMPORTED_MODULE_6__.EdgeScriptSettingsFieldset, {\n            isNomadTokenVisible: isNomadTokenVisible && values.platform === 'nomad',\n            hideIdGetter: edgeInfo.id !== undefined\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n            className: \"mt-8\",\n            children: [showOsSelector && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_OsSelector__WEBPACK_IMPORTED_MODULE_4__.OsSelector, {\n              value: values.os,\n              onChange: function onChange(value) {\n                return setFieldValue('os', value);\n              }\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_ScriptTabs__WEBPACK_IMPORTED_MODULE_5__.ScriptTabs, {\n              edgeId: edgeInfo.id,\n              edgeKey: edgeInfo.key,\n              values: values,\n              commands: showOsSelector ? commands[values.os] || [] : commands,\n              platform: values.platform,\n              onPlatformChange: function onPlatformChange(platform) {\n                return setFieldValue('platform', platform);\n              }\n            })]\n          })]\n        });\n      }\n    })\n  });\n}//# sourceURL=webpack-internal:///59062\n");

}),

6359:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _NomadTokenField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./NomadTokenField */ 93110);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction validationSchema(isNomadTokenVisible) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_7__.object)().shape(_objectSpread({\n    allowSelfSignedCertificates: (0,yup__WEBPACK_IMPORTED_MODULE_7__.boolean)(),\n    envVars: (0,yup__WEBPACK_IMPORTED_MODULE_7__.string)()\n  }, isNomadTokenVisible ? (0,_NomadTokenField__WEBPACK_IMPORTED_MODULE_8__.validation)() : {}));\n}//# sourceURL=webpack-internal:///6359\n");

}),

54394:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeScriptSettingsFieldset\": function() { return /* binding */ EdgeScriptSettingsFieldset; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _NomadTokenField__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./NomadTokenField */ 93110);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EdgeScriptSettingsFieldset(_ref) {\n  var isNomadTokenVisible = _ref.isNomadTokenVisible,\n      hideIdGetter = _ref.hideIdGetter;\n\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_4__.useFormikContext)(),\n      values = _useFormikContext.values,\n      setFieldValue = _useFormikContext.setFieldValue;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n    children: [!hideIdGetter && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_5__.FormControl, {\n        label: \"Edge ID Generator\",\n        tooltip: \"A bash script one liner that will generate the edge id and will be assigned to the PORTAINER_EDGE_ID environment variable\",\n        inputId: \"edge-id-generator-input\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_6__.Input, {\n          type: \"text\",\n          name: \"edgeIdGenerator\",\n          value: values.edgeIdGenerator,\n          id: \"edge-id-generator-input\",\n          onChange: function onChange(e) {\n            return setFieldValue(e.target.name, e.target.value);\n          }\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n        className: \"form-group\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n          className: \"col-sm-12\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_8__.TextTip, {\n            color: \"blue\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"code\", {\n              children: \"PORTAINER_EDGE_ID\"\n            }), \" environment variable is required to successfully connect the edge agent to Portainer\"]\n          })\n        })\n      })]\n    }), isNomadTokenVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_NomadTokenField__WEBPACK_IMPORTED_MODULE_9__.NomadTokenField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_5__.FormControl, {\n      label: \"Environment variables\",\n      tooltip: \"Comma separated list of environment variables that will be sourced from the host where the agent is deployed.\",\n      inputId: \"env-variables-input\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(formik__WEBPACK_IMPORTED_MODULE_4__.Field, {\n        name: \"envVars\",\n        as: _form_components_Input__WEBPACK_IMPORTED_MODULE_6__.Input,\n        placeholder: \"foo=bar,myvar\",\n        id: \"env-variables-input\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_7__.SwitchField, {\n          checked: values.allowSelfSignedCertificates,\n          onChange: function onChange(value) {\n            return setFieldValue('allowSelfSignedCertificates', value);\n          },\n          label: \"Allow self-signed certs\",\n          labelClass: \"col-sm-3 col-lg-2\",\n          tooltip: \"When allowing self-signed certificates the edge agent will ignore the domain validation when connecting to Portainer via HTTPS\"\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///54394\n");

}),

93110:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NomadTokenField\": function() { return /* binding */ NomadTokenField; },\n/* harmony export */   \"validation\": function() { return /* binding */ validation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction NomadTokenField() {\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_3__.useFormikContext)(),\n      values = _useFormikContext.values,\n      setFieldValue = _useFormikContext.setFieldValue,\n      errors = _useFormikContext.errors;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_6__.SwitchField, {\n          checked: values.authEnabled,\n          onChange: function onChange(value) {\n            if (!value) {\n              setFieldValue('nomadToken', '');\n            }\n\n            setFieldValue('authEnabled', value);\n          },\n          label: \"Nomad Authentication Enabled\",\n          tooltip: \"Nomad authentication is only required if you have ACL enabled\"\n        })\n      })\n    }), values.authEnabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_5__.FormControl, {\n      label: \"Nomad Token\",\n      inputId: \"nomad-token-input\",\n      errors: errors.nomadToken,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(formik__WEBPACK_IMPORTED_MODULE_3__.Field, {\n        name: \"nomadToken\",\n        as: _form_components_Input__WEBPACK_IMPORTED_MODULE_7__.Input,\n        id: \"nomad-token-input\"\n      })\n    })]\n  });\n}\nfunction validation() {\n  return {\n    nomadToken: (0,yup__WEBPACK_IMPORTED_MODULE_4__.string)().when('authEnabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_4__.string)().required('Token is required')\n    }),\n    authEnabled: (0,yup__WEBPACK_IMPORTED_MODULE_4__.boolean)()\n  };\n}//# sourceURL=webpack-internal:///93110\n");

}),

45809:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"OsSelector\": function() { return /* binding */ OsSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _form_components_ButtonSelector_ButtonSelector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/ButtonSelector/ButtonSelector */ 27026);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction OsSelector(_ref) {\n  var onChange = _ref.onChange,\n      value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_form_components_ButtonSelector_ButtonSelector__WEBPACK_IMPORTED_MODULE_2__.ButtonSelector, {\n        size: \"small\",\n        value: value,\n        onChange: function (_onChange) {\n          function onChange(_x) {\n            return _onChange.apply(this, arguments);\n          }\n\n          onChange.toString = function () {\n            return _onChange.toString();\n          };\n\n          return onChange;\n        }(function (os) {\n          return onChange(os);\n        }),\n        options: [{\n          value: 'linux',\n          label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n              className: \"fab fa-linux space-right\",\n              \"aria-hidden\": \"true\"\n            }), \"Linux\"]\n          })\n        }, {\n          value: 'win',\n          label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"i\", {\n              className: \"fab fa-windows space-right\",\n              \"aria-hidden\": \"true\"\n            }), \"Windows\"]\n          })\n        }]\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///45809\n");

}),

70186:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScriptTabs\": function() { return /* binding */ ScriptTabs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/environments/queries/useAgentDetails */ 61335);\n/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Code */ 25078);\n/* harmony import */ var _buttons_CopyButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/buttons/CopyButton */ 69574);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ScriptTabs(_ref) {\n  var values = _ref.values,\n      edgeKey = _ref.edgeKey,\n      edgeId = _ref.edgeId,\n      commands = _ref.commands,\n      platform = _ref.platform,\n      _ref$onPlatformChange = _ref.onPlatformChange,\n      onPlatformChange = _ref$onPlatformChange === void 0 ? function () {} : _ref$onPlatformChange;\n  var agentDetails = (0,_portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_5__.useAgentDetails)();\n  (0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(function () {\n    if (commands.length > 0 && commands.every(function (p) {\n      return p.id !== platform;\n    })) {\n      onPlatformChange(commands[0].id);\n    }\n  }, [platform, onPlatformChange, commands]);\n\n  if (!agentDetails) {\n    return null;\n  }\n\n  var agentSecret = agentDetails.agentSecret,\n      agentVersion = agentDetails.agentVersion;\n  var options = commands.map(function (c) {\n    var cmd = c.command(agentVersion, edgeKey, values, edgeId, agentSecret);\n    return {\n      id: c.id,\n      label: c.label,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Code__WEBPACK_IMPORTED_MODULE_6__.Code, {\n          children: cmd\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_buttons_CopyButton__WEBPACK_IMPORTED_MODULE_7__.CopyButton, {\n          copyText: cmd,\n          children: \"Copy\"\n        })]\n      })\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_8__.NavTabs, {\n        selectedId: platform,\n        options: options,\n        onSelect: function onSelect(id) {\n          return onPlatformChange(id);\n        }\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///70186\n");

}),

37665:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EdgeScriptForm": function() { return /* reexport safe */ _EdgeScriptForm__WEBPACK_IMPORTED_MODULE_0__.EdgeScriptForm; }
/* harmony export */ });
/* harmony import */ var _EdgeScriptForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeScriptForm */ 59062);


}),

32858:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"commandsTabs\": function() { return /* binding */ commandsTabs; },\n/* harmony export */   \"buildLinuxStandaloneCommand\": function() { return /* binding */ buildLinuxStandaloneCommand; },\n/* harmony export */   \"buildWindowsStandaloneCommand\": function() { return /* binding */ buildWindowsStandaloneCommand; },\n/* harmony export */   \"buildLinuxSwarmCommand\": function() { return /* binding */ buildLinuxSwarmCommand; },\n/* harmony export */   \"buildWindowsSwarmCommand\": function() { return /* binding */ buildWindowsSwarmCommand; },\n/* harmony export */   \"buildLinuxKubernetesCommand\": function() { return /* binding */ buildLinuxKubernetesCommand; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ 24378);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _portainer_views_endpoints_helpers__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/portainer/views/endpoints/helpers */ 13853);\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\nvar commandsTabs = {\n  k8sLinux: {\n    id: 'k8s',\n    label: 'Kubernetes',\n    command: buildLinuxKubernetesCommand\n  },\n  swarmLinux: {\n    id: 'swarm',\n    label: 'Docker Swarm',\n    command: buildLinuxSwarmCommand\n  },\n  standaloneLinux: {\n    id: 'standalone',\n    label: 'Docker Standalone',\n    command: buildLinuxStandaloneCommand\n  },\n  swarmWindows: {\n    id: 'swarm',\n    label: 'Docker Swarm',\n    command: buildWindowsSwarmCommand\n  },\n  standaloneWindow: {\n    id: 'standalone',\n    label: 'Docker Standalone',\n    command: buildWindowsStandaloneCommand\n  }\n};\n\nfunction buildDockerEnvVars(envVars, defaultVars) {\n  var vars = defaultVars.concat(envVars.split(',').filter(function (s) {\n    return s.length > 0;\n  }));\n  return vars.map(function (s) {\n    return \"-e \".concat(s);\n  }).join(' \\\\\\n  ');\n}\n\nfunction buildLinuxStandaloneCommand(agentVersion, edgeKey, properties, edgeId, agentSecret) {\n  var allowSelfSignedCertificates = properties.allowSelfSignedCertificates,\n      edgeIdGenerator = properties.edgeIdGenerator,\n      envVars = properties.envVars;\n  var env = buildDockerEnvVars(envVars, buildDefaultEnvVars(edgeKey, allowSelfSignedCertificates, !edgeIdGenerator ? edgeId : undefined, agentSecret));\n  return \"\".concat(edgeIdGenerator ? \"PORTAINER_EDGE_ID=$(\".concat(edgeIdGenerator, \") \\n\\n\") : '', \"docker run -d \\\\\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\\\\n  -v /var/lib/docker/volumes:/var/lib/docker/volumes \\\\\\n  -v /:/host \\\\\\n  -v portainer_agent_data:/data \\\\\\n  --restart always \\\\\\n  \").concat(env, \" \\\\\\n  --name portainer_edge_agent \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n  \");\n}\nfunction buildWindowsStandaloneCommand(agentVersion, edgeKey, properties, edgeId, agentSecret) {\n  var allowSelfSignedCertificates = properties.allowSelfSignedCertificates,\n      edgeIdGenerator = properties.edgeIdGenerator,\n      envVars = properties.envVars;\n  var env = buildDockerEnvVars(envVars, buildDefaultEnvVars(edgeKey, allowSelfSignedCertificates, edgeIdGenerator ? '$Env:PORTAINER_EDGE_ID' : edgeId, agentSecret));\n  return \"\".concat(edgeIdGenerator ? \"$Env:PORTAINER_EDGE_ID = \\\"@(\".concat(edgeIdGenerator, \")\\\" \\n\\n\") : '', \"docker run -d \\\\\\n  --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\\n  --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\\n  --mount type=volume,src=portainer_agent_data,dst=C:\\\\data \\\\\\n  --restart always \\\\\\n   \").concat(env, \" \\\\\\n  --name portainer_edge_agent \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n  \");\n}\nfunction buildLinuxSwarmCommand(agentVersion, edgeKey, properties, edgeId, agentSecret) {\n  var allowSelfSignedCertificates = properties.allowSelfSignedCertificates,\n      edgeIdGenerator = properties.edgeIdGenerator,\n      envVars = properties.envVars;\n  var env = buildDockerEnvVars(envVars, [].concat(_toConsumableArray(buildDefaultEnvVars(edgeKey, allowSelfSignedCertificates, !edgeIdGenerator ? edgeId : undefined, agentSecret)), ['AGENT_CLUSTER_ADDR=tasks.portainer_edge_agent']));\n  return \"\".concat(edgeIdGenerator ? \"PORTAINER_EDGE_ID=$(\".concat(edgeIdGenerator, \") \\n\\n\") : '', \"docker network create \\\\\\n  --driver overlay \\\\\\n  portainer_agent_network;\\n\\ndocker service create \\\\\\n  --name portainer_edge_agent \\\\\\n  --network portainer_agent_network \\\\\\n  \").concat(env, \" \\\\\\n  --mode global \\\\\\n  --constraint 'node.platform.os == linux' \\\\\\n  --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \\\\\\n  --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \\\\\\n  --mount type=bind,src=//,dst=/host \\\\\\n  --mount type=volume,src=portainer_agent_data,dst=/data \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}\nfunction buildWindowsSwarmCommand(agentVersion, edgeKey, properties, edgeId, agentSecret) {\n  var allowSelfSignedCertificates = properties.allowSelfSignedCertificates,\n      edgeIdGenerator = properties.edgeIdGenerator,\n      envVars = properties.envVars;\n  var env = buildDockerEnvVars(envVars, [].concat(_toConsumableArray(buildDefaultEnvVars(edgeKey, allowSelfSignedCertificates, edgeIdGenerator ? '$Env:PORTAINER_EDGE_ID' : edgeId, agentSecret)), ['AGENT_CLUSTER_ADDR=tasks.portainer_edge_agent']));\n  return \"\".concat(edgeIdGenerator ? \"$Env:PORTAINER_EDGE_ID = \\\"@(\".concat(edgeIdGenerator, \")\\\" \\n\\n\") : '', \"docker network create \\\\\\n  --driver overlay \\\\\\n  portainer_agent_network;\\n\\ndocker service create \\\\\\n  --name portainer_edge_agent \\\\\\n  --network portainer_agent_network \\\\\\n  \").concat(env, \" \\\\\\n  --mode global \\\\\\n  --constraint 'node.platform.os == windows' \\\\\\n  --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\\n  --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\\n  --mount type=volume,src=portainer_agent_data,dst=C:\\\\data \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}\nfunction buildLinuxKubernetesCommand(agentVersion, edgeKey, properties, edgeId, agentSecret) {\n  var allowSelfSignedCertificates = properties.allowSelfSignedCertificates,\n      edgeIdGenerator = properties.edgeIdGenerator,\n      envVars = properties.envVars;\n  var agentShortVersion = (0,_portainer_views_endpoints_helpers__WEBPACK_IMPORTED_MODULE_18__.getAgentShortVersion)(agentVersion);\n  var envVarsTrimmed = envVars.trim();\n  var idEnvVar = edgeIdGenerator ? \"PORTAINER_EDGE_ID=$(\".concat(edgeIdGenerator, \") \\n\\n\") : '';\n  var edgeIdVar = !edgeIdGenerator && edgeId ? edgeId : '$PORTAINER_EDGE_ID';\n  var selfSigned = allowSelfSignedCertificates ? '1' : '0';\n  return \"\".concat(idEnvVar, \"curl https://downloads.portainer.io/ee\").concat(agentShortVersion, \"/portainer-edge-agent-setup.sh | bash -s -- \\\"\").concat(edgeIdVar, \"\\\" \\\"\").concat(edgeKey, \"\\\" \\\"\").concat(selfSigned, \"\\\" \\\"\").concat(agentSecret, \"\\\" \\\"\").concat(envVarsTrimmed, \"\\\"\");\n}\n\nfunction buildDefaultEnvVars(edgeKey, allowSelfSignedCerts) {\n  var edgeId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '$PORTAINER_EDGE_ID';\n  var agentSecret = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n  return lodash_compact__WEBPACK_IMPORTED_MODULE_9___default()(['EDGE=1', \"EDGE_ID=\".concat(edgeId), \"EDGE_KEY=\".concat(edgeKey), \"EDGE_INSECURE_POLL=\".concat(allowSelfSignedCerts ? 1 : 0), agentSecret ? \"AGENT_SECRET=\".concat(agentSecret) : \"\"]);\n}//# sourceURL=webpack-internal:///32858\n");

}),

94858:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useEdgeGroups\": function() { return /* binding */ useEdgeGroups; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\nfunction getEdgeGroups() {\n  return _getEdgeGroups.apply(this, arguments);\n}\n\nfunction _getEdgeGroups() {\n  _getEdgeGroups = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get('/edge_groups');\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed fetching edge groups');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getEdgeGroups.apply(this, arguments);\n}\n\nfunction useEdgeGroups() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      select = _ref.select;\n\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['edge', 'groups'], getEdgeGroups, {\n    select: select\n  });\n}//# sourceURL=webpack-internal:///94858\n");

}),

46170:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StorageAccessModeSelector\": function() { return /* binding */ StorageAccessModeSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-select */ 68847);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction StorageAccessModeSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      options = _ref.options,\n      inputId = _ref.inputId,\n      storageClassName = _ref.storageClassName;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_2__.Select, {\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.Description;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return option.Name;\n    },\n    components: {\n      MultiValueLabel: MultiValueLabel\n    },\n    options: options,\n    value: value,\n    closeMenuOnSelect: false,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (value) {\n      return onChange(storageClassName, value);\n    }),\n    inputId: inputId,\n    placeholder: \"Not configured\",\n    \"data-cy\": \"kubeSetup-storageAccessSelect\".concat(storageClassName)\n  });\n}\n\nfunction MultiValueLabel(_ref2) {\n  var data = _ref2.data,\n      innerProps = _ref2.innerProps,\n      selectProps = _ref2.selectProps;\n\n  if (!data || !data.Name) {\n    throw new Error('missing option name');\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_4__.c.MultiValueLabel, {\n    data: data,\n    innerProps: innerProps,\n    selectProps: selectProps,\n    children: data.Name\n  });\n}//# sourceURL=webpack-internal:///46170\n");

}),

16784:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NamespacesSelector\": function() { return /* binding */ NamespacesSelector; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction NamespacesSelector(_ref) {\n  var name = _ref.name,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      namespaces = _ref.namespaces,\n      dataCy = _ref.dataCy,\n      inputId = _ref.inputId,\n      placeholder = _ref.placeholder;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_6__.Select, {\n    name: name,\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(namespace) {\n      return namespace.name;\n    },\n    getOptionValue: function getOptionValue(namespace) {\n      return String(namespace.id);\n    },\n    options: namespaces,\n    value: lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(value.map(function (namespaceName) {\n      return namespaces.find(function (namespace) {\n        return namespace.name === namespaceName;\n      });\n    })),\n    closeMenuOnSelect: false,\n    onChange: function (_onChange) {\n      function onChange(_x) {\n        return _onChange.apply(this, arguments);\n      }\n\n      onChange.toString = function () {\n        return _onChange.toString();\n      };\n\n      return onChange;\n    }(function (selectedTeams) {\n      return onChange(selectedTeams.map(function (namespace) {\n        return namespace.name;\n      }));\n    }),\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder\n  });\n}//# sourceURL=webpack-internal:///16784\n");

}),

81145:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IngressClassDatatable\": function() { return /* binding */ IngressClassDatatable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./columns */ 81979);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./datatable-store */ 78115);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar useStore = (0,_datatable_store__WEBPACK_IMPORTED_MODULE_27__.createStore)('ingressClasses');\nfunction IngressClassDatatable(_ref) {\n  var onChangeControllers = _ref.onChangeControllers,\n      description = _ref.description,\n      ingressControllers = _ref.ingressControllers,\n      allowNoneIngressClass = _ref.allowNoneIngressClass,\n      isLoading = _ref.isLoading,\n      noIngressControllerLabel = _ref.noIngressControllerLabel,\n      view = _ref.view;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_21__.useState)(ingressControllers || []),\n      _useState2 = _slicedToArray(_useState, 2),\n      ingControllerFormValues = _useState2[0],\n      setIngControllerFormValues = _useState2[1];\n\n  var settings = useStore();\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_26__.useColumns)();\n  (0,react__WEBPACK_IMPORTED_MODULE_21__.useEffect)(function () {\n    if (allowNoneIngressClass === undefined) {\n      return;\n    }\n\n    var newIngFormValues;\n    var isCustomTypeExist = ingControllerFormValues.some(function (ic) {\n      return ic.Type === 'custom';\n    });\n\n    if (allowNoneIngressClass) {\n      newIngFormValues = _toConsumableArray(ingControllerFormValues); // add the ingress controller type 'custom' with a 'none' ingress class name\n\n      if (!isCustomTypeExist) {\n        newIngFormValues.push({\n          Name: 'none',\n          ClassName: 'none',\n          Type: 'custom',\n          Availability: true,\n          New: false,\n          Used: false\n        });\n      }\n    } else {\n      newIngFormValues = ingControllerFormValues.filter(function (ingController) {\n        return ingController.ClassName !== 'none';\n      });\n    }\n\n    setIngControllerFormValues(newIngFormValues);\n    onChangeControllers(newIngFormValues); // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [allowNoneIngressClass, onChangeControllers]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n    className: \"-mx-[15px]\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_23__.Datatable, {\n      dataset: ingControllerFormValues || [],\n      storageKey: \"ingressClasses\",\n      columns: columns,\n      settingsStore: settings,\n      isLoading: isLoading,\n      emptyContentLabel: noIngressControllerLabel,\n      titleOptions: {\n        icon: 'database',\n        title: 'Ingress controllers',\n        featherIcon: true\n      },\n      getRowId: function getRowId(row) {\n        return \"\".concat(row.Name, \"-\").concat(row.ClassName, \"-\").concat(row.Type);\n      },\n      renderTableActions: function renderTableActions(selectedRows) {\n        return _renderTableActions(selectedRows);\n      },\n      description: renderIngressClassDescription()\n    })\n  });\n\n  function _renderTableActions(selectedRows) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n      className: \"flex items-start\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_24__.ButtonGroup, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_24__.Button, {\n          disabled: selectedRows.filter(function (row) {\n            return row.Availability === true;\n          }).length === 0,\n          color: \"dangerlight\",\n          size: \"small\",\n          onClick: function onClick() {\n            return updateIngressControllers(selectedRows, ingControllerFormValues || [], false);\n          },\n          children: \"Disallow selected\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_24__.Button, {\n          disabled: selectedRows.filter(function (row) {\n            return row.Availability === false;\n          }).length === 0,\n          color: \"default\",\n          size: \"small\",\n          onClick: function onClick() {\n            return updateIngressControllers(selectedRows, ingControllerFormValues || [], true);\n          },\n          children: \"Allow selected\"\n        })]\n      })\n    });\n  }\n\n  function renderIngressClassDescription() {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"div\", {\n      className: \"flex flex-col !text-xs text-muted w-full\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n        className: \"mt-1\",\n        children: description\n      }), ingressControllers && ingControllerFormValues && isUnsavedChanges(ingressControllers, ingControllerFormValues) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"span\", {\n        className: \"flex items-center text-warning mt-1\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_25__.Icon, {\n          icon: \"alert-triangle\",\n          feather: true,\n          className: \"!mr-1\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"span\", {\n          className: \"text-warning\",\n          children: \"Unsaved changes.\"\n        })]\n      })]\n    });\n  }\n\n  function updateIngressControllers(selectedRows, ingControllerFormValues, availability) {\n    var updatedIngressControllers = getUpdatedIngressControllers(selectedRows, ingControllerFormValues || [], availability);\n\n    if (ingressControllers && ingressControllers.length) {\n      var newAllowed = updatedIngressControllers.map(function (ingController) {\n        return ingController.Availability;\n      });\n\n      if (view === 'namespace') {\n        setIngControllerFormValues(updatedIngressControllers);\n        onChangeControllers(updatedIngressControllers);\n        return;\n      }\n\n      var usedControllersToDisallow = ingressControllers.filter(function (ingController, index) {\n        // if any of the current controllers are allowed, and are used, then become disallowed, then add the controller to a new list\n        if (ingController.Availability && ingController.Used && !newAllowed[index]) {\n          return true;\n        }\n\n        return false;\n      });\n\n      if (usedControllersToDisallow.length > 0) {\n        var usedControllerHtmlListItems = usedControllersToDisallow.map(function (controller) {\n          return \"<li>\".concat(controller.ClassName, \"</li>\");\n        });\n        var usedControllerHtmlList = \"<ul class=\\\"ml-6\\\">\".concat(usedControllerHtmlListItems.join(''), \"</ul>\");\n        (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_22__.confirmWarn)({\n          title: '不允许使用中的入站控制器？',\n          message: \"\\n            <div>\\n              <p>\\u6709\\u4E00\\u4E9B\\u4F60\\u60F3\\u7981\\u6B62\\u7684\\u5165\\u53E3\\u63A7\\u5236\\u5668\\u6B63\\u5728\\u4F7F\\u7528\\u4E2D\\uFF1A</p>\\n              \".concat(usedControllerHtmlList, \"\\n              <p>\\u4E0D\\u80FD\\u4E3A\\u4E0D\\u5141\\u8BB8\\u7684\\u63A7\\u5236\\u5668\\u521B\\u5EFA\\u65B0\\u7684\\u5165\\u53E3\\u89C4\\u5219\\u3002</p>\\n            </div>\"),\n          buttons: {\n            cancel: {\n              label: '取消',\n              className: 'btn-default'\n            },\n            confirm: {\n              label: '禁止',\n              className: 'btn-warning'\n            }\n          },\n          callback: function callback(confirmed) {\n            if (confirmed) {\n              setIngControllerFormValues(updatedIngressControllers);\n              onChangeControllers(updatedIngressControllers);\n            }\n          }\n        });\n        return;\n      }\n\n      setIngControllerFormValues(updatedIngressControllers);\n      onChangeControllers(updatedIngressControllers);\n    }\n  }\n}\n\nfunction isUnsavedChanges(oldIngressControllers, newIngressControllers) {\n  if (oldIngressControllers.length !== newIngressControllers.length) {\n    return true;\n  }\n\n  for (var i = 0; i < newIngressControllers.length; i += 1) {\n    var _oldIngressController, _newIngressController;\n\n    if (((_oldIngressController = oldIngressControllers[i]) === null || _oldIngressController === void 0 ? void 0 : _oldIngressController.Availability) !== ((_newIngressController = newIngressControllers[i]) === null || _newIngressController === void 0 ? void 0 : _newIngressController.Availability)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getUpdatedIngressControllers(selectedRows, allRows, allow) {\n  var selectedRowClassNames = selectedRows.map(function (row) {\n    return row.ClassName;\n  });\n  var updatedIngressControllers = allRows === null || allRows === void 0 ? void 0 : allRows.map(function (row) {\n    if (selectedRowClassNames.includes(row.ClassName)) {\n      return _objectSpread(_objectSpread({}, row), {}, {\n        Availability: allow\n      });\n    }\n\n    return row;\n  });\n  return updatedIngressControllers;\n}//# sourceURL=webpack-internal:///81145\n");

}),

69963:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"availability\": function() { return /* binding */ availability; }\n/* harmony export */ });\n/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Badge */ 74085);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nvar availability = {\n  Header: 'Availability',\n  accessor: 'Availability',\n  Cell: AvailailityCell,\n  id: 'availability',\n  disableFilters: true,\n  canHide: true,\n  sortInverted: true,\n  sortType: 'basic',\n  Filter: function Filter() {\n    return null;\n  }\n};\n\nfunction AvailailityCell(_ref) {\n  var value = _ref.value;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_Badge__WEBPACK_IMPORTED_MODULE_0__.Badge, {\n    type: value ? 'success' : 'danger',\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_1__.Icon, {\n      icon: value ? 'check' : 'x',\n      feather: true,\n      className: \"!mr-1\"\n    }), value ? 'Allowed' : 'Disallowed']\n  });\n}//# sourceURL=webpack-internal:///69963\n");

}),

81979:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _availability__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./availability */ 69963);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type */ 49425);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./name */ 27930);\n\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_name__WEBPACK_IMPORTED_MODULE_3__.name, _type__WEBPACK_IMPORTED_MODULE_2__.type, _availability__WEBPACK_IMPORTED_MODULE_1__.availability];\n  }, []);\n}//# sourceURL=webpack-internal:///81979\n");

}),

27930:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; }\n/* harmony export */ });\n/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Badge */ 74085);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nvar name = {\n  Header: 'Ingress class',\n  accessor: 'ClassName',\n  Cell: NameCell,\n  id: 'name',\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  },\n  sortType: 'string'\n};\n\nfunction NameCell(_ref) {\n  var row = _ref.row;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"span\", {\n    className: \"flex flex-nowrap\",\n    children: [row.original.ClassName, row.original.New && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Badge__WEBPACK_IMPORTED_MODULE_0__.Badge, {\n      className: \"ml-1\",\n      children: \"Newly detected\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///27930\n");

}),

49425:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"type\": function() { return /* binding */ type; }\n/* harmony export */ });\nvar type = {\n  Header: 'Ingress controller type',\n  accessor: 'Type',\n  Cell: function Cell(_ref) {\n    var row = _ref.row;\n    return row.original.Type || '-';\n  },\n  id: 'type',\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///49425\n");

}),

78115:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TRUNCATE_LENGTH\": function() { return /* binding */ TRUNCATE_LENGTH; },\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/components/datatables/types */ 16579);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nvar TRUNCATE_LENGTH = 32;\nfunction createStore(storageKey) {\n  return (0,zustand__WEBPACK_IMPORTED_MODULE_9__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_10__.persist)(function (set) {\n    return _objectSpread(_objectSpread({}, (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.sortableSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.paginationSettings)(set));\n  }, {\n    name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)(storageKey)\n  }));\n}//# sourceURL=webpack-internal:///78115\n");

}),

513:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "IngressClassDatatable": function() { return /* reexport safe */ _IngressClassDatatable__WEBPACK_IMPORTED_MODULE_0__.IngressClassDatatable; }
/* harmony export */ });
/* harmony import */ var _IngressClassDatatable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IngressClassDatatable */ 81145);


}),

4679:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getIngressControllerClassMap\": function() { return /* binding */ getIngressControllerClassMap; },\n/* harmony export */   \"updateIngressControllerClassMap\": function() { return /* binding */ updateIngressControllerClassMap; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/error */ 20023);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n// get all supported ingress classes and controllers for the cluster\n// allowedOnly set to true will hide globally disallowed ingresscontrollers\nfunction getIngressControllerClassMap(_x) {\n  return _getIngressControllerClassMap.apply(this, arguments);\n} // get all supported ingress classes and controllers for the cluster\n\nfunction _getIngressControllerClassMap() {\n  _getIngressControllerClassMap = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref) {\n    var environmentId, namespace, allowedOnly, _yield$axios$get, controllerMaps;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            environmentId = _ref.environmentId, namespace = _ref.namespace, allowedOnly = _ref.allowedOnly;\n            _context.prev = 1;\n            _context.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl(environmentId, namespace), allowedOnly ? {\n              params: {\n                allowedOnly: true\n              }\n            } : undefined);\n\n          case 4:\n            _yield$axios$get = _context.sent;\n            controllerMaps = _yield$axios$get.data;\n            return _context.abrupt(\"return\", controllerMaps);\n\n          case 9:\n            _context.prev = 9;\n            _context.t0 = _context[\"catch\"](1);\n            throw new _portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to get ingress controllers.', _context.t0);\n\n          case 12:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[1, 9]]);\n  }));\n  return _getIngressControllerClassMap.apply(this, arguments);\n}\n\nfunction updateIngressControllerClassMap(_x2, _x3, _x4) {\n  return _updateIngressControllerClassMap.apply(this, arguments);\n}\n\nfunction _updateIngressControllerClassMap() {\n  _updateIngressControllerClassMap = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId, ingressControllerClassMap, namespace) {\n    var _yield$axios$put, controllerMaps;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].put(buildUrl(environmentId, namespace), ingressControllerClassMap);\n\n          case 3:\n            _yield$axios$put = _context2.sent;\n            controllerMaps = _yield$axios$put.data;\n            return _context2.abrupt(\"return\", controllerMaps);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw new _portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to update ingress controllers.', _context2.t0);\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _updateIngressControllerClassMap.apply(this, arguments);\n}\n\nfunction buildUrl(environmentId, namespace) {\n  var url = \"kubernetes/\".concat(environmentId, \"/\");\n\n  if (namespace) {\n    url += \"namespaces/\".concat(namespace, \"/\");\n  }\n\n  url += 'ingresscontrollers';\n  return url;\n}//# sourceURL=webpack-internal:///4679\n");

}),

22839:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useConfigurations\": function() { return /* binding */ useConfigurations; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./service */ 9946);\n\n\n\nfunction useConfigurations(environmentId, namespace) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', environmentId, 'kubernetes', 'namespaces', namespace, 'configurations'], function () {\n    return namespace ? (0,_service__WEBPACK_IMPORTED_MODULE_2__.getConfigMaps)(environmentId, namespace) : [];\n  }, {\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to get configurations');\n    },\n    enabled: !!namespace\n  });\n}//# sourceURL=webpack-internal:///22839\n");

}),

9946:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getConfigMaps\": function() { return /* binding */ getConfigMaps; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getConfigMaps(_x, _x2) {\n  return _getConfigMaps.apply(this, arguments);\n}\n\nfunction _getConfigMaps() {\n  _getConfigMaps = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, namespace) {\n    var _yield$axios$get, configmaps;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(\"kubernetes/\".concat(environmentId, \"/namespaces/\").concat(namespace, \"/configmaps\"));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            configmaps = _yield$axios$get.data;\n            return _context.abrupt(\"return\", configmaps);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Unable to retrieve configmaps');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getConfigMaps.apply(this, arguments);\n}//# sourceURL=webpack-internal:///9946\n");

}),

60881:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NamespaceAccessUsersSelector\": function() { return /* binding */ NamespaceAccessUsersSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-feather */ 64490);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-select */ 68847);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nvar _excluded = [\"data\"],\n    _excluded2 = [\"data\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NamespaceAccessUsersSelector(_ref) {\n  var onChange = _ref.onChange,\n      options = _ref.options,\n      value = _ref.value,\n      dataCy = _ref.dataCy,\n      inputId = _ref.inputId,\n      name = _ref.name,\n      placeholder = _ref.placeholder;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_14__.Select, {\n    isMulti: true,\n    name: name,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.Name;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return \"\".concat(option.Id, \"-\").concat(option.Type);\n    },\n    options: options,\n    value: value,\n    closeMenuOnSelect: false,\n    onChange: onChange,\n    \"data-cy\": dataCy,\n    inputId: inputId,\n    placeholder: placeholder,\n    components: {\n      MultiValueLabel: MultiValueLabel,\n      Option: OptionComponent\n    }\n  });\n}\n\nfunction isOption(option) {\n  return !!option && _typeof(option) === 'object' && 'Type' in option;\n}\n\nfunction OptionComponent(_ref2) {\n  var data = _ref2.data,\n      props = _objectWithoutProperties(_ref2, _excluded);\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_16__.c.Option, _objectSpread(_objectSpread({\n      data: data\n    }, props), {}, {\n      children: isOption(data) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(Label, {\n        option: data\n      })\n    }))\n  );\n}\n\nfunction MultiValueLabel(_ref3) {\n  var data = _ref3.data,\n      props = _objectWithoutProperties(_ref3, _excluded2);\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_16__.c.MultiValueLabel, _objectSpread(_objectSpread({\n      data: data\n    }, props), {}, {\n      children: isOption(data) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(Label, {\n        option: data\n      })\n    }))\n  );\n}\n\nfunction Label(_ref4) {\n  var option = _ref4.option;\n  var Icon = option.Type === 'user' ? react_feather__WEBPACK_IMPORTED_MODULE_17__[\"default\"] : react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n    className: \"flex gap-1 items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(Icon, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      children: option.Name\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      children: \"|\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      children: option.Role.Name\n    })]\n  });\n}//# sourceURL=webpack-internal:///60881\n");

}),

76309:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateNamespaceRegistriesSelector\": function() { return /* binding */ CreateNamespaceRegistriesSelector; }\n/* harmony export */ });\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction CreateNamespaceRegistriesSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      options = _ref.options,\n      inputId = _ref.inputId;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__.Select, {\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.Name;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return String(option.Id);\n    },\n    options: options,\n    value: value,\n    closeMenuOnSelect: false,\n    onChange: onChange,\n    inputId: inputId,\n    \"data-cy\": \"namespaceCreate-registrySelect\",\n    placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u6CE8\\u518C\\u8868\"\n  });\n}//# sourceURL=webpack-internal:///76309\n");

}),

66487:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useNamespaces\": function() { return /* binding */ useNamespaces; },\n/* harmony export */   \"useNamespace\": function() { return /* binding */ useNamespace; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./service */ 84311);\n\n\n\nfunction useNamespaces(environmentId) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', environmentId, 'kubernetes', 'namespaces'], function () {\n    return (0,_service__WEBPACK_IMPORTED_MODULE_2__.getNamespaces)(environmentId);\n  }, {\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to get namespaces.');\n    }\n  });\n}\nfunction useNamespace(environmentId, namespace) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['environments', environmentId, 'kubernetes', 'namespaces', namespace], function () {\n    return (0,_service__WEBPACK_IMPORTED_MODULE_2__.getNamespace)(environmentId, namespace);\n  }, {\n    onError: function onError(err) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_1__.error)('Failure', err, 'Unable to get namespace.');\n    }\n  });\n}//# sourceURL=webpack-internal:///66487\n");

}),

84311:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getNamespace\": function() { return /* binding */ getNamespace; },\n/* harmony export */   \"getNamespaces\": function() { return /* binding */ getNamespaces; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction getNamespace(_x, _x2) {\n  return _getNamespace.apply(this, arguments);\n}\n\nfunction _getNamespace() {\n  _getNamespace = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentId, namespace) {\n    var _yield$axios$get, ingress;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(environmentId, namespace));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            ingress = _yield$axios$get.data;\n            return _context.abrupt(\"return\", ingress);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to retrieve network details');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getNamespace.apply(this, arguments);\n}\n\nfunction getNamespaces(_x3) {\n  return _getNamespaces.apply(this, arguments);\n}\n\nfunction _getNamespaces() {\n  _getNamespaces = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(environmentId) {\n    var _yield$axios$get2, ingresses;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(buildUrl(environmentId));\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            ingresses = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", ingresses);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to retrieve network details');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getNamespaces.apply(this, arguments);\n}\n\nfunction buildUrl(environmentId, namespace) {\n  var url = \"kubernetes/\".concat(environmentId, \"/namespaces\");\n\n  if (namespace) {\n    url += \"/\".concat(namespace);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///84311\n");

}),

94914:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlForm\": function() { return /* binding */ AccessControlForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n/* harmony import */ var _EditDetails__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../EditDetails */ 31825);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../types */ 83471);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction AccessControlForm(_ref) {\n  var values = _ref.values,\n      onChange = _ref.onChange,\n      hideTitle = _ref.hideTitle,\n      formNamespace = _ref.formNamespace,\n      errors = _ref.errors;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_10__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var accessControlEnabled = values.ownership !== _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.PUBLIC;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.Fragment, {\n    children: [!hideTitle && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_11__.FormSectionTitle, {\n      children: \"\\u8BBF\\u95EE\\u63A7\\u5236\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_12__.SwitchField, {\n          checked: accessControlEnabled,\n          name: withNamespace('accessControlEnabled'),\n          label: \"\\u542F\\u7528\\u8BBF\\u95EE\\u63A7\\u5236\",\n          tooltip: \"\\u542F\\u7528\\u540E\\uFF0C\\u4F60\\u53EF\\u4EE5\\u9650\\u5236\\u5BF9\\u8BE5\\u8D44\\u6E90\\u7684\\u8BBF\\u95EE\\u548C\\u7BA1\\u7406\\u3002\",\n          onChange: handleToggleEnable,\n          dataCy: \"portainer-accessMgmtToggle\"\n        })\n      })\n    }), accessControlEnabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_EditDetails__WEBPACK_IMPORTED_MODULE_13__.EditDetails, {\n      onChange: onChange,\n      values: values,\n      errors: errors,\n      formNamespace: formNamespace\n    })]\n  });\n\n  function withNamespace(name) {\n    return formNamespace ? \"\".concat(formNamespace, \".\").concat(name) : name;\n  }\n\n  function handleToggleEnable(accessControlEnabled) {\n    var ownership = _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.PUBLIC;\n\n    if (accessControlEnabled) {\n      ownership = isAdmin ? _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.ADMINISTRATORS : _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.PRIVATE;\n    }\n\n    onChange(_objectSpread(_objectSpread({}, values), {}, {\n      ownership: ownership\n    }));\n  }\n}//# sourceURL=webpack-internal:///94914\n");

}),

77568:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types */ 83471);\n\n\n\n\nfunction validationSchema(isAdmin) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_2__.object)().shape({\n    ownership: (0,yup__WEBPACK_IMPORTED_MODULE_2__.string)().oneOf(Object.values(_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership)).required(),\n    authorizedUsers: (0,yup__WEBPACK_IMPORTED_MODULE_2__.array)((0,yup__WEBPACK_IMPORTED_MODULE_2__.number)()),\n    authorizedTeams: (0,yup__WEBPACK_IMPORTED_MODULE_2__.array)((0,yup__WEBPACK_IMPORTED_MODULE_2__.number)())\n  }).test('user-and-team', isAdmin ? '你必须至少指定一个团队或用户。' : '你必须至少指定一个团队。', function (_ref) {\n    var ownership = _ref.ownership,\n        authorizedTeams = _ref.authorizedTeams,\n        authorizedUsers = _ref.authorizedUsers;\n\n    if (ownership !== _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.RESTRICTED) {\n      return true;\n    }\n\n    if (!isAdmin) {\n      return !!authorizedTeams && authorizedTeams.length > 0;\n    }\n\n    return !!authorizedTeams && !!authorizedUsers && (authorizedTeams.length > 0 || authorizedUsers.length > 0);\n  });\n}//# sourceURL=webpack-internal:///77568\n");

}),

59107:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AccessControlForm": function() { return /* reexport safe */ _AccessControlForm__WEBPACK_IMPORTED_MODULE_0__.AccessControlForm; }
/* harmony export */ });
/* harmony import */ var _AccessControlForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AccessControlForm */ 94914);


}),

60113:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlPanel\": function() { return /* binding */ AccessControlPanel; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/react/portainer/users/teams/types */ 43247);\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../types */ 83471);\n/* harmony import */ var _AccessControlPanelDetails__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./AccessControlPanelDetails */ 65595);\n/* harmony import */ var _AccessControlPanelForm__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./AccessControlPanelForm */ 24331);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction AccessControlPanel(_ref) {\n  var resourceControl = _ref.resourceControl,\n      resourceType = _ref.resourceType,\n      disableOwnershipChange = _ref.disableOwnershipChange,\n      resourceId = _ref.resourceId,\n      environmentId = _ref.environmentId,\n      onUpdateSuccess = _ref.onUpdateSuccess;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_13__.useReducer)(function (state) {\n    return !state;\n  }, false),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      isEditMode = _useReducer2[0],\n      toggleEditMode = _useReducer2[1];\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_14__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var isInherited = checkIfInherited();\n\n  var _useRestrictions = useRestrictions(resourceControl),\n      isPartOfRestrictedUsers = _useRestrictions.isPartOfRestrictedUsers,\n      isLeaderOfAnyRestrictedTeams = _useRestrictions.isLeaderOfAnyRestrictedTeams;\n\n  var isEditDisabled = disableOwnershipChange || isInherited || !isAdmin && !isPartOfRestrictedUsers && !isLeaderOfAnyRestrictedTeams;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_18__.TableContainer, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_18__.TableTitle, {\n          label: \"\\u8BBF\\u95EE\\u63A7\\u5236\",\n          icon: \"eye\",\n          featherIcon: true\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_AccessControlPanelDetails__WEBPACK_IMPORTED_MODULE_21__.AccessControlPanelDetails, {\n          resourceType: resourceType,\n          resourceControl: resourceControl\n        }), !isEditDisabled && !isEditMode && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n          className: \"row\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_19__.Button, {\n              color: \"link\",\n              onClick: toggleEditMode,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_15__.Icon, {\n                icon: \"edit\",\n                className: \"space-right\",\n                feather: true\n              }), \"\\u66F4\\u6539\\u6240\\u6709\\u6743\"]\n            })\n          })\n        }), isEditMode && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_AccessControlPanelForm__WEBPACK_IMPORTED_MODULE_22__.AccessControlPanelForm, {\n          resourceControl: resourceControl,\n          onCancelClick: function onCancelClick() {\n            return toggleEditMode();\n          },\n          resourceId: resourceId,\n          resourceType: resourceType,\n          environmentId: environmentId,\n          onUpdateSuccess: handleUpdateSuccess\n        })]\n      })\n    })\n  });\n\n  function handleUpdateSuccess() {\n    return _handleUpdateSuccess.apply(this, arguments);\n  }\n\n  function _handleUpdateSuccess() {\n    _handleUpdateSuccess = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return onUpdateSuccess();\n\n            case 2:\n              toggleEditMode();\n\n            case 3:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleUpdateSuccess.apply(this, arguments);\n  }\n\n  function checkIfInherited() {\n    if (!resourceControl) {\n      return false;\n    }\n\n    var inheritedVolume = resourceControl.Type === _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Container && resourceType === _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Volume;\n    var inheritedContainer = resourceControl.Type === _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Service && resourceType === _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Container;\n    var inheritedFromStack = resourceControl.Type === _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Stack && resourceType !== _types__WEBPACK_IMPORTED_MODULE_20__.ResourceControlType.Stack;\n    return inheritedVolume || inheritedContainer || inheritedFromStack;\n  }\n}\n\nfunction useRestrictions(resourceControl) {\n  var _useUser2 = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_14__.useUser)(),\n      user = _useUser2.user,\n      isAdmin = _useUser2.isAdmin;\n\n  var memberships = (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_17__.useUserMembership)(user.Id);\n\n  if (!resourceControl || isAdmin) {\n    return {\n      isPartOfRestrictedUsers: false,\n      isLeaderOfAnyRestrictedTeams: false\n    };\n  }\n\n  if (resourceControl.UserAccesses.some(function (ua) {\n    return ua.UserId === user.Id;\n  })) {\n    return {\n      isPartOfRestrictedUsers: true,\n      isLeaderOfAnyRestrictedTeams: false\n    };\n  }\n\n  var isTeamLeader = memberships.isSuccess && isLeaderOfAnyRestrictedTeams(memberships.data, resourceControl);\n  return {\n    isPartOfRestrictedUsers: false,\n    isLeaderOfAnyRestrictedTeams: isTeamLeader\n  };\n} // returns true if user is a team leader and resource is limited to this team\n\n\nfunction isLeaderOfAnyRestrictedTeams(userMemberships, resourceControl) {\n  return userMemberships.some(function (membership) {\n    return membership.Role === _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_16__.TeamRole.Leader && resourceControl.TeamAccesses.some(function (ta) {\n      return ta.TeamId === membership.TeamID;\n    });\n  });\n}//# sourceURL=webpack-internal:///60113\n");

}),

65595:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlPanelDetails\": function() { return /* binding */ AccessControlPanelDetails; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../types */ 83471);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction AccessControlPanelDetails(_ref) {\n  var resourceControl = _ref.resourceControl,\n      resourceType = _ref.resourceType;\n  var inheritanceMessage = getInheritanceMessage(resourceType, resourceControl);\n\n  var _ref2 = resourceControl || {},\n      _ref2$Ownership = _ref2.Ownership,\n      ownership = _ref2$Ownership === void 0 ? _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlOwnership.ADMINISTRATORS : _ref2$Ownership,\n      _ref2$UserAccesses = _ref2.UserAccesses,\n      restrictedToUsers = _ref2$UserAccesses === void 0 ? [] : _ref2$UserAccesses,\n      _ref2$TeamAccesses = _ref2.TeamAccesses,\n      restrictedToTeams = _ref2$TeamAccesses === void 0 ? [] : _ref2$TeamAccesses;\n\n  var users = useAuthorizedUsers(restrictedToUsers.map(function (ra) {\n    return ra.UserId;\n  }));\n  var teams = useAuthorizedTeams(restrictedToTeams.map(function (ra) {\n    return ra.TeamId;\n  }));\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"table\", {\n    className: \"table\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"tbody\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"tr\", {\n        \"data-cy\": \"access-ownership\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"td\", {\n          children: \"\\u6240\\u6709\\u6743\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"td\", {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"i\", {\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_6__.ownershipIcon)(ownership), 'space-right'),\n            \"aria-hidden\": \"true\",\n            \"aria-label\": \"ownership-icon\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"span\", {\n            \"aria-label\": \"ownership\",\n            children: ownership\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_10__.Tooltip, {\n            message: getOwnershipTooltip(ownership)\n          })]\n        })]\n      }), inheritanceMessage, restrictedToUsers.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"tr\", {\n        \"data-cy\": \"access-authorisedUsers\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"td\", {\n          children: \"\\u6388\\u6743\\u7528\\u6237\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"td\", {\n          \"aria-label\": \"authorized-users\",\n          children: users.data && users.data.join(', ')\n        })]\n      }), restrictedToTeams.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"tr\", {\n        \"data-cy\": \"access-authorisedTeams\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"td\", {\n          children: \"\\u6388\\u6743\\u56E2\\u961F\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"td\", {\n          \"aria-label\": \"authorized-teams\",\n          children: teams.data && teams.data.join(', ')\n        })]\n      })]\n    })\n  });\n}\n\nfunction getOwnershipTooltip(ownership) {\n  switch (ownership) {\n    case _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlOwnership.PRIVATE:\n      return '该资源的管理只限于一个用户。';\n\n    case _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlOwnership.RESTRICTED:\n      return '该资源可由一组受限制的用户和/或团队管理。';\n\n    case _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlOwnership.PUBLIC:\n      return '这个资源可以由任何有权限进入这个环境的用户管理。';\n\n    case _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlOwnership.ADMINISTRATORS:\n    default:\n      return '该资源只能由管理员管理。';\n  }\n}\n\nfunction getInheritanceMessage(resourceType, resourceControl) {\n  if (!resourceControl || resourceControl.Type === resourceType) {\n    return null;\n  }\n\n  var parentType = resourceControl.Type;\n  var resourceId = resourceControl.ResourceId;\n\n  if (resourceType === _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlType.Container && parentType === _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlType.Service) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(InheritanceMessage, {\n      tooltip: \"\\u5E94\\u7528\\u4E8E\\u4E00\\u4E2A\\u670D\\u52A1\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u4E5F\\u5E94\\u7528\\u4E8E\\u8BE5\\u670D\\u52A1\\u7684\\u6BCF\\u4E2A\\u5BB9\\u5668\\u3002\",\n      children: [\"\\u8BE5\\u8D44\\u6E90\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u7EE7\\u627F\\u81EA\\u4EE5\\u4E0B\\u670D\\u52A1\\u3002\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_9__.Link, {\n        to: \"docker.services.service\",\n        params: {\n          id: resourceId\n        },\n        children: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_6__.truncate)(resourceId)\n      })]\n    });\n  }\n\n  if (resourceType === _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlType.Volume && parentType === _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlType.Container) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(InheritanceMessage, {\n      tooltip: \"\\u5728\\u4F7F\\u7528\\u6A21\\u677F\\u521B\\u5EFA\\u7684\\u5BB9\\u5668\\u4E0A\\u5E94\\u7528\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u4E5F\\u9002\\u7528\\u4E8E\\u4E0E\\u8BE5\\u5BB9\\u5668\\u76F8\\u5173\\u7684\\u6BCF\\u4E2A\\u5377\\u3002\",\n      children: [\"\\u8BE5\\u8D44\\u6E90\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u7EE7\\u627F\\u81EA\\u4EE5\\u4E0B\\u5185\\u5BB9 \\u5BB9\\u5668\\uFF1A\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_9__.Link, {\n        to: \"docker.containers.container\",\n        params: {\n          id: resourceId\n        },\n        children: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_6__.truncate)(resourceId)\n      })]\n    });\n  }\n\n  if (parentType === _types__WEBPACK_IMPORTED_MODULE_11__.ResourceControlType.Stack) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(InheritanceMessage, {\n      tooltip: \"\\u5E94\\u7528\\u4E8E\\u5806\\u6808\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u4E5F\\u5E94\\u7528\\u4E8E\\u5806\\u6808\\u4E2D\\u7684\\u6BCF\\u4E2A\\u8D44\\u6E90\\u3002\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"span\", {\n        className: \"space-right\",\n        children: \"\\u8BE5\\u8D44\\u6E90\\u7684\\u8BBF\\u95EE\\u63A7\\u5236\\u7EE7\\u627F\\u81EA\\u4EE5\\u4E0B\\u5806\\u6808\\uFF1A\"\n      }), removeEndpointIdFromStackResourceId(resourceId)]\n    });\n  }\n\n  return null;\n}\n\nfunction removeEndpointIdFromStackResourceId(stackName) {\n  if (!stackName || typeof stackName !== 'string') {\n    return stackName;\n  }\n\n  var firstUnderlineIndex = stackName.indexOf('_');\n\n  if (firstUnderlineIndex < 0) {\n    return stackName;\n  }\n\n  return stackName.substring(firstUnderlineIndex + 1);\n}\n\nfunction InheritanceMessage(_ref3) {\n  var children = _ref3.children,\n      tooltip = _ref3.tooltip;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"tr\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"td\", {\n      colSpan: 2,\n      \"aria-label\": \"inheritance-message\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"i\", {\n        className: \"fa fa-info-circle space-right\",\n        \"aria-hidden\": \"true\"\n      }), children, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_10__.Tooltip, {\n        message: tooltip\n      })]\n    })\n  });\n}\n\nfunction useAuthorizedTeams(authorizedTeamIds) {\n  return (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_7__.useTeams)(false, 0, {\n    enabled: authorizedTeamIds.length > 0,\n    select: function select(teams) {\n      if (authorizedTeamIds.length === 0) {\n        return [];\n      }\n\n      return lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(authorizedTeamIds.map(function (id) {\n        var team = teams.find(function (u) {\n          return u.Id === id;\n        });\n        return team === null || team === void 0 ? void 0 : team.Name;\n      }));\n    }\n  });\n}\n\nfunction useAuthorizedUsers(authorizedUserIds) {\n  return (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_8__.useUsers)(false, 0, authorizedUserIds.length > 0, function (users) {\n    if (authorizedUserIds.length === 0) {\n      return [];\n    }\n\n    return lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(authorizedUserIds.map(function (id) {\n      var user = users.find(function (u) {\n        return u.Id === id;\n      });\n      return user === null || user === void 0 ? void 0 : user.Username;\n    }));\n  });\n}//# sourceURL=webpack-internal:///65595\n");

}),

24331:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlPanelForm\": function() { return /* binding */ AccessControlPanelForm; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _EditDetails__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../EditDetails */ 31825);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils */ 33287);\n/* harmony import */ var _AccessControlForm_AccessControlForm_validation__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../AccessControlForm/AccessControlForm.validation */ 77568);\n/* harmony import */ var _access_control_service__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../access-control.service */ 63625);\n/* harmony import */ var _AccessControlPanelForm_module_css__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./AccessControlPanelForm.module.css */ 83475);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction AccessControlPanelForm(_ref) {\n  var resourceId = _ref.resourceId,\n      resourceType = _ref.resourceType,\n      resourceControl = _ref.resourceControl,\n      environmentId = _ref.environmentId,\n      onCancelClick = _ref.onCancelClick,\n      onUpdateSuccess = _ref.onUpdateSuccess;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_9__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var updateAccess = (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useMutation)(function (variables) {\n    return (0,_access_control_service__WEBPACK_IMPORTED_MODULE_17__.applyResourceControlChange)(resourceType, resourceId, variables, resourceControl);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: '无法更新访问控制'\n      }\n    },\n    onSuccess: function onSuccess() {\n      return onUpdateSuccess();\n    }\n  });\n  var initialValues = {\n    accessControl: (0,_utils__WEBPACK_IMPORTED_MODULE_15__.parseAccessControlFormData)(isAdmin, resourceControl)\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(formik__WEBPACK_IMPORTED_MODULE_5__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validateOnMount: true,\n    validateOnChange: true,\n    validationSchema: function validationSchema() {\n      return (0,yup__WEBPACK_IMPORTED_MODULE_8__.object)({\n        accessControl: (0,_AccessControlForm_AccessControlForm_validation__WEBPACK_IMPORTED_MODULE_16__.validationSchema)(isAdmin)\n      });\n    },\n    children: function children(_ref2) {\n      var setFieldValue = _ref2.setFieldValue,\n          values = _ref2.values,\n          isSubmitting = _ref2.isSubmitting,\n          isValid = _ref2.isValid,\n          errors = _ref2.errors;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_5__.Form, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('form-horizontal', _AccessControlPanelForm_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].form),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_EditDetails__WEBPACK_IMPORTED_MODULE_14__.EditDetails, {\n          onChange: function onChange(accessControl) {\n            return setFieldValue('accessControl', accessControl);\n          },\n          values: values.accessControl,\n          isPublicVisible: true,\n          errors: errors.accessControl,\n          environmentId: environmentId\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(\"div\", {\n            className: \"col-sm-12\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_12__.Button, {\n              size: \"small\",\n              color: \"default\",\n              onClick: onCancelClick,\n              children: \"\\u53D6\\u6D88\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_13__.LoadingButton, {\n              size: \"small\",\n              color: \"primary\",\n              type: \"submit\",\n              isLoading: isSubmitting,\n              disabled: !isValid,\n              loadingText: \"\\u66F4\\u65B0\\u6240\\u6709\\u6743\",\n              children: \"\\u66F4\\u65B0\\u6240\\u6709\\u6743\"\n            })]\n          })\n        })]\n      });\n    }\n  });\n\n  function handleSubmit(_x) {\n    return _handleSubmit.apply(this, arguments);\n  }\n\n  function _handleSubmit() {\n    _handleSubmit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref3) {\n      var accessControl, confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              accessControl = _ref3.accessControl;\n              _context.next = 3;\n              return confirmAccessControlUpdate();\n\n            case 3:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 6;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 6:\n              updateAccess.mutate(accessControl, {\n                onSuccess: function onSuccess() {\n                  (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.notifySuccess)('Success', '访问控制已成功更新');\n                }\n              });\n\n            case 7:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleSubmit.apply(this, arguments);\n  }\n}\n\nfunction confirmAccessControlUpdate() {\n  return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__.confirmAsync)({\n    title: '你确定吗？',\n    message: '改变该资源的所有权将有可能限制其对某些用户的管理。',\n    buttons: {\n      confirm: {\n        label: '更改所有权',\n        className: 'btn-primary'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///24331\n");

}),

82466:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AccessControlPanel": function() { return /* reexport safe */ _AccessControlPanel__WEBPACK_IMPORTED_MODULE_0__.AccessControlPanel; }
/* harmony export */ });
/* harmony import */ var _AccessControlPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AccessControlPanel */ 60113);


}),

52704:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PorAccessManagementUsersSelector\": function() { return /* binding */ PorAccessManagementUsersSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 64490);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-select */ 68847);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nvar _excluded = [\"data\"],\n    _excluded2 = [\"data\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\nfunction PorAccessManagementUsersSelector(_ref) {\n  var options = _ref.options,\n      value = _ref.value,\n      onChange = _ref.onChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\"div\", {\n    className: \"form-group\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"label\", {\n      className: \"col-sm-3 col-lg-2 control-label text-left\",\n      htmlFor: \"users-selector\",\n      children: \"\\u9009\\u62E9\\u7528\\u6237/\\u6216\\u56E2\\u961F\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n      className: \"col-sm-9 col-lg-4\",\n      children: options.length === 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"span\", {\n        className: \"small text-muted\",\n        children: \"\\u6CA1\\u6709\\u7528\\u6237\\u6216\\u56E2\\u961F\\u53EF\\u7528\\u3002\"\n      }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_13__.Select, {\n        isMulti: true,\n        getOptionLabel: function getOptionLabel(option) {\n          return option.Name;\n        },\n        getOptionValue: function getOptionValue(option) {\n          return \"\".concat(option.Id, \"-\").concat(option.Type);\n        },\n        options: options,\n        value: value,\n        closeMenuOnSelect: false,\n        onChange: onChange,\n        \"data-cy\": \"component-selectUser\",\n        inputId: \"users-selector\",\n        placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u7528\\u6237\\u548C/\\u6216\\u56E2\\u961F\",\n        components: {\n          MultiValueLabel: MultiValueLabel,\n          Option: OptionComponent\n        }\n      })\n    })]\n  });\n}\n\nfunction isOption(option) {\n  return !!option && _typeof(option) === 'object' && 'Type' in option;\n}\n\nfunction OptionComponent(_ref2) {\n  var data = _ref2.data,\n      props = _objectWithoutProperties(_ref2, _excluded);\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_15__.c.Option, _objectSpread(_objectSpread({\n      data: data\n    }, props), {}, {\n      children: isOption(data) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(Label, {\n        option: data\n      })\n    }))\n  );\n}\n\nfunction MultiValueLabel(_ref3) {\n  var data = _ref3.data,\n      props = _objectWithoutProperties(_ref3, _excluded2);\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_select__WEBPACK_IMPORTED_MODULE_15__.c.MultiValueLabel, _objectSpread(_objectSpread({\n      data: data\n    }, props), {}, {\n      children: isOption(data) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(Label, {\n        option: data\n      })\n    }))\n  );\n}\n\nfunction Label(_ref4) {\n  var option = _ref4.option;\n  var Icon = option.Type === 'user' ? react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"] : react_feather__WEBPACK_IMPORTED_MODULE_17__[\"default\"];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\"div\", {\n    className: \"flex gap-1 items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(Icon, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"span\", {\n      children: option.Name\n    })]\n  });\n}//# sourceURL=webpack-internal:///52704\n");

}),

63582:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EditDetails\": function() { return /* binding */ EditDetails; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/BoxSelector */ 69);\n/* harmony import */ var _form_components_FormError__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/FormError */ 24751);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../types */ 83471);\n/* harmony import */ var _UsersField__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./UsersField */ 16711);\n/* harmony import */ var _TeamsField__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./TeamsField */ 60897);\n/* harmony import */ var _useLoadState__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./useLoadState */ 28502);\n/* harmony import */ var _useOptions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./useOptions */ 26021);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EditDetails(_ref) {\n  var values = _ref.values,\n      onChange = _ref.onChange,\n      _ref$isPublicVisible = _ref.isPublicVisible,\n      isPublicVisible = _ref$isPublicVisible === void 0 ? false : _ref$isPublicVisible,\n      errors = _ref.errors,\n      formNamespace = _ref.formNamespace,\n      environmentId = _ref.environmentId;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_11__.useUser)(),\n      user = _useUser.user,\n      isAdmin = _useUser.isAdmin;\n\n  var _useLoadState = (0,_useLoadState__WEBPACK_IMPORTED_MODULE_17__.useLoadState)(environmentId),\n      users = _useLoadState.users,\n      teams = _useLoadState.teams,\n      isLoading = _useLoadState.isLoading;\n\n  var options = (0,_useOptions__WEBPACK_IMPORTED_MODULE_18__.useOptions)(isAdmin, teams, isPublicVisible);\n  var handleChange = (0,react__WEBPACK_IMPORTED_MODULE_10__.useCallback)(function (partialValues) {\n    onChange(_objectSpread(_objectSpread({}, values), partialValues));\n  }, [values, onChange]);\n\n  if (isLoading || !teams || !users) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_BoxSelector__WEBPACK_IMPORTED_MODULE_12__.BoxSelector, {\n      radioName: withNamespace('ownership'),\n      value: values.ownership,\n      options: options,\n      onChange: function onChange(ownership) {\n        return handleChangeOwnership(ownership);\n      }\n    }), values.ownership === _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.RESTRICTED && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(\"div\", {\n      \"aria-label\": \"extra-options\",\n      children: [isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_UsersField__WEBPACK_IMPORTED_MODULE_15__.UsersField, {\n        name: withNamespace('authorizedUsers'),\n        users: users,\n        onChange: function onChange(authorizedUsers) {\n          return handleChange({\n            authorizedUsers: authorizedUsers\n          });\n        },\n        value: values.authorizedUsers,\n        errors: errors === null || errors === void 0 ? void 0 : errors.authorizedUsers\n      }), (isAdmin || teams.length > 1) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_TeamsField__WEBPACK_IMPORTED_MODULE_16__.TeamsField, {\n        name: withNamespace('authorizedTeams'),\n        teams: teams,\n        overrideTooltip: !isAdmin && teams.length > 1 ? '由于你是多个团队的成员，你可以选择哪些团队将能够管理该资源。' : undefined,\n        onChange: function onChange(authorizedTeams) {\n          return handleChange({\n            authorizedTeams: authorizedTeams\n          });\n        },\n        value: values.authorizedTeams,\n        errors: errors === null || errors === void 0 ? void 0 : errors.authorizedTeams\n      }), typeof errors === 'string' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"div\", {\n        className: \"form-group col-md-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_13__.FormError, {\n          children: errors\n        })\n      })]\n    })]\n  });\n\n  function withNamespace(name) {\n    return formNamespace ? \"\".concat(formNamespace, \".\").concat(name) : name;\n  }\n\n  function handleChangeOwnership(ownership) {\n    var authorizedTeams = values.authorizedTeams,\n        authorizedUsers = values.authorizedUsers;\n\n    if (ownership === _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.PRIVATE && user) {\n      authorizedUsers = [user.Id];\n      authorizedTeams = [];\n    }\n\n    if (ownership === _types__WEBPACK_IMPORTED_MODULE_14__.ResourceControlOwnership.RESTRICTED) {\n      authorizedUsers = [];\n      authorizedTeams = [];\n    }\n\n    handleChange({\n      ownership: ownership,\n      authorizedTeams: authorizedTeams,\n      authorizedUsers: authorizedUsers\n    });\n  }\n}//# sourceURL=webpack-internal:///63582\n");

}),

60897:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamsField\": function() { return /* binding */ TeamsField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TeamsSelector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/TeamsSelector */ 82938);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction TeamsField(_ref) {\n  var name = _ref.name,\n      teams = _ref.teams,\n      value = _ref.value,\n      overrideTooltip = _ref.overrideTooltip,\n      onChange = _ref.onChange,\n      errors = _ref.errors;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__.FormControl, {\n    label: \"\\u6388\\u6743\\u56E2\\u961F\",\n    tooltip: teams.length > 0 ? overrideTooltip || '你可以选择哪个（些）团队将能够管理该资源。' : undefined,\n    inputId: \"teams-selector\",\n    errors: errors,\n    children: teams.length > 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_TeamsSelector__WEBPACK_IMPORTED_MODULE_1__.TeamsSelector, {\n      name: name,\n      teams: teams,\n      onChange: onChange,\n      value: value,\n      inputId: \"teams-selector\"\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n      className: \"small text-muted\",\n      children: [\"\\u4F60\\u8FD8\\u6CA1\\u6709\\u521B\\u5EFA\\u4EFB\\u4F55\\u56E2\\u961F\\u3002\\u8BF7\\u5230\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_3__.Link, {\n        to: \"portainer.teams\",\n        children: \"\\u56E2\\u961F\\u89C6\\u56FE\"\n      }), \" \\u6765\\u7BA1\\u7406\\u56E2\\u961F\\u3002\"]\n    })\n  });\n}//# sourceURL=webpack-internal:///60897\n");

}),

16711:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UsersField\": function() { return /* binding */ UsersField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _UsersSelector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/UsersSelector */ 11068);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction UsersField(_ref) {\n  var name = _ref.name,\n      users = _ref.users,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      errors = _ref.errors;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__.FormControl, {\n    label: \"\\u6388\\u6743\\u7528\\u6237\",\n    tooltip: users.length > 0 ? '你可以选择哪些用户能够管理这个资源。' : undefined,\n    inputId: \"users-selector\",\n    errors: errors,\n    children: users.length > 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_UsersSelector__WEBPACK_IMPORTED_MODULE_1__.UsersSelector, {\n      name: name,\n      users: users,\n      onChange: onChange,\n      value: value,\n      inputId: \"users-selector\"\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n      className: \"small text-muted\",\n      children: [\"\\u4F60\\u8FD8\\u6CA1\\u6709\\u521B\\u5EFA\\u4EFB\\u4F55\\u7528\\u6237\\u3002\\u8BF7\\u5230\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_3__.Link, {\n        to: \"portainer.users\",\n        children: \"\\u7528\\u6237\\u89C6\\u56FE\"\n      }), \" \\u6765\\u7BA1\\u7406\\u7528\\u6237\\u3002\"]\n    })\n  });\n}//# sourceURL=webpack-internal:///16711\n");

}),

31825:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EditDetails": function() { return /* reexport safe */ _EditDetails__WEBPACK_IMPORTED_MODULE_0__.EditDetails; }
/* harmony export */ });
/* harmony import */ var _EditDetails__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EditDetails */ 63582);


}),

28502:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useLoadState\": function() { return /* binding */ useLoadState; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n\n\nfunction useLoadState(environmentId) {\n  var teams = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_0__.useTeams)(false, environmentId);\n  var users = (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_1__.useUsers)(false, environmentId);\n  return {\n    teams: teams.data,\n    users: users.data,\n    isLoading: teams.isLoading || users.isLoading\n  };\n}//# sourceURL=webpack-internal:///28502\n");

}),

26021:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useOptions\": function() { return /* binding */ useOptions; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/components/BoxSelector */ 20292);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/BoxSelector/BadgeIcon */ 90134);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../types */ 83471);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\nvar publicOption = {\n  value: _types__WEBPACK_IMPORTED_MODULE_17__.ResourceControlOwnership.PUBLIC,\n  label: '公开的',\n  id: 'access_public',\n  description: '我希望任何有权限进入这个环境的用户都能管理这个资源',\n  icon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__.BadgeIcon, {\n    icon: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__.ownershipIcon)('public')\n  })\n};\nfunction useOptions(isAdmin, teams) {\n  var isPublicVisible = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)([]),\n      _useState2 = _slicedToArray(_useState, 2),\n      options = _useState2[0],\n      setOptions = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    var options = isAdmin ? adminOptions() : nonAdminOptions(teams);\n    setOptions(isPublicVisible ? [].concat(_toConsumableArray(options), [publicOption]) : options);\n  }, [isAdmin, teams, isPublicVisible]);\n  return options;\n}\n\nfunction adminOptions() {\n  return [(0,_portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.buildOption)('access_administrators', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__.BadgeIcon, {\n    icon: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__.ownershipIcon)('administrators')\n  }), '管理员', '我想把这个资源的管理限制在只有管理员可以管理的范围内', _types__WEBPACK_IMPORTED_MODULE_17__.ResourceControlOwnership.ADMINISTRATORS), (0,_portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.buildOption)('access_restricted', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__.BadgeIcon, {\n    icon: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__.ownershipIcon)('restricted')\n  }), '受限的', '我想把这个资源的管理限制在一组用户和/或团队中', _types__WEBPACK_IMPORTED_MODULE_17__.ResourceControlOwnership.RESTRICTED)];\n}\n\nfunction nonAdminOptions(teams) {\n  return lodash_compact__WEBPACK_IMPORTED_MODULE_11___default()([(0,_portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.buildOption)('access_private', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__.BadgeIcon, {\n    icon: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__.ownershipIcon)('private')\n  }), '私人的', '我希望这个资源仅能由我自己管理。', _types__WEBPACK_IMPORTED_MODULE_17__.ResourceControlOwnership.PRIVATE), teams && teams.length > 0 && (0,_portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.buildOption)('access_restricted', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BoxSelector_BadgeIcon__WEBPACK_IMPORTED_MODULE_16__.BadgeIcon, {\n    icon: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_15__.ownershipIcon)('restricted')\n  }), '受限的', teams.length === 1 ? \"\\u6211\\u5E0C\\u671B\\u6211\\u7684\\u56E2\\u961F\\u7684\\u4EFB\\u4F55\\u6210\\u5458 (\".concat(teams[0].Name, \")  \\u90FD\\u80FD\\u7BA1\\u7406\\u8FD9\\u4E2A\\u8D44\\u6E90\") : '我想把这个资源的管理限制在我的一个或多个团队中。', _types__WEBPACK_IMPORTED_MODULE_17__.ResourceControlOwnership.RESTRICTED)]);\n}//# sourceURL=webpack-internal:///26021\n");

}),

6946:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PorAccessControlFormTeamSelector\": function() { return /* binding */ PorAccessControlFormTeamSelector; }\n/* harmony export */ });\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n// to be removed with the angularjs app/portainer/components/accessControlForm\nfunction PorAccessControlFormTeamSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      options = _ref.options,\n      inputId = _ref.inputId;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__.Select, {\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.Name;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return String(option.Id);\n    },\n    options: options,\n    value: value,\n    closeMenuOnSelect: false,\n    onChange: onChange,\n    \"data-cy\": \"portainer-selectTeamAccess\",\n    inputId: inputId,\n    placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u56E2\\u961F\"\n  });\n}//# sourceURL=webpack-internal:///6946\n");

}),

18405:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PorAccessControlFormUserSelector\": function() { return /* binding */ PorAccessControlFormUserSelector; }\n/* harmony export */ });\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n// to be removed with the angularjs app/portainer/components/accessControlForm\nfunction PorAccessControlFormUserSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      options = _ref.options,\n      inputId = _ref.inputId;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_0__.Select, {\n    isMulti: true,\n    getOptionLabel: function getOptionLabel(option) {\n      return option.Username;\n    },\n    getOptionValue: function getOptionValue(option) {\n      return String(option.Id);\n    },\n    options: options,\n    value: value,\n    closeMenuOnSelect: false,\n    onChange: onChange,\n    \"data-cy\": \"portainer-selectUserAccess\",\n    inputId: inputId,\n    placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u56E2\\u961F\"\n  });\n}//# sourceURL=webpack-internal:///18405\n");

}),

63625:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"applyResourceControlChange\": function() { return /* binding */ applyResourceControlChange; },\n/* harmony export */   \"applyResourceControl\": function() { return /* binding */ applyResourceControl; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ 33287);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n/**\n * Update an existing ResourceControl or create a new one on existing resource without RC\n * @param resourceType Type of ResourceControl\n * @param resourceId ID of involved Resource\n * @param resourceControl Previous ResourceControl (can be undefined)\n * @param formValues View data generated by AccessControlPanel\n */\n\nfunction applyResourceControlChange(resourceType, resourceId, formValues, resourceControl) {\n  var ownershipParameters = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.parseOwnershipParameters)(formValues);\n\n  if (resourceControl) {\n    return updateResourceControl(resourceControl.Id, ownershipParameters);\n  }\n\n  return createResourceControl(resourceType, resourceId, ownershipParameters);\n}\n/**\n * Apply a ResourceControl after Resource creation\n * @param accessControlData ResourceControl to apply\n * @param resourceControl ResourceControl to update\n * @param subResourcesIds SubResources managed by the ResourceControl\n */\n\nfunction applyResourceControl(accessControlData, resourceControl) {\n  var subResourcesIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n  var ownershipParameters = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.parseOwnershipParameters)(accessControlData, subResourcesIds);\n  return updateResourceControl(resourceControl.Id, ownershipParameters);\n}\n/**\n * Update a ResourceControl\n * @param resourceControlId ID of involved resource\n * @param ownershipParameters\n */\n\nfunction updateResourceControl(_x, _x2) {\n  return _updateResourceControl.apply(this, arguments);\n}\n/**\n * Create a ResourceControl\n * @param resourceType Type of ResourceControl\n * @param resourceId ID of involved resource\n * @param ownershipParameters Transient type from view data to payload\n */\n\n\nfunction _updateResourceControl() {\n  _updateResourceControl = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(resourceControlId, ownershipParameters) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_9__[\"default\"].put(buildUrl(resourceControlId), ownershipParameters);\n\n          case 3:\n            _context.next = 8;\n            break;\n\n          case 5:\n            _context.prev = 5;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_9__.parseAxiosError)(_context.t0);\n\n          case 8:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 5]]);\n  }));\n  return _updateResourceControl.apply(this, arguments);\n}\n\nfunction createResourceControl(_x3, _x4, _x5) {\n  return _createResourceControl.apply(this, arguments);\n}\n\nfunction _createResourceControl() {\n  _createResourceControl = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(resourceType, resourceId, ownershipParameters) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_9__[\"default\"].post(buildUrl(), _objectSpread(_objectSpread({}, ownershipParameters), {}, {\n              type: resourceType,\n              resourceId: resourceId\n            }));\n\n          case 3:\n            _context2.next = 8;\n            break;\n\n          case 5:\n            _context2.prev = 5;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_9__.parseAxiosError)(_context2.t0);\n\n          case 8:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 5]]);\n  }));\n  return _createResourceControl.apply(this, arguments);\n}\n\nfunction buildUrl(id) {\n  var url = '/resource_controls';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///63625\n");

}),

61190:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlPanel\": function() { return /* reexport safe */ _AccessControlPanel__WEBPACK_IMPORTED_MODULE_0__.AccessControlPanel; },\n/* harmony export */   \"AccessControlForm\": function() { return /* reexport safe */ _AccessControlForm__WEBPACK_IMPORTED_MODULE_1__.AccessControlForm; }\n/* harmony export */ });\n/* harmony import */ var _AccessControlPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AccessControlPanel */ 82466);\n/* harmony import */ var _AccessControlForm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AccessControlForm */ 59107);\n\n//# sourceURL=webpack-internal:///61190\n");

}),

80178:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ResourceControlViewModel\": function() { return /* binding */ ResourceControlViewModel; },\n/* harmony export */   \"determineOwnership\": function() { return /* binding */ determineOwnership; }\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ 83471);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\nvar ResourceControlViewModel = /*#__PURE__*/_createClass(function ResourceControlViewModel(data) {\n  _classCallCheck(this, ResourceControlViewModel);\n\n  this.Id = data.Id;\n  this.Type = data.Type;\n  this.ResourceId = data.ResourceId;\n  this.UserAccesses = data.UserAccesses;\n  this.TeamAccesses = data.TeamAccesses;\n  this.Public = data.Public;\n  this.System = data.System;\n  this.Ownership = determineOwnership(data);\n});\nfunction determineOwnership(resourceControl) {\n  if (resourceControl.Public) {\n    return _types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.PUBLIC;\n  }\n\n  if (resourceControl.UserAccesses.length === 1 && resourceControl.TeamAccesses.length === 0) {\n    return _types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.PRIVATE;\n  }\n\n  if (resourceControl.UserAccesses.length > 1 || resourceControl.TeamAccesses.length > 0) {\n    return _types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.RESTRICTED;\n  }\n\n  return _types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.ADMINISTRATORS;\n}//# sourceURL=webpack-internal:///80178\n");

}),

83471:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ResourceControlOwnership\": function() { return /* binding */ ResourceControlOwnership; },\n/* harmony export */   \"ResourceControlType\": function() { return /* binding */ ResourceControlType; }\n/* harmony export */ });\nvar ResourceControlOwnership;\n/**\n * Transient type from view data to payload\n */\n\n(function (ResourceControlOwnership) {\n  ResourceControlOwnership[\"PUBLIC\"] = \"public\";\n  ResourceControlOwnership[\"PRIVATE\"] = \"private\";\n  ResourceControlOwnership[\"RESTRICTED\"] = \"restricted\";\n  ResourceControlOwnership[\"ADMINISTRATORS\"] = \"administrators\";\n})(ResourceControlOwnership || (ResourceControlOwnership = {}));\n\nvar ResourceControlType;\n\n(function (ResourceControlType) {\n  ResourceControlType[ResourceControlType[\"Container\"] = 1] = \"Container\";\n  ResourceControlType[ResourceControlType[\"Service\"] = 2] = \"Service\";\n  ResourceControlType[ResourceControlType[\"Volume\"] = 3] = \"Volume\";\n  ResourceControlType[ResourceControlType[\"Network\"] = 4] = \"Network\";\n  ResourceControlType[ResourceControlType[\"Secret\"] = 5] = \"Secret\";\n  ResourceControlType[ResourceControlType[\"Stack\"] = 6] = \"Stack\";\n  ResourceControlType[ResourceControlType[\"Config\"] = 7] = \"Config\";\n  ResourceControlType[ResourceControlType[\"CustomTemplate\"] = 8] = \"CustomTemplate\";\n  ResourceControlType[ResourceControlType[\"ContainerGroup\"] = 9] = \"ContainerGroup\";\n})(ResourceControlType || (ResourceControlType = {}));\n\nvar ResourceAccessLevel;\n\n(function (ResourceAccessLevel) {\n  ResourceAccessLevel[ResourceAccessLevel[\"ReadWriteAccessLevel\"] = 1] = \"ReadWriteAccessLevel\";\n})(ResourceAccessLevel || (ResourceAccessLevel = {}));//# sourceURL=webpack-internal:///83471\n");

}),

33287:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parseOwnershipParameters\": function() { return /* binding */ parseOwnershipParameters; },\n/* harmony export */   \"parseAccessControlFormData\": function() { return /* binding */ parseAccessControlFormData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ 83471);\n\n\n\n\n\n/**\n * Transform AccessControlFormData to ResourceControlOwnershipParameters\n * @param {int} userId ID of user performing the operation\n * @param {AccessControlFormData} formValues Form data (generated by AccessControlForm)\n * @param {int[]} subResources Sub Resources restricted by the ResourceControl\n */\nfunction parseOwnershipParameters(formValues) {\n  var subResourcesIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var ownership = formValues.ownership,\n      authorizedTeams = formValues.authorizedTeams,\n      authorizedUsers = formValues.authorizedUsers;\n  var adminOnly = ownership === _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.ADMINISTRATORS;\n  var publicOnly = ownership === _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PUBLIC;\n  var users = authorizedUsers;\n  var teams = authorizedTeams;\n\n  if ([_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.ADMINISTRATORS, _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PUBLIC].includes(ownership)) {\n    users = [];\n    teams = [];\n  }\n\n  return {\n    administratorsOnly: adminOnly,\n    public: publicOnly,\n    users: users,\n    teams: teams,\n    subResourcesIds: subResourcesIds\n  };\n}\nfunction parseAccessControlFormData(isAdmin, resourceControl) {\n  var ownership = (resourceControl === null || resourceControl === void 0 ? void 0 : resourceControl.Ownership) || _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PRIVATE;\n\n  if (isAdmin) {\n    if (!resourceControl) {\n      ownership = _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.ADMINISTRATORS;\n    } else if (ownership === _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PRIVATE) {\n      ownership = _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.RESTRICTED;\n    }\n  }\n\n  var authorizedTeams = [];\n  var authorizedUsers = [];\n\n  if (resourceControl && [_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PRIVATE, _types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.RESTRICTED].includes(ownership)) {\n    authorizedTeams = resourceControl.TeamAccesses.map(function (ra) {\n      return ra.TeamId;\n    });\n    authorizedUsers = resourceControl.UserAccesses.map(function (ra) {\n      return ra.UserId;\n    });\n  }\n\n  return {\n    ownership: ownership,\n    authorizedUsers: authorizedUsers,\n    authorizedTeams: authorizedTeams\n  };\n}//# sourceURL=webpack-internal:///33287\n");

}),

861:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateAccessToken\": function() { return /* binding */ CreateAccessToken; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react-i18next */ 73281);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react-i18next */ 5500);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/Code */ 25078);\n/* harmony import */ var _buttons_CopyButton__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/buttons/CopyButton */ 69574);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CreateAccessToken(_ref) {\n  var onSubmit = _ref.onSubmit,\n      onError = _ref.onError;\n  var translationNS = 'account.accessTokens.create';\n\n  var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_24__.useTranslation)(translationNS),\n      t = _useTranslation.t;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_14__.useRouter)();\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(''),\n      _useState2 = _slicedToArray(_useState, 2),\n      description = _useState2[0],\n      setDescription = _useState2[1];\n\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(''),\n      _useState4 = _slicedToArray(_useState3, 2),\n      errorText = _useState4[0],\n      setErrorText = _useState4[1];\n\n  var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(false),\n      _useState6 = _slicedToArray(_useState5, 2),\n      isLoading = _useState6[0],\n      setIsLoading = _useState6[1];\n\n  var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(''),\n      _useState8 = _slicedToArray(_useState7, 2),\n      accessToken = _useState8[0],\n      setAccessToken = _useState8[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    if (description.length === 0) {\n      setErrorText(t('this field is required'));\n    } else setErrorText('');\n  }, [description, t]);\n\n  function generateAccessToken() {\n    return _generateAccessToken.apply(this, arguments);\n  }\n\n  function _generateAccessToken() {\n    _generateAccessToken = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var response;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              if (!isLoading) {\n                _context.next = 2;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 2:\n              setIsLoading(true);\n              _context.prev = 3;\n              _context.next = 6;\n              return onSubmit(description);\n\n            case 6:\n              response = _context.sent;\n              setAccessToken(response.rawAPIKey);\n              _context.next = 13;\n              break;\n\n            case 10:\n              _context.prev = 10;\n              _context.t0 = _context[\"catch\"](3);\n              onError('Failure', _context.t0, 'Failed to generate access token');\n\n            case 13:\n              _context.prev = 13;\n              setIsLoading(false);\n              return _context.finish(13);\n\n            case 16:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[3, 10, 13, 16]]);\n    }));\n    return _generateAccessToken.apply(this, arguments);\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_15__.Widget, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_15__.WidgetBody, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(\"div\", {\n        className: \"form-horizontal\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__.FormControl, {\n          inputId: \"input\",\n          label: t('Description'),\n          errors: errorText,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_22__.Input, {\n            id: \"input\",\n            onChange: function onChange(e) {\n              return setDescription(e.target.value);\n            },\n            value: description\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n          className: \"row mt-5\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_17__.Button, {\n            disabled: !!errorText || !!accessToken,\n            onClick: function onClick() {\n              return generateAccessToken();\n            },\n            children: t('Add access token')\n          })\n        })]\n      }), accessToken && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(\"div\", {\n        className: \"mt-5\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_18__.FormSectionTitle, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_25__.Trans, {\n            ns: translationNS,\n            children: \"New access token\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__.TextTip, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_25__.Trans, {\n            ns: translationNS,\n            children: \"Please copy the new access token. You won't be able to view the token again.\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_Code__WEBPACK_IMPORTED_MODULE_20__.Code, {\n          children: accessToken\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_buttons_CopyButton__WEBPACK_IMPORTED_MODULE_21__.CopyButton, {\n          copyText: accessToken,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_25__.Trans, {\n            ns: translationNS,\n            children: \"Copy access token\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_17__.Button, {\n          type: \"button\",\n          onClick: function onClick() {\n            return router.stateService.go('portainer.account');\n          },\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(react_i18next__WEBPACK_IMPORTED_MODULE_25__.Trans, {\n            ns: translationNS,\n            children: \"Done\"\n          })\n        })]\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///861\n");

}),

55695:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CreateAccessToken": function() { return /* reexport safe */ _CreateAccessToken__WEBPACK_IMPORTED_MODULE_0__.CreateAccessToken; }
/* harmony export */ });
/* harmony import */ var _CreateAccessToken__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateAccessToken */ 861);


}),

22306:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CustomTemplatesVariablesDefinitionField\": function() { return /* binding */ CustomTemplatesVariablesDefinitionField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _form_components_FormError__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/FormError */ 24751);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_InputList__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/InputList */ 59505);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\nfunction CustomTemplatesVariablesDefinitionField(_ref) {\n  var onChange = _ref.onChange,\n      value = _ref.value,\n      errors = _ref.errors,\n      isVariablesNamesFromParent = _ref.isVariablesNamesFromParent;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_InputList__WEBPACK_IMPORTED_MODULE_15__.InputList, {\n    label: \"Variables definition\",\n    onChange: onChange,\n    value: value,\n    renderItem: function renderItem(item, onChange, error) {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(Item, {\n        item: item,\n        onChange: onChange,\n        error: error,\n        isNameReadonly: isVariablesNamesFromParent\n      });\n    },\n    itemBuilder: function itemBuilder() {\n      return {\n        label: '',\n        name: '',\n        defaultValue: '',\n        description: ''\n      };\n    },\n    errors: errors,\n    textTip: \"List should map the mustache variables in the template file, if default value is empty, the variable will be required.\",\n    isAddButtonHidden: isVariablesNamesFromParent\n  });\n}\n\nfunction Item(_ref2) {\n  var item = _ref2.item,\n      onChange = _ref2.onChange,\n      error = _ref2.error,\n      isNameReadonly = _ref2.isNameReadonly;\n  var errorObj = _typeof(error) === 'object' ? error : {};\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n    className: \"flex gap-2\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_14__.Input, {\n        value: item.name,\n        name: \"name\",\n        onChange: handleChange,\n        placeholder: \"Name (e.g var_name)\",\n        readOnly: isNameReadonly\n      }), (errorObj === null || errorObj === void 0 ? void 0 : errorObj.name) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_13__.FormError, {\n        children: errorObj.name\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_14__.Input, {\n        value: item.label,\n        onChange: handleChange,\n        placeholder: \"Label\",\n        name: \"label\"\n      }), (errorObj === null || errorObj === void 0 ? void 0 : errorObj.label) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_13__.FormError, {\n        children: errorObj.label\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_14__.Input, {\n        name: \"description\",\n        value: item.description,\n        onChange: handleChange,\n        placeholder: \"Description\"\n      }), (errorObj === null || errorObj === void 0 ? void 0 : errorObj.description) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_13__.FormError, {\n        children: errorObj.description\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_14__.Input, {\n        value: item.defaultValue,\n        onChange: handleChange,\n        placeholder: \"Default Value\",\n        name: \"defaultValue\"\n      }), (errorObj === null || errorObj === void 0 ? void 0 : errorObj.defaultValue) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_FormError__WEBPACK_IMPORTED_MODULE_13__.FormError, {\n        children: errorObj.defaultValue\n      })]\n    })]\n  });\n\n  function handleChange(e) {\n    onChange(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, e.target.name, e.target.value)));\n  }\n}//# sourceURL=webpack-internal:///22306\n");

}),

82301:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CustomTemplatesVariablesDefinitionField": function() { return /* reexport safe */ _CustomTemplatesVariablesDefinitionField__WEBPACK_IMPORTED_MODULE_0__.CustomTemplatesVariablesDefinitionField; }
/* harmony export */ });
/* harmony import */ var _CustomTemplatesVariablesDefinitionField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CustomTemplatesVariablesDefinitionField */ 22306);


}),

48840:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CustomTemplatesVariablesField\": function() { return /* binding */ CustomTemplatesVariablesField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_FormSection_FormSection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/form-components/FormSection/FormSection */ 77313);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CustomTemplatesVariablesField(_ref) {\n  var value = _ref.value,\n      definitions = _ref.definitions,\n      _onChange = _ref.onChange;\n\n  if (!definitions || !definitions.length) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormSection_FormSection__WEBPACK_IMPORTED_MODULE_11__.FormSection, {\n    title: \"Template Variables\",\n    children: definitions.map(function (def) {\n      var inputId = \"\".concat(def.name, \"-input\");\n      var variable = value[def.name] || '';\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_10__.FormControl, {\n        required: !def.defaultValue,\n        label: def.label,\n        inputId: inputId,\n        tooltip: def.description,\n        size: \"small\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_12__.Input, {\n          name: \"variables.\".concat(def.name),\n          value: variable,\n          id: inputId,\n          onChange: function onChange(e) {\n            return _onChange(_objectSpread(_objectSpread({}, value), {}, _defineProperty({}, def.name, e.target.value)));\n          }\n        })\n      }, def.name);\n    })\n  });\n}//# sourceURL=webpack-internal:///48840\n");

}),

13513:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CustomTemplatesVariablesField": function() { return /* reexport safe */ _CustomTemplatesVariablesField__WEBPACK_IMPORTED_MODULE_0__.CustomTemplatesVariablesField; }
/* harmony export */ });
/* harmony import */ var _CustomTemplatesVariablesField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CustomTemplatesVariablesField */ 48840);


}),

26951:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTemplateVariables\": function() { return /* binding */ getTemplateVariables; },\n/* harmony export */   \"intersectVariables\": function() { return /* binding */ intersectVariables; },\n/* harmony export */   \"renderTemplate\": function() { return /* binding */ renderTemplate; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/uniqBy */ 93715);\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqBy__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var mustache__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! mustache */ 53124);\n\n\n\n\n\n\n\n\n\n\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\nfunction getTemplateVariables(templateStr) {\n  var template = validateAndParse(templateStr);\n\n  if (!template) {\n    return null;\n  }\n\n  return template.filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        type = _ref2[0],\n        value = _ref2[1];\n\n    return type === 'name' && value;\n  }).map(function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        value = _ref4[1];\n\n    return {\n      name: value,\n      label: '',\n      defaultValue: '',\n      description: ''\n    };\n  });\n}\n\nfunction validateAndParse(templateStr) {\n  if (!templateStr) {\n    return [];\n  }\n\n  try {\n    return mustache__WEBPACK_IMPORTED_MODULE_19__[\"default\"].parse(templateStr);\n  } catch (e) {\n    return null;\n  }\n}\n\nfunction intersectVariables() {\n  var oldVariables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var newVariables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var oldVariablesWithLabel = oldVariables.filter(function (v) {\n    return !!v.label;\n  });\n  return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_9___default()([].concat(_toConsumableArray(oldVariablesWithLabel), _toConsumableArray(newVariables.filter(function (v) {\n    return !oldVariablesWithLabel.find(function (_ref5) {\n      var name = _ref5.name;\n      return name === v.name;\n    });\n  }))), 'name');\n}\nfunction renderTemplate(template, variables, definitions) {\n  var state = Object.fromEntries(lodash_compact__WEBPACK_IMPORTED_MODULE_8___default()(Object.entries(variables).map(function (_ref6) {\n    var _ref7 = _slicedToArray(_ref6, 2),\n        name = _ref7[0],\n        value = _ref7[1];\n\n    if (value) {\n      return [name, value];\n    }\n\n    var definition = definitions.find(function (def) {\n      return def.name === name;\n    });\n\n    if (!definition) {\n      return null;\n    }\n\n    return [name, definition.defaultValue || \"{{ \".concat(definition.name, \" }}\")];\n  })));\n  return mustache__WEBPACK_IMPORTED_MODULE_19__[\"default\"].render(template, state, undefined, {\n    escape: function escape(t) {\n      return t;\n    }\n  });\n}//# sourceURL=webpack-internal:///26951\n");

}),

42492:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateView\": function() { return /* binding */ CreateView; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 47116);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/feature-flags/useRedirectFeatureFlag */ 31947);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types */ 44789);\n/* harmony import */ var _queries_create__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../queries/create */ 87967);\n/* harmony import */ var _common_validation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/validation */ 8064);\n/* harmony import */ var _common_ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/ScheduleTypeSelector */ 48623);\n/* harmony import */ var _queries_list__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../queries/list */ 43440);\n/* harmony import */ var _common_EdgeGroupsField__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/EdgeGroupsField */ 41379);\n/* harmony import */ var _common_NameField__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../common/NameField */ 96099);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar initialValues = {\n  name: '',\n  groupIds: [],\n  type: _types__WEBPACK_IMPORTED_MODULE_7__.ScheduleType.Update,\n  time: Math.floor(Date.now() / 1000) + 60 * 60,\n  environments: {}\n};\nfunction CreateView() {\n  (0,_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__.useRedirectFeatureFlag)(_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__.FeatureFlag.EdgeRemoteUpdate);\n  var schedulesQuery = (0,_queries_list__WEBPACK_IMPORTED_MODULE_11__.useList)();\n  var createMutation = (0,_queries_create__WEBPACK_IMPORTED_MODULE_8__.useCreateMutation)();\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_1__.useRouter)();\n\n  if (!schedulesQuery.data) {\n    return null;\n  }\n\n  var schedules = schedulesQuery.data;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_4__.PageHeader, {\n      title: \"Update & Rollback\",\n      breadcrumbs: \"Edge agent update and rollback\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_5__.Widget, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_5__.Widget.Title, {\n            title: \"Update & Rollback Scheduler\",\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_5__.Widget.Body, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(formik__WEBPACK_IMPORTED_MODULE_0__.Formik, {\n              initialValues: initialValues,\n              onSubmit: handleSubmit,\n              validateOnMount: true,\n              validationSchema: function validationSchema() {\n                return (0,_common_validation__WEBPACK_IMPORTED_MODULE_9__.validation)(schedules);\n              },\n              children: function children(_ref) {\n                var isValid = _ref.isValid;\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_0__.Form, {\n                  className: \"form-horizontal\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_common_NameField__WEBPACK_IMPORTED_MODULE_13__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_common_EdgeGroupsField__WEBPACK_IMPORTED_MODULE_12__.EdgeGroupsField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_common_ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_10__.ScheduleTypeSelector, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n                    className: \"form-group\",\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\"div\", {\n                      className: \"col-sm-12\",\n                      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_6__.LoadingButton, {\n                        disabled: !isValid,\n                        isLoading: createMutation.isLoading,\n                        loadingText: \"Creating...\",\n                        children: \"Create Schedule\"\n                      })\n                    })\n                  })]\n                });\n              }\n            })\n          })]\n        })\n      })\n    })]\n  });\n\n  function handleSubmit(values) {\n    createMutation.mutate(values, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__.notifySuccess)('Success', 'Created schedule successfully');\n        router.stateService.go('^');\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///42492\n");

}),

80599:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CreateView": function() { return /* reexport safe */ _CreateView__WEBPACK_IMPORTED_MODULE_0__.CreateView; }
/* harmony export */ });
/* harmony import */ var _CreateView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateView */ 42492);


}),

12248:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemView\": function() { return /* binding */ ItemView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! react-feather */ 47116);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/feature-flags/useRedirectFeatureFlag */ 31947);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _common_ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../common/ScheduleTypeSelector */ 48623);\n/* harmony import */ var _queries_useItem__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../queries/useItem */ 11628);\n/* harmony import */ var _common_validation__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../common/validation */ 8064);\n/* harmony import */ var _queries_useUpdateMutation__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../queries/useUpdateMutation */ 23894);\n/* harmony import */ var _queries_list__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../queries/list */ 43440);\n/* harmony import */ var _common_NameField__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../common/NameField */ 96099);\n/* harmony import */ var _common_EdgeGroupsField__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../common/EdgeGroupsField */ 41379);\n/* harmony import */ var _ScheduleDetails__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ScheduleDetails */ 41772);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ItemView() {\n  (0,_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_21__.useRedirectFeatureFlag)(_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_21__.FeatureFlag.EdgeRemoteUpdate);\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_17__.useCurrentStateAndParams)(),\n      idParam = _useCurrentStateAndPa.params.id;\n\n  var id = parseInt(idParam, 10);\n\n  if (!idParam || Number.isNaN(id)) {\n    throw new Error('id is a required path param');\n  }\n\n  var updateMutation = (0,_queries_useUpdateMutation__WEBPACK_IMPORTED_MODULE_28__.useUpdateMutation)();\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_17__.useRouter)();\n  var itemQuery = (0,_queries_useItem__WEBPACK_IMPORTED_MODULE_26__.useItem)(id);\n  var schedulesQuery = (0,_queries_list__WEBPACK_IMPORTED_MODULE_29__.useList)();\n  var isDisabled = (0,react__WEBPACK_IMPORTED_MODULE_18__.useMemo)(function () {\n    return itemQuery.data ? itemQuery.data.time < Date.now() / 1000 : false;\n  }, [itemQuery.data]);\n\n  if (!itemQuery.data || !schedulesQuery.data) {\n    return null;\n  }\n\n  var item = itemQuery.data;\n  var schedules = schedulesQuery.data;\n  var initialValues = {\n    name: item.name,\n    groupIds: item.groupIds,\n    type: item.type,\n    time: item.time,\n    environments: Object.fromEntries(Object.entries(item.status).map(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          envId = _ref2[0],\n          status = _ref2[1];\n\n      return [parseInt(envId, 10), status.targetVersion];\n    }))\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_22__.PageHeader, {\n      title: \"Update & Rollback\",\n      breadcrumbs: [{\n        label: 'Edge agent update and rollback',\n        link: '^'\n      }, item.name]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_23__.Widget, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_23__.Widget.Title, {\n            title: \"Update & Rollback Scheduler\",\n            icon: react_feather__WEBPACK_IMPORTED_MODULE_34__[\"default\"]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_23__.Widget.Body, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(formik__WEBPACK_IMPORTED_MODULE_16__.Formik, {\n              initialValues: initialValues,\n              onSubmit: function onSubmit(values) {\n                updateMutation.mutate({\n                  id: id,\n                  values: values\n                }, {\n                  onSuccess: function onSuccess() {\n                    (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_20__.notifySuccess)('Success', 'Updated schedule successfully');\n                    router.stateService.go('^');\n                  }\n                });\n              },\n              validateOnMount: true,\n              validationSchema: function validationSchema() {\n                return updateValidation(item.id, item.time, schedules);\n              },\n              children: function children(_ref3) {\n                var isValid = _ref3.isValid;\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_16__.Form, {\n                  className: \"form-horizontal\",\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_common_NameField__WEBPACK_IMPORTED_MODULE_30__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_common_EdgeGroupsField__WEBPACK_IMPORTED_MODULE_31__.EdgeGroupsField, {\n                    disabled: isDisabled\n                  }), isDisabled ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_ScheduleDetails__WEBPACK_IMPORTED_MODULE_32__.ScheduleDetails, {\n                    schedule: item\n                  }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_common_ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_25__.ScheduleTypeSelector, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n                    className: \"form-group\",\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n                      className: \"col-sm-12\",\n                      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_24__.LoadingButton, {\n                        disabled: !isValid,\n                        isLoading: updateMutation.isLoading,\n                        loadingText: \"Updating...\",\n                        children: \"Update Schedule\"\n                      })\n                    })\n                  })]\n                });\n              }\n            })\n          })]\n        })\n      })\n    })]\n  });\n}\n\nfunction updateValidation(itemId, scheduledTime, schedules) {\n  return scheduledTime > Date.now() / 1000 ? (0,_common_validation__WEBPACK_IMPORTED_MODULE_27__.validation)(schedules, itemId) : (0,yup__WEBPACK_IMPORTED_MODULE_19__.object)({\n    name: (0,_common_NameField__WEBPACK_IMPORTED_MODULE_30__.nameValidation)(schedules, itemId)\n  });\n}//# sourceURL=webpack-internal:///12248\n");

}),

41772:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScheduleDetails\": function() { return /* binding */ ScheduleDetails; }\n/* harmony export */ });\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/groupBy */ 86103);\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types */ 44789);\n/* harmony import */ var _common_ScheduledTimeField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/ScheduledTimeField */ 70155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nfunction ScheduleDetails(_ref) {\n  var schedule = _ref.schedule;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_4__.NavTabs, {\n        options: [{\n          id: _types__WEBPACK_IMPORTED_MODULE_5__.ScheduleType.Update,\n          label: 'Update',\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(UpdateDetails, {\n            schedule: schedule\n          })\n        }, {\n          id: _types__WEBPACK_IMPORTED_MODULE_5__.ScheduleType.Rollback,\n          label: 'Rollback',\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(UpdateDetails, {\n            schedule: schedule\n          })\n        }],\n        selectedId: schedule.type,\n        onSelect: function onSelect() {},\n        disabled: true\n      })\n    })\n  });\n}\n\nfunction UpdateDetails(_ref2) {\n  var schedule = _ref2.schedule;\n  var schedulesCount = Object.values(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(schedule.status, function (status) {\n    return \"\".concat(status.currentVersion, \"-\").concat(status.targetVersion);\n  })).map(function (statuses) {\n    return {\n      count: statuses.length,\n      currentVersion: statuses[0].currentVersion,\n      targetVersion: statuses[0].targetVersion\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: schedulesCount.map(function (_ref3) {\n          var count = _ref3.count,\n              currentVersion = _ref3.currentVersion,\n              targetVersion = _ref3.targetVersion;\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n            children: [count, \" edge device(s) selected for\", ' ', schedule.type === _types__WEBPACK_IMPORTED_MODULE_5__.ScheduleType.Rollback ? 'rollback' : 'update', ' ', \"from v\", currentVersion, \" to v\", targetVersion]\n          }, \"\".concat(currentVersion, \"-\").concat(targetVersion));\n        })\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_common_ScheduledTimeField__WEBPACK_IMPORTED_MODULE_6__.ScheduledTimeField, {\n      disabled: true\n    })]\n  });\n}//# sourceURL=webpack-internal:///41772\n");

}),

53873:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ItemView": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_0__.ItemView; }
/* harmony export */ });
/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemView */ 12248);


}),

93295:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ListView\": function() { return /* binding */ ListView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 36456);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var _portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/feature-flags/useRedirectFeatureFlag */ 31947);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _queries_list__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../queries/list */ 43440);\n/* harmony import */ var _queries_useRemoveMutation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../queries/useRemoveMutation */ 42464);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./columns */ 87894);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./datatable-store */ 8772);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar storageKey = 'update-schedules-list';\nvar useStore = (0,_datatable_store__WEBPACK_IMPORTED_MODULE_13__.createStore)(storageKey);\nfunction ListView() {\n  (0,_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__.useRedirectFeatureFlag)(_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_3__.FeatureFlag.EdgeRemoteUpdate);\n  var listQuery = (0,_queries_list__WEBPACK_IMPORTED_MODULE_10__.useList)();\n  var store = useStore();\n\n  if (!listQuery.data) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_7__.PageHeader, {\n      title: \"Update & Rollback\",\n      reload: true,\n      breadcrumbs: \"Update and rollback\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_6__.Datatable, {\n      columns: _columns__WEBPACK_IMPORTED_MODULE_12__.columns,\n      titleOptions: {\n        title: 'Update & rollback',\n        icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n      },\n      dataset: listQuery.data,\n      settingsStore: store,\n      storageKey: storageKey,\n      emptyContentLabel: \"No schedules found\",\n      isLoading: listQuery.isLoading,\n      totalCount: listQuery.data.length,\n      renderTableActions: function renderTableActions(selectedRows) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(TableActions, {\n          selectedRows: selectedRows\n        });\n      }\n    })]\n  });\n}\n\nfunction TableActions(_ref) {\n  var selectedRows = _ref.selectedRows;\n  var removeMutation = (0,_queries_useRemoveMutation__WEBPACK_IMPORTED_MODULE_11__.useRemoveMutation)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_8__.Button, {\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n      color: \"dangerlight\",\n      onClick: function onClick() {\n        return handleRemove();\n      },\n      disabled: selectedRows.length === 0,\n      children: \"Remove\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_9__.Link, {\n      to: \".create\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_8__.Button, {\n        children: \"Add update & rollback schedule\"\n      })\n    })]\n  });\n\n  function handleRemove() {\n    return _handleRemove.apply(this, arguments);\n  }\n\n  function _handleRemove() {\n    _handleRemove = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_5__.confirmDeletionAsync)('Are you sure you want to remove these?');\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 5:\n              removeMutation.mutate(selectedRows, {\n                onSuccess: function onSuccess() {\n                  (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_4__.notifySuccess)('Success', 'Schedules successfully removed');\n                }\n              });\n\n            case 6:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleRemove.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///93295\n");

}),

81861:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"created\": function() { return /* binding */ created; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n\nvar created = {\n  Header: '创建于',\n  accessor: function accessor(row) {\n    return (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.isoDateFromTimestamp)(row.created);\n  },\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false\n};//# sourceURL=webpack-internal:///81861\n");

}),

95499:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"groups\": function() { return /* binding */ groups; },\n/* harmony export */   \"GroupsCell\": function() { return /* binding */ GroupsCell; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react/edge/edge-groups/queries/useEdgeGroups */ 94858);\n\n\n\n\n\n\nvar groups = {\n  Header: 'Groups',\n  accessor: 'groupIds',\n  Cell: GroupsCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  disableSortBy: true\n};\nfunction GroupsCell(_ref) {\n  var groupsIds = _ref.value;\n  var groupsQuery = (0,_react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_5__.useEdgeGroups)();\n\n  var groups = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(groupsIds.map(function (id) {\n    var _groupsQuery$data;\n\n    return (_groupsQuery$data = groupsQuery.data) === null || _groupsQuery$data === void 0 ? void 0 : _groupsQuery$data.find(function (g) {\n      return g.Id === id;\n    });\n  }));\n\n  return groups.map(function (g) {\n    return g.Name;\n  }).join(', ');\n}//# sourceURL=webpack-internal:///95499\n");

}),

87894:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"columns\": function() { return /* binding */ columns; }\n/* harmony export */ });\n/* harmony import */ var _created__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./created */ 81861);\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groups */ 95499);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./name */ 51303);\n/* harmony import */ var _schedule_status__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schedule-status */ 12222);\n/* harmony import */ var _scheduled_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scheduled-time */ 98063);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./type */ 65152);\n\n\n\n\n\n\nvar columns = [_name__WEBPACK_IMPORTED_MODULE_2__.name, _scheduled_time__WEBPACK_IMPORTED_MODULE_4__.scheduledTime, _groups__WEBPACK_IMPORTED_MODULE_1__.groups, _type__WEBPACK_IMPORTED_MODULE_5__.scheduleType, _schedule_status__WEBPACK_IMPORTED_MODULE_3__.scheduleStatus, _created__WEBPACK_IMPORTED_MODULE_0__.created];//# sourceURL=webpack-internal:///87894\n");

}),

51303:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar name = {\n  Header: '名称',\n  accessor: 'name',\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      row = _ref.row;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_0__.Link, {\n    to: \".item\",\n    params: {\n      id: row.original.id\n    },\n    children: name\n  });\n}//# sourceURL=webpack-internal:///51303\n");

}),

12222:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"scheduleStatus\": function() { return /* binding */ scheduleStatus; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../types */ 44789);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar scheduleStatus = {\n  Header: 'Status',\n  accessor: function accessor(row) {\n    return row.status;\n  },\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  Cell: StatusCell,\n  disableSortBy: true\n};\n\nfunction StatusCell(_ref) {\n  var status = _ref.value,\n      schedule = _ref.row.original;\n\n  if (schedule.time > Date.now() / 1000) {\n    return 'Scheduled';\n  }\n\n  var statusList = Object.entries(status).map(function (_ref2) {\n    var _ref3 = _slicedToArray(_ref2, 2),\n        environmentId = _ref3[0],\n        envStatus = _ref3[1];\n\n    return _objectSpread(_objectSpread({}, envStatus), {}, {\n      environmentId: environmentId\n    });\n  });\n\n  if (statusList.length === 0) {\n    return 'No related environments';\n  }\n\n  var error = statusList.find(function (s) {\n    return s.status === _types__WEBPACK_IMPORTED_MODULE_20__.StatusType.Failed;\n  });\n\n  if (error) {\n    return \"Failed: (ID: \".concat(error.environmentId, \") \").concat(error.error);\n  }\n\n  var pending = statusList.find(function (s) {\n    return s.status === _types__WEBPACK_IMPORTED_MODULE_20__.StatusType.Pending;\n  });\n\n  if (pending) {\n    return 'Pending';\n  }\n\n  return 'Success';\n}//# sourceURL=webpack-internal:///12222\n");

}),

98063:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"scheduledTime\": function() { return /* binding */ scheduledTime; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n\nvar scheduledTime = {\n  Header: 'Scheduled Time & Date',\n  accessor: function accessor(row) {\n    return (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.isoDateFromTimestamp)(row.time);\n  },\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false\n};//# sourceURL=webpack-internal:///98063\n");

}),

65152:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"scheduleType\": function() { return /* binding */ scheduleType; }\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../types */ 44789);\n\nvar scheduleType = {\n  Header: 'Type',\n  accessor: function accessor(row) {\n    return _types__WEBPACK_IMPORTED_MODULE_0__.ScheduleType[row.type];\n  },\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};//# sourceURL=webpack-internal:///65152\n");

}),

8772:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/components/datatables/types */ 16579);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nfunction createStore(storageKey) {\n  return (0,zustand__WEBPACK_IMPORTED_MODULE_9__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_10__.persist)(function (set) {\n    return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.sortableSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.paginationSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.hiddenColumnsSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.refreshableSettings)(set));\n  }, {\n    name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)(storageKey)\n  }));\n}//# sourceURL=webpack-internal:///8772\n");

}),

46031:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ListView": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_0__.ListView; }
/* harmony export */ });
/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListView */ 93295);


}),

31394:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ActiveSchedulesNotice\": function() { return /* binding */ ActiveSchedulesNotice; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/groupBy */ 86103);\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ 93742);\n/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 36456);\n/* harmony import */ var _react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/edge/edge-groups/queries/useEdgeGroups */ 94858);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../types */ 44789);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ActiveSchedulesNotice(_ref) {\n  var selectedEdgeGroupIds = _ref.selectedEdgeGroupIds,\n      activeSchedules = _ref.activeSchedules,\n      environments = _ref.environments;\n  var groupsQuery = (0,_react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_13__.useEdgeGroups)();\n\n  if (!groupsQuery.data) {\n    return null;\n  } // environmentId -> {currentVersion, targetVersion}\n\n\n  var environmentScheduleGroup = Object.fromEntries(activeSchedules.map(function (schedule) {\n    var _environments$find;\n\n    return [schedule.environmentId, {\n      currentVersion: ((_environments$find = environments.find(function (env) {\n        return env.Id === schedule.environmentId;\n      })) === null || _environments$find === void 0 ? void 0 : _environments$find.Agent.Version) || '',\n      targetVersion: schedule.targetVersion,\n      type: schedule.type\n    }];\n  }));\n  var edgeGroups = groupsQuery.data.filter(function (edgeGroup) {\n    return selectedEdgeGroupIds.includes(edgeGroup.Id);\n  }).map(function (edgeGroup) {\n    return {\n      edgeGroupId: edgeGroup.Id,\n      edgeGroupName: edgeGroup.Name,\n      schedules: Object.values(lodash_groupBy__WEBPACK_IMPORTED_MODULE_1___default()(lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(edgeGroup.Endpoints.map(function (eId) {\n        return environmentScheduleGroup[eId];\n      })), function (schedule) {\n        return \"\".concat(schedule.currentVersion, \"_\").concat(schedule.targetVersion, \"_\").concat(schedule.type);\n      })).map(function (schedules) {\n        return {\n          currentVersion: schedules[0].currentVersion,\n          targetVersion: schedules[0].targetVersion,\n          scheduleCount: schedules.length,\n          type: schedules[0].type\n        };\n      })\n    };\n  }).filter(function (group) {\n    return group.schedules.length > 0;\n  });\n\n  if (edgeGroups.length === 0) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n      className: \"col-sm-12 space-y-1\",\n      children: edgeGroups.map(function (_ref2) {\n        var edgeGroupId = _ref2.edgeGroupId,\n            edgeGroupName = _ref2.edgeGroupName,\n            schedules = _ref2.schedules;\n        return schedules.map(function (_ref3) {\n          var currentVersion = _ref3.currentVersion,\n              scheduleCount = _ref3.scheduleCount,\n              targetVersion = _ref3.targetVersion,\n              type = _ref3.type;\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(ActiveSchedulesNoticeItem, {\n            currentVersion: currentVersion || 'unknown version',\n            name: edgeGroupName,\n            scheduleCount: scheduleCount,\n            version: targetVersion,\n            scheduleType: type\n          }, \"\".concat(edgeGroupId, \"-\").concat(currentVersion, \"-\").concat(targetVersion));\n        });\n      })\n    })\n  });\n}\n\nfunction ActiveSchedulesNoticeItem(_ref4) {\n  var name = _ref4.name,\n      scheduleCount = _ref4.scheduleCount,\n      version = _ref4.version,\n      currentVersion = _ref4.currentVersion,\n      scheduleType = _ref4.scheduleType;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n    className: \"flex items-center gap-1 text-sm\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n      className: \"feather\"\n    }), scheduleCount, \" edge devices in \", name, \" are scheduled for\", ' ', scheduleType === _types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Rollback ? 'rollback' : 'update', \" from\", ' ', currentVersion, \" to \", version]\n  });\n}//# sourceURL=webpack-internal:///31394\n");

}),

41379:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeGroupsField\": function() { return /* binding */ EdgeGroupsField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/react/edge/edge-groups/queries/useEdgeGroups */ 94858);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/form-components/ReactSelect */ 6174);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction EdgeGroupsField(_ref) {\n  var _groupsQuery$data;\n\n  var disabled = _ref.disabled;\n  var groupsQuery = (0,_react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_17__.useEdgeGroups)();\n\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_16__.useField)('groupIds'),\n      _useField2 = _slicedToArray(_useField, 3),\n      _useField2$ = _useField2[0],\n      name = _useField2$.name,\n      onBlur = _useField2$.onBlur,\n      value = _useField2$.value,\n      error = _useField2[1].error,\n      setValue = _useField2[2].setValue;\n\n  var selectedGroups = (_groupsQuery$data = groupsQuery.data) === null || _groupsQuery$data === void 0 ? void 0 : _groupsQuery$data.filter(function (group) {\n    return value.includes(group.Id);\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_18__.FormControl, {\n    label: \"\\u7FA4\\u7EC4\",\n    required: true,\n    inputId: \"groups-select\",\n    errors: error,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_form_components_ReactSelect__WEBPACK_IMPORTED_MODULE_19__.Select, {\n      name: name,\n      onBlur: onBlur,\n      value: selectedGroups,\n      inputId: \"groups-select\",\n      placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u7EC4\",\n      onChange: function onChange(selectedGroups) {\n        return setValue(selectedGroups.map(function (g) {\n          return g.Id;\n        }));\n      },\n      isMulti: true,\n      options: groupsQuery.data || [],\n      getOptionLabel: function getOptionLabel(group) {\n        return group.Name;\n      },\n      getOptionValue: function getOptionValue(group) {\n        return group.Id.toString();\n      },\n      closeMenuOnSelect: false,\n      isDisabled: disabled\n    })\n  });\n}//# sourceURL=webpack-internal:///41379\n");

}),

82107:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentSelection\": function() { return /* binding */ EnvironmentSelection; }\n/* harmony export */ });\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/groupBy */ 86103);\n/* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/mapValues */ 74381);\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_mapValues__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/last */ 11600);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_last__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _queries_useSupportedAgentVersions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../queries/useSupportedAgentVersions */ 53280);\n/* harmony import */ var _EnvironmentSelectionItem__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./EnvironmentSelectionItem */ 10154);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./utils */ 49340);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EnvironmentSelection(_ref) {\n  var _last2;\n\n  var environments = _ref.environments,\n      activeSchedules = _ref.activeSchedules,\n      disabled = _ref.disabled;\n  var supportedAgentVersionsQuery = (0,_queries_useSupportedAgentVersions__WEBPACK_IMPORTED_MODULE_18__.useSupportedAgentVersions)({\n    select: function select(versions) {\n      return versions.map(function (version) {\n        return {\n          label: version,\n          value: version\n        };\n      });\n    }\n  });\n\n  if (!supportedAgentVersionsQuery.data) {\n    return null;\n  }\n\n  var supportedAgentVersions = supportedAgentVersionsQuery.data;\n  var latestVersion = (_last2 = lodash_last__WEBPACK_IMPORTED_MODULE_2___default()(supportedAgentVersions)) === null || _last2 === void 0 ? void 0 : _last2.value;\n  var environmentsToUpdate = environments.filter(function (env) {\n    return activeSchedules.every(function (schedule) {\n      return schedule.environmentId !== env.Id;\n    }) && (0,_utils__WEBPACK_IMPORTED_MODULE_20__.compareVersion)(env.Agent.Version, latestVersion);\n  });\n  var versionGroups = Object.entries(lodash_mapValues__WEBPACK_IMPORTED_MODULE_1___default()(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(environmentsToUpdate, function (env) {\n    return env.Agent.Version;\n  }), function (envs) {\n    return envs.map(function (env) {\n      return env.Id;\n    });\n  }));\n\n  if (environmentsToUpdate.length === 0) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_17__.TextTip, {\n      children: \"The are no update options available for yor selected groups(s)\"\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: versionGroups.map(function (_ref2) {\n        var _ref3 = _slicedToArray(_ref2, 2),\n            version = _ref3[0],\n            environmentIds = _ref3[1];\n\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_EnvironmentSelectionItem__WEBPACK_IMPORTED_MODULE_19__.EnvironmentSelectionItem, {\n          currentVersion: version,\n          environmentIds: environmentIds,\n          versions: supportedAgentVersions,\n          disabled: disabled\n        }, version);\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///82107\n");

}),

10154:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentSelectionItem\": function() { return /* binding */ EnvironmentSelectionItem; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/last */ 11600);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_last__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./utils */ 49340);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nfunction EnvironmentSelectionItem(_ref) {\n  var _last2;\n\n  var environmentIds = _ref.environmentIds,\n      versions = _ref.versions,\n      _ref$currentVersion = _ref.currentVersion,\n      currentVersion = _ref$currentVersion === void 0 ? 'unknown' : _ref$currentVersion,\n      disabled = _ref.disabled;\n\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_22__.useField)('environments'),\n      _useField2 = _slicedToArray(_useField, 3),\n      value = _useField2[0].value,\n      setValue = _useField2[2].setValue;\n\n  var isChecked = environmentIds.every(function (envId) {\n    return !!value[envId];\n  });\n  var supportedVersions = versions.filter(function (_ref2) {\n    var value = _ref2.value;\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_26__.compareVersion)(currentVersion, value);\n  } // versions that are bigger than the current version\n  );\n  var maxVersion = (_last2 = lodash_last__WEBPACK_IMPORTED_MODULE_13___default()(supportedVersions)) === null || _last2 === void 0 ? void 0 : _last2.value;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_23__.useState)(value[environmentIds[0]] || maxVersion || ''),\n      _useState2 = _slicedToArray(_useState, 2),\n      selectedVersion = _useState2[0],\n      setSelectedVersion = _useState2[1];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(\"div\", {\n    className: \"flex items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_form_components_Checkbox__WEBPACK_IMPORTED_MODULE_25__.Checkbox, {\n      className: \"flex items-center\",\n      id: \"version_checkbox_\".concat(currentVersion),\n      checked: isChecked,\n      onChange: function onChange() {\n        return handleChange(!isChecked);\n      },\n      disabled: disabled\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(\"span\", {\n      className: \"font-normal flex items-center whitespace-nowrap gap-1\",\n      children: [environmentIds.length, \" edge agents update from v\", currentVersion, \" to\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_24__.Select, {\n        disabled: disabled,\n        value: selectedVersion,\n        options: supportedVersions,\n        onChange: handleVersionChange\n      })]\n    })]\n  });\n\n  function handleVersionChange(e) {\n    var version = e.target.value;\n    setSelectedVersion(version);\n\n    if (isChecked) {\n      handleChange(isChecked, version);\n    }\n  }\n\n  function handleChange(isChecked) {\n    var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedVersion;\n    var newValue = !isChecked ? Object.fromEntries(Object.entries(value).filter(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 1),\n          envId = _ref4[0];\n\n      return !environmentIds.includes(parseInt(envId, 10));\n    })) : _objectSpread(_objectSpread({}, value), Object.fromEntries(environmentIds.map(function (envId) {\n      return [envId, version];\n    })));\n    setValue(newValue);\n  }\n}//# sourceURL=webpack-internal:///10154\n");

}),

96099:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NameField\": function() { return /* binding */ NameField; },\n/* harmony export */   \"nameValidation\": function() { return /* binding */ nameValidation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction NameField() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('name'),\n      _useField2 = _slicedToArray(_useField, 2),\n      name = _useField2[0].name,\n      error = _useField2[1].error;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_13__.FormControl, {\n    label: \"Name\",\n    required: true,\n    inputId: \"name-input\",\n    errors: error,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n      as: _form_components_Input__WEBPACK_IMPORTED_MODULE_14__.Input,\n      name: name,\n      id: \"name-input\"\n    })\n  });\n}\nfunction nameValidation(schedules, currentId) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_12__.string)().required('This field is required').test('unique', 'Name must be unique', function (value) {\n    return schedules.every(function (s) {\n      return s.id === currentId || s.name !== value;\n    });\n  });\n}//# sourceURL=webpack-internal:///96099\n");

}),

38639:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RollbackScheduleDetailsFieldset\": function() { return /* binding */ RollbackScheduleDetailsFieldset; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/react/edge/edge-groups/queries/useEdgeGroups */ 94858);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _queries_usePreviousVersions__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../queries/usePreviousVersions */ 35206);\n/* harmony import */ var _useEdgeGroupsEnvironmentIds__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./useEdgeGroupsEnvironmentIds */ 61399);\n/* harmony import */ var _ScheduledTimeField__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ScheduledTimeField */ 70155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction RollbackScheduleDetailsFieldset() {\n  var environmentsCount = useSelectedEnvironmentsCount();\n\n  var _useSelectEnvironment = useSelectEnvironmentsOnMount(),\n      isLoading = _useSelectEnvironment.isLoading;\n\n  var groupNames = useGroupNames();\n\n  if (isLoading || !groupNames) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(\"div\", {\n    className: \"mt-3\",\n    children: [environmentsCount > 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsxs)(\"div\", {\n        className: \"col-sm-12\",\n        children: [environmentsCount, \" edge device(s) from \", groupNames, \" will rollback to their previous versions\"]\n      })\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_19__.TextTip, {\n      children: \"The are no rollback options available for yor selected groups(s)\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_23__.jsx)(_ScheduledTimeField__WEBPACK_IMPORTED_MODULE_22__.ScheduledTimeField, {})]\n  });\n}\n\nfunction useSelectedEnvironmentsCount() {\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_16__.useFormikContext)(),\n      environments = _useFormikContext.values.environments;\n\n  return Object.keys(environments).length;\n}\n\nfunction useSelectEnvironmentsOnMount() {\n  var previousVersionsQuery = (0,_queries_usePreviousVersions__WEBPACK_IMPORTED_MODULE_20__.usePreviousVersions)();\n\n  var _useFormikContext2 = (0,formik__WEBPACK_IMPORTED_MODULE_16__.useFormikContext)(),\n      groupIds = _useFormikContext2.values.groupIds,\n      setFieldValue = _useFormikContext2.setFieldValue;\n\n  var edgeGroupsEnvironmentIds = (0,_useEdgeGroupsEnvironmentIds__WEBPACK_IMPORTED_MODULE_21__.useEdgeGroupsEnvironmentIds)(groupIds);\n  var envIdsToUpdate = (0,react__WEBPACK_IMPORTED_MODULE_17__.useMemo)(function () {\n    return previousVersionsQuery.data ? Object.fromEntries(edgeGroupsEnvironmentIds.map(function (id) {\n      return [id, previousVersionsQuery.data[id] || ''];\n    }).filter(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          version = _ref2[1];\n\n      return !!version;\n    })) : [];\n  }, [edgeGroupsEnvironmentIds, previousVersionsQuery.data]);\n  (0,react__WEBPACK_IMPORTED_MODULE_17__.useEffect)(function () {\n    setFieldValue('environments', envIdsToUpdate);\n  }, [envIdsToUpdate, setFieldValue]);\n  return {\n    isLoading: previousVersionsQuery.isLoading\n  };\n}\n\nfunction useGroupNames() {\n  var _useFormikContext3 = (0,formik__WEBPACK_IMPORTED_MODULE_16__.useFormikContext)(),\n      groupIds = _useFormikContext3.values.groupIds;\n\n  var groupsQuery = (0,_react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_18__.useEdgeGroups)({\n    select: function select(groups) {\n      return Object.fromEntries(groups.map(function (g) {\n        return [g.Id, g.Name];\n      }));\n    }\n  });\n\n  if (!groupsQuery.data) {\n    return null;\n  }\n\n  return groupIds.map(function (id) {\n    return groupsQuery.data[id];\n  }).join(', ');\n}//# sourceURL=webpack-internal:///38639\n");

}),

48623:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScheduleTypeSelector\": function() { return /* binding */ ScheduleTypeSelector; },\n/* harmony export */   \"typeValidation\": function() { return /* binding */ typeValidation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../types */ 44789);\n/* harmony import */ var _UpdateScheduleDetailsFieldset__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./UpdateScheduleDetailsFieldset */ 11311);\n/* harmony import */ var _RollbackScheduleDetailsFieldset__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./RollbackScheduleDetailsFieldset */ 38639);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nfunction ScheduleTypeSelector() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('type'),\n      _useField2 = _slicedToArray(_useField, 3),\n      value = _useField2[0].value,\n      setValue = _useField2[2].setValue;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"div\", {\n    className: \"form-group\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_13__.NavTabs, {\n        options: [{\n          id: _types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Update,\n          label: 'Update',\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_UpdateScheduleDetailsFieldset__WEBPACK_IMPORTED_MODULE_15__.UpdateScheduleDetailsFieldset, {})\n        }, {\n          id: _types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Rollback,\n          label: 'Rollback',\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_RollbackScheduleDetailsFieldset__WEBPACK_IMPORTED_MODULE_16__.RollbackScheduleDetailsFieldset, {})\n        }],\n        selectedId: value,\n        onSelect: function onSelect(value) {\n          return setValue(value);\n        }\n      })\n    })\n  });\n}\nfunction typeValidation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_12__.number)().oneOf([_types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Rollback, _types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Update]).default(_types__WEBPACK_IMPORTED_MODULE_14__.ScheduleType.Update);\n}//# sourceURL=webpack-internal:///48623\n");

}),

70155:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScheduledTimeField\": function() { return /* binding */ ScheduledTimeField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react_datetime_picker__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-datetime-picker */ 90808);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 83574);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-feather */ 14434);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\nfunction ScheduledTimeField(_ref) {\n  var disabled = _ref.disabled;\n\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('time'),\n      _useField2 = _slicedToArray(_useField, 3),\n      _useField2$ = _useField2[0],\n      name = _useField2$.name,\n      value = _useField2$.value,\n      error = _useField2[1].error,\n      setValue = _useField2[2].setValue;\n\n  var dateValue = (0,react__WEBPACK_IMPORTED_MODULE_13__.useMemo)(function () {\n    return new Date(value * 1000);\n  }, [value]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__.FormControl, {\n    label: \"Schedule date & time\",\n    errors: error,\n    children: !disabled ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(react_datetime_picker__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n      format: \"y-MM-dd HH:mm:ss\",\n      minDate: new Date(),\n      className: \"form-control [&>div]:border-0\",\n      onChange: function onChange(date) {\n        return setValue(Math.floor(date.getTime() / 1000));\n      },\n      name: name,\n      value: dateValue,\n      calendarIcon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n        className: \"feather\"\n      }),\n      clearIcon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n        className: \"feather\"\n      }),\n      disableClock: true\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_16__.Input, {\n      defaultValue: (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_14__.isoDateFromTimestamp)(value),\n      disabled: true\n    })\n  });\n}//# sourceURL=webpack-internal:///70155\n");

}),

11311:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UpdateScheduleDetailsFieldset\": function() { return /* binding */ UpdateScheduleDetailsFieldset; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _queries_useActiveSchedules__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../queries/useActiveSchedules */ 74180);\n/* harmony import */ var _ScheduledTimeField__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ScheduledTimeField */ 70155);\n/* harmony import */ var _EnvironmentSelection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./EnvironmentSelection */ 82107);\n/* harmony import */ var _ActiveSchedulesNotice__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ActiveSchedulesNotice */ 31394);\n/* harmony import */ var _useEdgeGroupsEnvironmentIds__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./useEdgeGroupsEnvironmentIds */ 61399);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction UpdateScheduleDetailsFieldset() {\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_4__.useFormikContext)(),\n      values = _useFormikContext.values;\n\n  var edgeGroupsEnvironmentIds = (0,_useEdgeGroupsEnvironmentIds__WEBPACK_IMPORTED_MODULE_12__.useEdgeGroupsEnvironmentIds)(values.groupIds);\n  var environments = useEnvironments(edgeGroupsEnvironmentIds);\n  var activeSchedules = useRelevantActiveSchedules(edgeGroupsEnvironmentIds);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_ActiveSchedulesNotice__WEBPACK_IMPORTED_MODULE_11__.ActiveSchedulesNotice, {\n      selectedEdgeGroupIds: values.groupIds,\n      activeSchedules: activeSchedules,\n      environments: environments\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_EnvironmentSelection__WEBPACK_IMPORTED_MODULE_10__.EnvironmentSelection, {\n      activeSchedules: activeSchedules,\n      environments: environments\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_ScheduledTimeField__WEBPACK_IMPORTED_MODULE_9__.ScheduledTimeField, {})]\n  });\n}\n\nfunction useEnvironments(environmentsIds) {\n  var environmentsQuery = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_7__.useEnvironmentList)({\n    endpointIds: environmentsIds,\n    types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_6__.EdgeTypes\n  }, undefined, undefined, environmentsIds.length > 0);\n  return environmentsQuery.environments;\n}\n\nfunction useRelevantActiveSchedules(environmentIds) {\n  var _activeSchedulesQuery;\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_5__.useCurrentStateAndParams)(),\n      params = _useCurrentStateAndPa.params;\n\n  var scheduleId = params.id ? parseInt(params.id, 10) : 0;\n  var activeSchedulesQuery = (0,_queries_useActiveSchedules__WEBPACK_IMPORTED_MODULE_8__.useActiveSchedules)(environmentIds);\n  return ((_activeSchedulesQuery = activeSchedulesQuery.data) === null || _activeSchedulesQuery === void 0 ? void 0 : _activeSchedulesQuery.filter(function (schedule) {\n    return schedule.scheduleId !== scheduleId;\n  })) || [];\n}//# sourceURL=webpack-internal:///11311\n");

}),

61399:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useEdgeGroupsEnvironmentIds\": function() { return /* binding */ useEdgeGroupsEnvironmentIds; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/uniq */ 46006);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ 89999);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ 58613);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react/edge/edge-groups/queries/useEdgeGroups */ 94858);\n\n\n\n\n\n\n\n\n\n\nfunction useEdgeGroupsEnvironmentIds(edgeGroupsIds) {\n  var groupsQuery = (0,_react_edge_edge_groups_queries_useEdgeGroups__WEBPACK_IMPORTED_MODULE_9__.useEdgeGroups)({\n    select: function select(groups) {\n      return Object.fromEntries(groups.map(function (g) {\n        return [g.Id, g.Endpoints];\n      }));\n    }\n  });\n  return (0,react__WEBPACK_IMPORTED_MODULE_8__.useMemo)(function () {\n    return lodash_uniq__WEBPACK_IMPORTED_MODULE_1___default()(lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(edgeGroupsIds.flatMap(function (id) {\n      return groupsQuery.data ? groupsQuery.data[id] : [];\n    })));\n  }, [edgeGroupsIds, groupsQuery.data]);\n}//# sourceURL=webpack-internal:///61399\n");

}),

49340:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"compareVersion\": function() { return /* binding */ compareVersion; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var semver_compare__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver-compare */ 31052);\n/* harmony import */ var semver_compare__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver_compare__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction compareVersion(currentVersion) {\n  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  var bigger = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  if (!currentVersion) {\n    return true;\n  } // if supplied version is not a string, e.g develop\n\n\n  if (!version.includes('.')) {\n    return true;\n  }\n\n  if (bigger) {\n    return semver_compare__WEBPACK_IMPORTED_MODULE_2___default()(currentVersion, version) > 0;\n  } // env version is less than the supplied\n\n\n  return semver_compare__WEBPACK_IMPORTED_MODULE_2___default()(currentVersion, version) < 0;\n}//# sourceURL=webpack-internal:///49340\n");

}),

8064:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validation\": function() { return /* binding */ validation; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _NameField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NameField */ 96099);\n/* harmony import */ var _ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ScheduleTypeSelector */ 48623);\n\n\n\nfunction validation(schedules, currentId) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)({\n    groupIds: (0,yup__WEBPACK_IMPORTED_MODULE_0__.array)().min(1, 'At least one group is required'),\n    name: (0,_NameField__WEBPACK_IMPORTED_MODULE_1__.nameValidation)(schedules, currentId),\n    type: (0,_ScheduleTypeSelector__WEBPACK_IMPORTED_MODULE_2__.typeValidation)(),\n    time: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)().min(Date.now() / 1000).required(),\n    environments: (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().default({})\n  });\n}//# sourceURL=webpack-internal:///8064\n");

}),

38336:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ListView\": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_0__.ListView; },\n/* harmony export */   \"CreateView\": function() { return /* reexport safe */ _CreateView__WEBPACK_IMPORTED_MODULE_1__.CreateView; },\n/* harmony export */   \"ItemView\": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_2__.ItemView; }\n/* harmony export */ });\n/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListView */ 46031);\n/* harmony import */ var _CreateView__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CreateView */ 80599);\n/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ItemView */ 53873);\n\n\n//# sourceURL=webpack-internal:///38336\n");

}),

87967:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCreateMutation\": function() { return /* binding */ useCreateMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nfunction create(_x) {\n  return _create.apply(this, arguments);\n}\n\nfunction _create() {\n  _create = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(schedule) {\n    var _yield$axios$post, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__[\"default\"].post((0,_urls__WEBPACK_IMPORTED_MODULE_13__.buildUrl)(), schedule);\n\n          case 3:\n            _yield$axios$post = _context.sent;\n            data = _yield$axios$post.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_10__.parseAxiosError)(_context.t0, 'Failed to create edge update schedule');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _create.apply(this, arguments);\n}\n\nfunction useCreateMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_9__.useMutation)(create, _objectSpread(_objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withInvalidate)(queryClient, [_query_keys__WEBPACK_IMPORTED_MODULE_12__.queryKeys.list()])), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_11__.withError)()));\n}//# sourceURL=webpack-internal:///87967\n");

}),

43440:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useList\": function() { return /* binding */ useList; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\nfunction getList() {\n  return _getList.apply(this, arguments);\n}\n\nfunction _getList() {\n  _getList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get((0,_urls__WEBPACK_IMPORTED_MODULE_6__.buildUrl)());\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed to get list of edge update schedules');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getList.apply(this, arguments);\n}\n\nfunction useList() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_5__.queryKeys.list(), getList);\n}//# sourceURL=webpack-internal:///43440\n");

}),

38374:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"queryKeys\": function() { return /* binding */ queryKeys; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nvar queryKeys = {\n  list: function list() {\n    return ['edge', 'update_schedules'];\n  },\n  item: function item(id) {\n    return [].concat(_toConsumableArray(queryKeys.list()), [id]);\n  },\n  activeSchedules: function activeSchedules(environmentIds) {\n    return [queryKeys.list(), 'active', {\n      environmentIds: environmentIds\n    }];\n  },\n  supportedAgentVersions: function supportedAgentVersions() {\n    return [queryKeys.list(), 'agent_versions'];\n  },\n  previousVersions: function previousVersions() {\n    return [queryKeys.list(), 'previous_versions'];\n  }\n};//# sourceURL=webpack-internal:///38374\n");

}),

81178:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BASE_URL\": function() { return /* binding */ BASE_URL; },\n/* harmony export */   \"buildUrl\": function() { return /* binding */ buildUrl; }\n/* harmony export */ });\nvar BASE_URL = '/edge_update_schedules';\nfunction buildUrl(id, action) {\n  var url = BASE_URL;\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///81178\n");

}),

74180:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useActiveSchedules\": function() { return /* binding */ useActiveSchedules; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\nfunction getActiveSchedules(_x) {\n  return _getActiveSchedules.apply(this, arguments);\n}\n\nfunction _getActiveSchedules() {\n  _getActiveSchedules = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(environmentIds) {\n    var _yield$axios$post, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post((0,_urls__WEBPACK_IMPORTED_MODULE_6__.buildUrl)(undefined, 'active'), {\n              environmentIds: environmentIds\n            });\n\n          case 3:\n            _yield$axios$post = _context.sent;\n            data = _yield$axios$post.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed to get list of edge update schedules');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getActiveSchedules.apply(this, arguments);\n}\n\nfunction useActiveSchedules(environmentIds) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_5__.queryKeys.activeSchedules(environmentIds), function () {\n    return getActiveSchedules(environmentIds);\n  }, {\n    enabled: environmentIds.length > 0\n  });\n}//# sourceURL=webpack-internal:///74180\n");

}),

11628:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useItem\": function() { return /* binding */ useItem; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\nfunction useItem(id) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_5__.queryKeys.item(id), function () {\n    return getItem(id);\n  });\n}\n\nfunction getItem(_x) {\n  return _getItem.apply(this, arguments);\n}\n\nfunction _getItem() {\n  _getItem = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(id) {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get((0,_urls__WEBPACK_IMPORTED_MODULE_6__.buildUrl)(id));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed to get list of edge update schedules');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getItem.apply(this, arguments);\n}//# sourceURL=webpack-internal:///11628\n");

}),

35206:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"usePreviousVersions\": function() { return /* binding */ usePreviousVersions; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\nfunction usePreviousVersions() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      select = _ref.select;\n\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_5__.queryKeys.previousVersions(), getPreviousVersions, {\n    select: select\n  });\n}\n\nfunction getPreviousVersions() {\n  return _getPreviousVersions.apply(this, arguments);\n}\n\nfunction _getPreviousVersions() {\n  _getPreviousVersions = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, _data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get((0,_urls__WEBPACK_IMPORTED_MODULE_6__.buildUrl)(undefined, 'previous_versions'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            _data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", _data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed to get list of edge update schedules');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getPreviousVersions.apply(this, arguments);\n}//# sourceURL=webpack-internal:///35206\n");

}),

42464:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useRemoveMutation\": function() { return /* binding */ useRemoveMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/helpers/promise-utils */ 19990);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./urls */ 81178);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./query-keys */ 38374);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\nfunction useRemoveMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_4__.useMutation)(function (schedules) {\n    return (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_5__.promiseSequence)(schedules.map(function (schedule) {\n      return function () {\n        return deleteUpdateSchedule(schedule.id);\n      };\n    }));\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_7__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_7__.withInvalidate)(queryClient, [_query_keys__WEBPACK_IMPORTED_MODULE_9__.queryKeys.list()]), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_7__.withError)()));\n}\n\nfunction deleteUpdateSchedule(_x) {\n  return _deleteUpdateSchedule.apply(this, arguments);\n}\n\nfunction _deleteUpdateSchedule() {\n  _deleteUpdateSchedule = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(id) {\n    var _yield$axios$delete, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"][\"delete\"]((0,_urls__WEBPACK_IMPORTED_MODULE_8__.buildUrl)(id));\n\n          case 3:\n            _yield$axios$delete = _context.sent;\n            data = _yield$axios$delete.data;\n            return _context.abrupt(\"return\", data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_6__.parseAxiosError)(_context.t0, 'Failed to delete edge update schedule');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _deleteUpdateSchedule.apply(this, arguments);\n}//# sourceURL=webpack-internal:///42464\n");

}),

53280:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSupportedAgentVersions\": function() { return /* binding */ useSupportedAgentVersions; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\nfunction useSupportedAgentVersions() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      select = _ref.select;\n\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(_query_keys__WEBPACK_IMPORTED_MODULE_5__.queryKeys.supportedAgentVersions(), getSupportedAgentVersions, {\n    select: select\n  });\n}\n\nfunction getSupportedAgentVersions() {\n  return _getSupportedAgentVersions.apply(this, arguments);\n}\n\nfunction _getSupportedAgentVersions() {\n  _getSupportedAgentVersions = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, _data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get((0,_urls__WEBPACK_IMPORTED_MODULE_6__.buildUrl)(undefined, 'agent_versions'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            _data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", _data);\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Failed to get list of edge update schedules');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getSupportedAgentVersions.apply(this, arguments);\n}//# sourceURL=webpack-internal:///53280\n");

}),

23894:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useUpdateMutation\": function() { return /* binding */ useUpdateMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _query_keys__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./query-keys */ 38374);\n/* harmony import */ var _urls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./urls */ 81178);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\nfunction update(_x) {\n  return _update.apply(this, arguments);\n}\n\nfunction _update() {\n  _update = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref) {\n    var id, values, _yield$axios$put, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            id = _ref.id, values = _ref.values;\n            _context.prev = 1;\n            _context.next = 4;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_12__[\"default\"].put((0,_urls__WEBPACK_IMPORTED_MODULE_15__.buildUrl)(id), values);\n\n          case 4:\n            _yield$axios$put = _context.sent;\n            data = _yield$axios$put.data;\n            return _context.abrupt(\"return\", data);\n\n          case 9:\n            _context.prev = 9;\n            _context.t0 = _context[\"catch\"](1);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_12__.parseAxiosError)(_context.t0, 'Failed to update edge update schedule');\n\n          case 12:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[1, 9]]);\n  }));\n  return _update.apply(this, arguments);\n}\n\nfunction useUpdateMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_11__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_11__.useMutation)(update, _objectSpread(_objectSpread({}, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_13__.withInvalidate)(queryClient, [_query_keys__WEBPACK_IMPORTED_MODULE_14__.queryKeys.list()])), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_13__.withError)()));\n}//# sourceURL=webpack-internal:///23894\n");

}),

44789:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScheduleType\": function() { return /* binding */ ScheduleType; },\n/* harmony export */   \"StatusType\": function() { return /* binding */ StatusType; }\n/* harmony export */ });\nvar ScheduleType;\n\n(function (ScheduleType) {\n  ScheduleType[ScheduleType[\"Update\"] = 1] = \"Update\";\n  ScheduleType[ScheduleType[\"Rollback\"] = 2] = \"Rollback\";\n})(ScheduleType || (ScheduleType = {}));\n\nvar StatusType;\n\n(function (StatusType) {\n  StatusType[StatusType[\"Pending\"] = 0] = \"Pending\";\n  StatusType[StatusType[\"Failed\"] = 1] = \"Failed\";\n  StatusType[StatusType[\"Success\"] = 2] = \"Success\";\n})(StatusType || (StatusType = {}));//# sourceURL=webpack-internal:///44789\n");

}),

58768:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPlatformIcon\": function() { return /* binding */ getPlatformIcon; }\n/* harmony export */ });\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _docker_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./docker.svg?c */ 23969);\n/* harmony import */ var _azure_svg_c__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./azure.svg?c */ 34647);\n/* harmony import */ var _kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kubernetes.svg?c */ 43215);\nvar _icons;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nvar icons = (_icons = {}, _defineProperty(_icons, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.PlatformType.Docker, _docker_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"]), _defineProperty(_icons, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.PlatformType.Kubernetes, _kubernetes_svg_c__WEBPACK_IMPORTED_MODULE_4__[\"default\"]), _defineProperty(_icons, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.PlatformType.Azure, _azure_svg_c__WEBPACK_IMPORTED_MODULE_3__[\"default\"]), _icons);\nfunction getPlatformIcon(type) {\n  var platform = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_0__.getPlatformType)(type);\n  return icons[platform];\n}//# sourceURL=webpack-internal:///58768\n");

}),

46435:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentTypeSelectView\": function() { return /* binding */ EnvironmentTypeSelectView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/angulartics.matomo/analytics-services */ 45119);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../hooks/useCreateEdgeDeviceParam */ 93711);\n/* harmony import */ var _EnvironmentSelector__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./EnvironmentSelector */ 7306);\n/* harmony import */ var _environment_types__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./environment-types */ 43785);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EnvironmentTypeSelectView() {\n  var createEdgeDevice = (0,_hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_26__.useCreateEdgeDeviceParam)();\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_20__.useState)([]),\n      _useState2 = _slicedToArray(_useState, 2),\n      types = _useState2[0],\n      setTypes = _useState2[1];\n\n  var _useAnalytics = (0,_angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_22__.useAnalytics)(),\n      trackEvent = _useAnalytics.trackEvent;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_21__.useRouter)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_24__.PageHeader, {\n      title: \"Quick Setup\",\n      breadcrumbs: [{\n        label: '环境向导'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_25__.Widget, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_25__.WidgetTitle, {\n            icon: \"svg-magic\",\n            title: \"\\u73AF\\u5883\\u5411\\u5BFC\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_25__.WidgetBody, {\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_EnvironmentSelector__WEBPACK_IMPORTED_MODULE_27__.EnvironmentSelector, {\n              value: types,\n              onChange: setTypes,\n              createEdgeDevice: createEdgeDevice\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_29__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_23__.Button, {\n              disabled: types.length === 0,\n              onClick: function onClick() {\n                return startWizard();\n              },\n              children: \"\\u542F\\u52A8\\u5411\\u5BFC\"\n            })]\n          })]\n        })\n      })\n    })]\n  });\n\n  function startWizard() {\n    if (types.length === 0) {\n      return;\n    }\n\n    var steps = lodash_compact__WEBPACK_IMPORTED_MODULE_15___default()(types.map(function (id) {\n      return _environment_types__WEBPACK_IMPORTED_MODULE_28__.environmentTypes.find(function (eType) {\n        return eType.id === id;\n      });\n    }));\n\n    trackEvent('endpoint-wizard-endpoint-select', {\n      category: 'portainer',\n      metadata: {\n        environment: steps.map(function (step) {\n          return step.title;\n        }).join('/')\n      }\n    });\n    router.stateService.go('portainer.wizard.endpoints.create', _objectSpread({\n      envType: types\n    }, createEdgeDevice ? {\n      edgeDevice: createEdgeDevice\n    } : {}));\n  }\n}//# sourceURL=webpack-internal:///46435\n");

}),

7306:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentSelector\": function() { return /* binding */ EnvironmentSelector; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var _components_Option__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../components/Option */ 67169);\n/* harmony import */ var _environment_types__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./environment-types */ 43785);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar hasEdge = ['dockerStandalone', 'dockerSwarm', 'kubernetes'];\nfunction EnvironmentSelector(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      createEdgeDevice = _ref.createEdgeDevice;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_16__.FormSection, {\n      title: \"\\u9009\\u62E9\\u4F60\\u7684\\u73AF\\u5883\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"p\", {\n        className: \"text-muted small\",\n        children: \"\\u4F60\\u53EF\\u4EE5\\u767B\\u4E0A\\u4E0D\\u540C\\u7C7B\\u578B\\u7684\\u73AF\\u5883\\uFF0C\\u9009\\u62E9\\u6240\\u6709\\u9002\\u7528\\u7684\\u3002\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"div\", {\n        className: \"flex gap-4 flex-wrap\",\n        children: filterEdgeDevicesIfNeed(_environment_types__WEBPACK_IMPORTED_MODULE_18__.environmentTypes, createEdgeDevice).map(function (eType) {\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_components_Option__WEBPACK_IMPORTED_MODULE_17__.Option, {\n            featureId: eType.featureId,\n            title: eType.title,\n            description: eType.description,\n            icon: eType.icon,\n            active: value.includes(eType.id),\n            onClick: function onClick() {\n              return handleClick(eType.id);\n            }\n          }, eType.id);\n        })\n      })]\n    })\n  });\n\n  function handleClick(eType) {\n    if (value.includes(eType)) {\n      onChange(value.filter(function (v) {\n        return v !== eType;\n      }));\n      return;\n    }\n\n    onChange([].concat(_toConsumableArray(value), [eType]));\n  }\n}\n\nfunction filterEdgeDevicesIfNeed(types, createEdgeDevice) {\n  if (!createEdgeDevice) {\n    return types;\n  }\n\n  return types.filter(function (eType) {\n    return hasEdge.includes(eType.id);\n  });\n}//# sourceURL=webpack-internal:///7306\n");

}),

43785:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"environmentTypes\": function() { return /* binding */ environmentTypes; }\n/* harmony export */ });\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _kaas_icon_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kaas-icon.svg?c */ 5557);\n\n\nvar environmentTypes = [{\n  id: 'dockerStandalone',\n  title: 'Docker Standalone',\n  icon: 'fab fa-docker',\n  description: '通过URL/IP、API或Socket连接到Docker Standalone',\n  featureId: undefined\n}, {\n  id: 'dockerSwarm',\n  title: 'Docker Swarm',\n  icon: 'fab fa-docker',\n  description: '通过URL/IP、API或Socket连接到Docker Swarm',\n  featureId: undefined\n}, {\n  id: 'kubernetes',\n  title: 'Kubernetes',\n  icon: 'fas fa-dharmachakra',\n  description: '通过URL/IP连接到kubernetes环境',\n  featureId: undefined\n}, {\n  id: 'aci',\n  title: 'ACI',\n  description: '通过API连接到ACI环境',\n  icon: 'fab fa-microsoft',\n  featureId: undefined\n}, {\n  id: 'nomad',\n  title: 'Nomad',\n  description: '通过API连接到HashiCorp Nomad环境',\n  icon: 'nomad-icon',\n  featureId: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.NOMAD\n}, {\n  id: 'kaas',\n  title: 'KaaS',\n  description: '向云提供商提供一个Kubernetes环境',\n  icon: _kaas_icon_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  featureId: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.KAAS_PROVISIONING\n}];//# sourceURL=webpack-internal:///43785\n");

}),

97717:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EnvironmentTypeSelectView": function() { return /* reexport safe */ _EndpointTypeView__WEBPACK_IMPORTED_MODULE_0__.EnvironmentTypeSelectView; }
/* harmony export */ });
/* harmony import */ var _EndpointTypeView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EndpointTypeView */ 46435);


}),

34412:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentCreationView\": function() { return /* binding */ EnvironmentCreationView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash/kebabCase */ 83161);\n/* harmony import */ var lodash_kebabCase__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(lodash_kebabCase__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/angulartics.matomo/analytics-services */ 45119);\n/* harmony import */ var _Stepper__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/Stepper */ 34184);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _EnvironmentTypeSelectView_environment_types__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../EnvironmentTypeSelectView/environment-types */ 43785);\n/* harmony import */ var _WizardDocker__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./WizardDocker */ 93687);\n/* harmony import */ var _WizardAzure__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./WizardAzure */ 71294);\n/* harmony import */ var _WizardKubernetes__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./WizardKubernetes */ 90602);\n/* harmony import */ var _EnvironmentsCreationView_module_css__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./EnvironmentsCreationView.module.css */ 48824);\n/* harmony import */ var _WizardEndpointsList__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./WizardEndpointsList */ 49674);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EnvironmentCreationView() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_25__.useCurrentStateAndParams)(),\n      localEndpointIdParam = _useCurrentStateAndPa.params.localEndpointId;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)(function () {\n    var localEndpointId = parseInt(localEndpointIdParam, 10);\n\n    if (!localEndpointId || Number.isNaN(localEndpointId)) {\n      return [];\n    }\n\n    return [localEndpointId];\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      environmentIds = _useState2[0],\n      setEnvironmentIds = _useState2[1];\n\n  var envTypes = useParamEnvironmentTypes();\n\n  var _useAnalytics = (0,_angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_29__.useAnalytics)(),\n      trackEvent = _useAnalytics.trackEvent;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_25__.useRouter)();\n\n  var steps = lodash_compact__WEBPACK_IMPORTED_MODULE_15___default()(envTypes.map(function (id) {\n    return _EnvironmentTypeSelectView_environment_types__WEBPACK_IMPORTED_MODULE_36__.environmentTypes.find(function (eType) {\n      return eType.id === id;\n    });\n  }));\n\n  var _useAnalyticsState = useAnalyticsState(),\n      analytics = _useAnalyticsState.analytics,\n      setAnalytics = _useAnalyticsState.setAnalytics;\n\n  var _useStepper = useStepper(steps, handleFinish),\n      currentStep = _useStepper.currentStep,\n      onNextClick = _useStepper.onNextClick,\n      onPreviousClick = _useStepper.onPreviousClick,\n      currentStepIndex = _useStepper.currentStepIndex,\n      Component = _useStepper.Component,\n      isFirstStep = _useStepper.isFirstStep,\n      isLastStep = _useStepper.isLastStep;\n\n  var isDockerStandalone = currentStep.id === 'dockerStandalone';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_32__.PageHeader, {\n      title: \"Quick Setup\",\n      breadcrumbs: [{\n        label: '环境向导'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(\"div\", {\n      className: _EnvironmentsCreationView_module_css__WEBPACK_IMPORTED_MODULE_40__[\"default\"].wizardWrapper,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_31__.Widget, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_31__.WidgetTitle, {\n          icon: \"svg-magic\",\n          title: \"\\u73AF\\u5883\\u5411\\u5BFC\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_31__.WidgetBody, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_Stepper__WEBPACK_IMPORTED_MODULE_30__.Stepper, {\n            steps: steps,\n            currentStep: currentStepIndex + 1\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(\"div\", {\n            className: \"mt-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_34__.FormSection, {\n              title: \"\\u8FDE\\u63A5\\u5230\\u4F60\\u7684 \".concat(currentStep.title, \"\\n                    \\u73AF\\u5883\"),\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(Component, {\n                onCreate: handleCreateEnvironment,\n                isDockerStandalone: isDockerStandalone\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(\"div\", {\n                className: (0,clsx__WEBPACK_IMPORTED_MODULE_27__[\"default\"])(_EnvironmentsCreationView_module_css__WEBPACK_IMPORTED_MODULE_40__[\"default\"].wizardStepAction, 'flex justify-between'),\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_33__.Button, {\n                  disabled: isFirstStep,\n                  onClick: onPreviousClick,\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_35__.Icon, {\n                    icon: \"arrow-left\",\n                    feather: true\n                  }), \" \\u4E0A\\u4E00\\u6B65\"]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_33__.Button, {\n                  onClick: onNextClick,\n                  children: [isLastStep ? '关闭' : '下一步', /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_35__.Icon, {\n                    icon: \"arrow-right\",\n                    feather: true\n                  })]\n                })]\n              })]\n            })\n          })]\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(\"div\", {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_42__.jsx)(_WizardEndpointsList__WEBPACK_IMPORTED_MODULE_41__.WizardEndpointsList, {\n          environmentIds: environmentIds\n        })\n      })]\n    })]\n  });\n\n  function handleCreateEnvironment(environment, analytics) {\n    setEnvironmentIds(function (prev) {\n      return [].concat(_toConsumableArray(prev), [environment.Id]);\n    });\n    setAnalytics(analytics);\n  }\n\n  function handleFinish() {\n    trackEvent('endpoint-wizard-environment-add-finish', {\n      category: 'portainer',\n      metadata: Object.fromEntries(Object.entries(analytics).map(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n            key = _ref2[0],\n            value = _ref2[1];\n\n        return [lodash_kebabCase__WEBPACK_IMPORTED_MODULE_14___default()(key), value];\n      }))\n    });\n\n    if (localStorage.getItem('wizardReferrer') === 'environments') {\n      localStorage.removeItem('wizardReferrer');\n      router.stateService.go('portainer.endpoints');\n      return;\n    }\n\n    router.stateService.go('portainer.home');\n  }\n}\n\nfunction useParamEnvironmentTypes() {\n  var _useCurrentStateAndPa2 = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_25__.useCurrentStateAndParams)(),\n      envType = _useCurrentStateAndPa2.params.envType;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_25__.useRouter)();\n\n  if (!envType) {\n    (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_28__.notifyError)('没有提供环境类型');\n    router.stateService.go('portainer.wizard.endpoints');\n    return [];\n  }\n\n  return Array.isArray(envType) ? envType : [envType];\n}\n\nfunction useStepper(steps, onFinish) {\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)(0),\n      _useState4 = _slicedToArray(_useState3, 2),\n      currentStepIndex = _useState4[0],\n      setCurrentStepIndex = _useState4[1];\n\n  var isFirstStep = currentStepIndex === 0;\n  var isLastStep = currentStepIndex === steps.length - 1;\n  var currentStep = steps[currentStepIndex];\n  return {\n    currentStep: currentStep,\n    onNextClick: onNextClick,\n    onPreviousClick: onPreviousClick,\n    isFirstStep: isFirstStep,\n    isLastStep: isLastStep,\n    currentStepIndex: currentStepIndex,\n    Component: getComponent(currentStep.id)\n  };\n\n  function onNextClick() {\n    if (!isLastStep) {\n      setCurrentStepIndex(currentStepIndex + 1);\n      return;\n    }\n\n    onFinish();\n  }\n\n  function onPreviousClick() {\n    setCurrentStepIndex(currentStepIndex - 1);\n  }\n\n  function getComponent(id) {\n    switch (id) {\n      case 'dockerStandalone':\n      case 'dockerSwarm':\n        return _WizardDocker__WEBPACK_IMPORTED_MODULE_37__.WizardDocker;\n\n      case 'aci':\n        return _WizardAzure__WEBPACK_IMPORTED_MODULE_38__.WizardAzure;\n\n      case 'kubernetes':\n        return _WizardKubernetes__WEBPACK_IMPORTED_MODULE_39__.WizardKubernetes;\n\n      default:\n        throw new Error(\"\\u672A\\u77E5\\u73AF\\u5883\\u7C7B\\u578B \".concat(id));\n    }\n  }\n}\n\nfunction useAnalyticsState() {\n  var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_26__.useState)({\n    dockerAgent: 0,\n    dockerApi: 0,\n    kubernetesAgent: 0,\n    kubernetesEdgeAgent: 0,\n    kaasAgent: 0,\n    aciApi: 0,\n    localEndpoint: 0,\n    nomadEdgeAgent: 0,\n    dockerEdgeAgent: 0\n  }),\n      _useState6 = _slicedToArray(_useState5, 2),\n      analytics = _useState6[0],\n      setAnalyticsState = _useState6[1];\n\n  return {\n    analytics: analytics,\n    setAnalytics: setAnalytics\n  };\n\n  function setAnalytics(key) {\n    setAnalyticsState(function (prevState) {\n      return _objectSpread(_objectSpread({}, prevState), {}, _defineProperty({}, key, prevState[key] + 1));\n    });\n  }\n}//# sourceURL=webpack-internal:///34412\n");

}),

39225:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WizardAzure\": function() { return /* binding */ WizardAzure; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/components/BoxSelector */ 20292);\n/* harmony import */ var _portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/environments/queries/useCreateEnvironmentMutation */ 30417);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/BoxSelector */ 69);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _shared_NameField__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../shared/NameField */ 66167);\n/* harmony import */ var _shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../shared/MetadataFieldset/validation */ 22976);\n/* harmony import */ var _shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../shared/MoreSettingsSection */ 95806);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar initialValues = {\n  name: '',\n  applicationId: '',\n  tenantId: '',\n  authenticationKey: '',\n  meta: {\n    groupId: 1,\n    tagIds: []\n  }\n};\nvar options = [(0,_portainer_components_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.buildOption)('api', 'svg-api', 'API', '', 'api')];\nfunction WizardAzure(_ref) {\n  var onCreate = _ref.onCreate;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_12__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      clearForm = _useReducer2[1];\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(options[0].id),\n      _useState2 = _slicedToArray(_useState, 2),\n      creationType = _useState2[0],\n      setCreationType = _useState2[1];\n\n  var mutation = (0,_portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_15__.useCreateAzureEnvironmentMutation)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n    className: \"form-horizontal\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_BoxSelector__WEBPACK_IMPORTED_MODULE_20__.BoxSelector, {\n      options: options,\n      radioName: \"creation-type\",\n      onChange: function onChange(value) {\n        return setCreationType(value);\n      },\n      value: creationType\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Formik, {\n      initialValues: initialValues,\n      onSubmit: handleSubmit,\n      validateOnMount: true,\n      validationSchema: validationSchema,\n      children: function children(_ref2) {\n        var errors = _ref2.errors,\n            dirty = _ref2.dirty,\n            isValid = _ref2.isValid;\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_11__.Form, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_shared_NameField__WEBPACK_IMPORTED_MODULE_22__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__.FormControl, {\n            label: \"Application ID\",\n            errors: errors.applicationId,\n            inputId: \"applicationId-input\",\n            required: true,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n              name: \"applicationId\",\n              id: \"applicationId-input\",\n              as: _form_components_Input__WEBPACK_IMPORTED_MODULE_18__.Input,\n              placeholder: \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__.FormControl, {\n            label: \"Tenant ID\",\n            errors: errors.tenantId,\n            inputId: \"tenantId-input\",\n            required: true,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n              name: \"tenantId\",\n              id: \"tenantId-input\",\n              as: _form_components_Input__WEBPACK_IMPORTED_MODULE_18__.Input,\n              placeholder: \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_19__.FormControl, {\n            label: \"Authentication Key\",\n            errors: errors.authenticationKey,\n            inputId: \"authenticationKey-input\",\n            required: true,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n              name: \"authenticationKey\",\n              id: \"authenticationKey-input\",\n              as: _form_components_Input__WEBPACK_IMPORTED_MODULE_18__.Input,\n              placeholder: \"cOrXoK/1D35w8YQ8nH1/8ZGwzz45JIYD5jxHKXEQknk=\"\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_24__.MoreSettingsSection, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n            className: \"row\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n              className: \"col-sm-12\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_17__.LoadingButton, {\n                className: \"vertical-center\",\n                loadingText: \"Connecting environment...\",\n                isLoading: mutation.isLoading,\n                disabled: !dirty || !isValid,\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_21__.Icon, {\n                  icon: \"svg-plug\",\n                  className: \"icon icon-sm vertical-center\"\n                }), ' ', \"Connect\"]\n              })\n            })\n          })]\n        });\n      }\n    }, formKey)]\n  });\n\n  function handleSubmit(_ref3) {\n    var applicationId = _ref3.applicationId,\n        authenticationKey = _ref3.authenticationKey,\n        meta = _ref3.meta,\n        name = _ref3.name,\n        tenantId = _ref3.tenantId;\n    mutation.mutate({\n      name: name,\n      azure: {\n        applicationId: applicationId,\n        authenticationKey: authenticationKey,\n        tenantId: tenantId\n      },\n      meta: meta\n    }, {\n      onSuccess: function onSuccess(environment) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_16__.notifySuccess)('Environment created', environment.Name);\n        clearForm();\n        onCreate(environment, 'aciApi');\n      }\n    });\n  }\n}\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_13__.object)({\n    name: (0,_shared_NameField__WEBPACK_IMPORTED_MODULE_22__.nameValidation)(),\n    applicationId: (0,yup__WEBPACK_IMPORTED_MODULE_13__.string)().required('Application ID is required'),\n    tenantId: (0,yup__WEBPACK_IMPORTED_MODULE_13__.string)().required('Tenant ID is required'),\n    authenticationKey: (0,yup__WEBPACK_IMPORTED_MODULE_13__.string)().required('Authentication Key is required'),\n    meta: (0,_shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_23__.metadataValidation)()\n  });\n}//# sourceURL=webpack-internal:///39225\n");

}),

71294:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "WizardAzure": function() { return /* reexport safe */ _WizardAzure__WEBPACK_IMPORTED_MODULE_0__.WizardAzure; }
/* harmony export */ });
/* harmony import */ var _WizardAzure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WizardAzure */ 39225);


}),

71158:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"APIForm\": function() { return /* binding */ APIForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/portainer/environments/queries/useCreateEnvironmentMutation */ 30417);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/Hardware */ 83708);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _shared_NameField__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../shared/NameField */ 66167);\n/* harmony import */ var _shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../shared/MoreSettingsSection */ 95806);\n/* harmony import */ var _APIForm_validation__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./APIForm.validation */ 78643);\n/* harmony import */ var _TLSFieldset__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./TLSFieldset */ 53084);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction APIForm(_ref) {\n  var onCreate = _ref.onCreate;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_17__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      clearForm = _useReducer2[1];\n\n  var initialValues = {\n    url: '',\n    name: '',\n    tls: false,\n    meta: {\n      groupId: 1,\n      tagIds: []\n    },\n    gpus: []\n  };\n  var mutation = (0,_portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_18__.useCreateRemoteEnvironmentMutation)(_portainer_environments_types__WEBPACK_IMPORTED_MODULE_21__.EnvironmentCreationTypes.LocalDockerEnvironment);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(formik__WEBPACK_IMPORTED_MODULE_16__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validationSchema: _APIForm_validation__WEBPACK_IMPORTED_MODULE_28__.validation,\n    validateOnMount: true,\n    children: function children(_ref2) {\n      var isValid = _ref2.isValid,\n          dirty = _ref2.dirty;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_16__.Form, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_shared_NameField__WEBPACK_IMPORTED_MODULE_26__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_23__.FormControl, {\n          inputId: \"url-field\",\n          label: \"Docker API URL\",\n          required: true,\n          tooltip: \"Docker\\u4E3B\\u673A\\u7684URL\\u6216IP\\u5730\\u5740\\u3002Docker API\\u5FC5\\u987B\\u901A\\u8FC7\\u4E00\\u4E2ATCP\\u7AEF\\u53E3\\u66B4\\u9732\\u3002\\u8BF7\\u53C2\\u8003Docker\\u6587\\u6863\\u6765\\u914D\\u7F6E\\u5B83\\u3002\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(formik__WEBPACK_IMPORTED_MODULE_16__.Field, {\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_24__.Input,\n            id: \"url-field\",\n            name: \"url\",\n            placeholder: \"\\u4F8B\\u5982 10.0.0.10:2375 \\u6216 mydocker.mydomain.com:2375\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_TLSFieldset__WEBPACK_IMPORTED_MODULE_29__.TLSFieldset, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_27__.MoreSettingsSection, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_19__.Hardware, {})\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_22__.LoadingButton, {\n              className: \"wizard-connect-button vertical-center\",\n              loadingText: \"\\u8FDE\\u63A5\\u73AF\\u5883\\u4E2D...\",\n              isLoading: mutation.isLoading,\n              disabled: !dirty || !isValid,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_30__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_25__.Icon, {\n                icon: \"svg-plug\",\n                className: \"icon icon-sm vertical-center\"\n              }), ' ', \"\\u8FDE\\u63A5\"]\n            })\n          })\n        })]\n      });\n    }\n  }, formKey);\n\n  function handleSubmit(values) {\n    var tls = getTlsValues();\n    mutation.mutate({\n      name: values.name,\n      url: values.url,\n      options: {\n        tls: tls,\n        meta: values.meta,\n        gpus: values.gpus\n      }\n    }, {\n      onSuccess: function onSuccess(environment) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_20__.notifySuccess)('Environment created', environment.Name);\n        clearForm();\n        onCreate(environment);\n      }\n    });\n\n    function getTlsValues() {\n      if (!values.tls) {\n        return undefined;\n      }\n\n      return _objectSpread({\n        skipVerify: values.skipVerify\n      }, getCertFiles());\n\n      function getCertFiles() {\n        if (values.skipVerify) {\n          return {};\n        }\n\n        return {\n          caCertFile: values.caCertFile,\n          certFile: values.certFile,\n          keyFile: values.keyFile\n        };\n      }\n    }\n  }\n}//# sourceURL=webpack-internal:///71158\n");

}),

78643:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validation\": function() { return /* binding */ validation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* harmony import */ var _shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../shared/MetadataFieldset/validation */ 22976);\n/* harmony import */ var _shared_NameField__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../shared/NameField */ 66167);\n/* harmony import */ var _TLSFieldset__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TLSFieldset */ 53084);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nfunction validation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_7__.object)(_objectSpread(_objectSpread({\n    name: (0,_shared_NameField__WEBPACK_IMPORTED_MODULE_10__.nameValidation)(),\n    url: (0,yup__WEBPACK_IMPORTED_MODULE_7__.string)().required('此字段必填。'),\n    tls: (0,yup__WEBPACK_IMPORTED_MODULE_7__.boolean)().default(false),\n    skipVerify: (0,yup__WEBPACK_IMPORTED_MODULE_7__.boolean)(),\n    meta: (0,_shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_9__.metadataValidation)()\n  }, (0,_TLSFieldset__WEBPACK_IMPORTED_MODULE_11__.validation)()), {}, {\n    gpus: (0,_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_8__.gpusListValidation)()\n  }));\n}//# sourceURL=webpack-internal:///78643\n");

}),

18749:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"APITab\": function() { return /* binding */ APITab; }\n/* harmony export */ });\n/* harmony import */ var _APIForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./APIForm */ 71158);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction APITab(_ref) {\n  var onCreate = _ref.onCreate;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    className: \"mt-5\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_APIForm__WEBPACK_IMPORTED_MODULE_0__.APIForm, {\n      onCreate: onCreate\n    })\n  });\n}//# sourceURL=webpack-internal:///18749\n");

}),

98855:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DeploymentScripts\": function() { return /* binding */ DeploymentScripts; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environments/queries/useAgentDetails */ 61335);\n/* harmony import */ var _buttons_CopyButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons/CopyButton */ 69574);\n/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/Code */ 25078);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\nvar deployments = [{\n  id: 'linux',\n  label: 'Linux',\n  command: \"-v \\\"/var/run/docker.sock:/var/run/docker.sock\\\"\"\n}, {\n  id: 'win',\n  label: 'Windows',\n  command: '-v \\\\.\\\\pipe\\\\docker_engine:\\\\.\\\\pipe\\\\docker_engine'\n}];\nfunction DeploymentScripts() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(deployments[0].id),\n      _useState2 = _slicedToArray(_useState, 2),\n      deployType = _useState2[0],\n      setDeployType = _useState2[1];\n\n  var agentDetailsQuery = (0,_portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_13__.useAgentDetails)();\n\n  if (!agentDetailsQuery) {\n    return null;\n  }\n\n  var options = deployments.map(function (c) {\n    return {\n      id: c.id,\n      label: c.label,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(DeployCode, {\n        code: c.command\n      })\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_16__.NavTabs, {\n    options: options,\n    onSelect: function onSelect(id) {\n      return setDeployType(id);\n    },\n    selectedId: deployType\n  });\n}\n\nfunction DeployCode(_ref) {\n  var code = _ref.code;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"span\", {\n      className: \"text-muted small\",\n      children: \"\\u5728\\u4F7F\\u7528socket\\u5957\\u63A5\\u5B57\\u65F6\\uFF0C\\u786E\\u4FDD\\u4F60\\u5DF2\\u7ECF\\u542F\\u52A8\\u4E86Portainer \\u5BB9\\u5668\\uFF0C\\u5E76\\u8BBE\\u7F6E\\u4E86\\u4EE5\\u4E0BDocker\\u6807\\u5FD7\\u3002\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_Code__WEBPACK_IMPORTED_MODULE_15__.Code, {\n      children: code\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_buttons_CopyButton__WEBPACK_IMPORTED_MODULE_14__.CopyButton, {\n      copyText: code,\n      children: \"\\u590D\\u5236\\u547D\\u4EE4\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///98855\n");

}),

53084:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TLSFieldset\": function() { return /* binding */ TLSFieldset; },\n/* harmony export */   \"validation\": function() { return /* binding */ validation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _portainer_helpers_yup_file_validation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/helpers/yup-file-validation */ 17012);\n/* harmony import */ var _form_components_FileUpload__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/form-components/FileUpload */ 41519);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction TLSFieldset() {\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_3__.useFormikContext)(),\n      values = _useFormikContext.values,\n      setFieldValue = _useFormikContext.setFieldValue,\n      errors = _useFormikContext.errors;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_6__.SwitchField, {\n          label: \"TLS\",\n          labelClass: \"col-sm-3 col-lg-2\",\n          checked: values.tls,\n          onChange: function onChange(checked) {\n            return setFieldValue('tls', checked);\n          }\n        })\n      })\n    }), values.tls && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n        className: \"form-group\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n          className: \"col-sm-12\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_6__.SwitchField, {\n            label: \"\\u8DF3\\u8FC7\\u8BA4\\u8BC1\\u9A8C\\u8BC1\",\n            checked: !!values.skipVerify,\n            onChange: function onChange(checked) {\n              return setFieldValue('skipVerify', checked);\n            }\n          })\n        })\n      }), !values.skipVerify && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_7__.FormControl, {\n          label: \"TLS CA\\u8BC1\\u4E66\",\n          inputId: \"ca-cert-field\",\n          errors: errors.caCertFile,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FileUpload__WEBPACK_IMPORTED_MODULE_5__.FileUploadField, {\n            inputId: \"ca-cert-field\",\n            onChange: function onChange(file) {\n              return setFieldValue('caCertFile', file);\n            },\n            value: values.caCertFile\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_7__.FormControl, {\n          label: \"TLS \\u8BC1\\u4E66\",\n          inputId: \"cert-field\",\n          errors: errors.certFile,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FileUpload__WEBPACK_IMPORTED_MODULE_5__.FileUploadField, {\n            inputId: \"cert-field\",\n            onChange: function onChange(file) {\n              return setFieldValue('certFile', file);\n            },\n            value: values.certFile\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_7__.FormControl, {\n          label: \"TLS key\",\n          inputId: \"tls-key-field\",\n          errors: errors.keyFile,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_form_components_FileUpload__WEBPACK_IMPORTED_MODULE_5__.FileUploadField, {\n            inputId: \"tls-key-field\",\n            onChange: function onChange(file) {\n              return setFieldValue('keyFile', file);\n            },\n            value: values.keyFile\n          })\n        })]\n      })]\n    })]\n  });\n}\nvar MAX_FILE_SIZE = 5242880; // 5MB\n\nfunction certValidation() {\n  return (0,_portainer_helpers_yup_file_validation__WEBPACK_IMPORTED_MODULE_4__.withFileSize)((0,_portainer_helpers_yup_file_validation__WEBPACK_IMPORTED_MODULE_4__.file)(), MAX_FILE_SIZE).when(['tls', 'skipVerify'], {\n    is: function is(tls, skipVerify) {\n      return tls && !skipVerify;\n    },\n    then: function then(schema) {\n      return schema.required('文件是必需的');\n    }\n  });\n}\n\nfunction validation() {\n  return {\n    caCertFile: certValidation(),\n    certFile: certValidation(),\n    keyFile: certValidation()\n  };\n}//# sourceURL=webpack-internal:///53084\n");

}),

87760:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "APITab": function() { return /* reexport safe */ _APITab__WEBPACK_IMPORTED_MODULE_0__.APITab; }
/* harmony export */ });
/* harmony import */ var _APITab__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./APITab */ 18749);


}),

96522:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AgentTab\": function() { return /* binding */ AgentTab; }\n/* harmony export */ });\n/* harmony import */ var _shared_AgentForm_AgentForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/AgentForm/AgentForm */ 1807);\n/* harmony import */ var _DeploymentScripts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DeploymentScripts */ 68392);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction AgentTab(_ref) {\n  var onCreate = _ref.onCreate,\n      isDockerStandalone = _ref.isDockerStandalone;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_DeploymentScripts__WEBPACK_IMPORTED_MODULE_1__.DeploymentScripts, {\n      isDockerStandalone: isDockerStandalone\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"mt-5\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_shared_AgentForm_AgentForm__WEBPACK_IMPORTED_MODULE_0__.AgentForm, {\n        onCreate: onCreate\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///96522\n");

}),

68392:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DeploymentScripts\": function() { return /* binding */ DeploymentScripts; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/environments/queries/useAgentDetails */ 61335);\n/* harmony import */ var _buttons_CopyButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons/CopyButton */ 69574);\n/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/Code */ 25078);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\nvar deploymentsStandalone = [{\n  id: 'linux',\n  label: 'Linux & Windows WSL',\n  command: linuxStandaloneCommand\n}, {\n  id: 'win',\n  label: 'Windows WCS',\n  command: winStandaloneCommand\n}];\nvar deploymentsSwarm = [{\n  id: 'linux',\n  label: 'Linux & Windows WSL',\n  command: linuxSwarmCommand\n}, {\n  id: 'win',\n  label: 'Windows WCS',\n  command: winSwarmCommand\n}];\nfunction DeploymentScripts(_ref) {\n  var isDockerStandalone = _ref.isDockerStandalone;\n  var deployments = isDockerStandalone ? deploymentsStandalone : deploymentsSwarm;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(deployments[0].id),\n      _useState2 = _slicedToArray(_useState, 2),\n      deployType = _useState2[0],\n      setDeployType = _useState2[1];\n\n  var agentDetailsQuery = (0,_portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_14__.useAgentDetails)();\n\n  if (!agentDetailsQuery) {\n    return null;\n  }\n\n  var agentVersion = agentDetailsQuery.agentVersion,\n      agentSecret = agentDetailsQuery.agentSecret;\n  var options = deployments.map(function (c) {\n    var code = c.command(agentVersion, agentSecret);\n    return {\n      id: c.id,\n      label: c.label,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(DeployCode, {\n        code: code\n      })\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_17__.NavTabs, {\n    options: options,\n    onSelect: function onSelect(id) {\n      return setDeployType(id);\n    },\n    selectedId: deployType\n  });\n}\n\nfunction DeployCode(_ref2) {\n  var code = _ref2.code;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"div\", {\n      className: \"code-script\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_Code__WEBPACK_IMPORTED_MODULE_16__.Code, {\n        children: code\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_buttons_CopyButton__WEBPACK_IMPORTED_MODULE_15__.CopyButton, {\n      copyText: code,\n      children: \"\\u590D\\u5236\\u547D\\u4EE4\"\n    })]\n  });\n}\n\nfunction linuxStandaloneCommand(agentVersion, agentSecret) {\n  var secret = agentSecret === '' ? '' : \"\\\\\\n  -e AGENT_SECRET=\".concat(agentSecret, \" \");\n  return \"docker run -d \\\\\\n  -p 9001:9001 \".concat(secret, \"\\\\\\n  --name portainer_agent \\\\\\n  --restart=always \\\\\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\\\\n  -v /var/lib/docker/volumes:/var/lib/docker/volumes \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}\n\nfunction linuxSwarmCommand(agentVersion, agentSecret) {\n  var secret = agentSecret === '' ? '' : \"\\\\\\n  -e AGENT_SECRET=\".concat(agentSecret, \" \");\n  return \"docker network create \\\\\\n--driver overlay \\\\\\n  portainer_agent_network\\n\\ndocker service create \\\\\\n  --name portainer_agent \\\\\\n  --network portainer_agent_network \\\\\\n  -p 9001:9001/tcp \".concat(secret, \"\\\\\\n  --mode global \\\\\\n  --constraint 'node.platform.os == linux' \\\\\\n  --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \\\\\\n  --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}\n\nfunction winStandaloneCommand(agentVersion, agentSecret) {\n  var secret = agentSecret === '' ? '' : \"\\\\\\n  -e AGENT_SECRET=\".concat(agentSecret, \" \");\n  return \"docker run -d \\\\\\n  -p 9001:9001 \".concat(secret, \"\\\\\\n  --name portainer_agent \\\\\\n  --restart=always \\\\\\n  -v C:\\\\:C:\\\\host \\\\\\n  -v C:\\\\ProgramData\\\\docker\\\\volumes:C:\\\\ProgramData\\\\docker\\\\volumes \\\\\\n  -v \\\\\\\\.\\\\pipe\\\\docker_engine:\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}\n\nfunction winSwarmCommand(agentVersion, agentSecret) {\n  var secret = agentSecret === '' ? '' : \"\\\\\\n  -e AGENT_SECRET=\".concat(agentSecret, \" \");\n  return \"docker network create \\\\\\n--driver overlay \\\\\\n  portainer_agent_network && \\\\\\ndocker service create \\\\\\n  --name portainer_agent \\\\\\n  --network portainer_agent_network \\\\\\n  -p 9001:9001/tcp \".concat(secret, \"\\\\\\n  --mode global \\\\\\n  --constraint 'node.platform.os == windows' \\\\\\n  --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\\n  --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\\n  portainer/agent:\").concat(agentVersion, \"\\n\");\n}//# sourceURL=webpack-internal:///68392\n");

}),

38296:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AgentTab": function() { return /* reexport safe */ _AgentTab__WEBPACK_IMPORTED_MODULE_0__.AgentTab; }
/* harmony export */ });
/* harmony import */ var _AgentTab__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AgentTab */ 96522);


}),

97277:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SocketForm\": function() { return /* binding */ SocketForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environments/queries/useCreateEnvironmentMutation */ 30417);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/Hardware */ 83708);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_SwitchField__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/form-components/SwitchField */ 68980);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _shared_NameField__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../shared/NameField */ 66167);\n/* harmony import */ var _shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../shared/MoreSettingsSection */ 95806);\n/* harmony import */ var _SocketForm_validation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./SocketForm.validation */ 32698);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SocketForm(_ref) {\n  var onCreate = _ref.onCreate;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_12__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      clearForm = _useReducer2[1];\n\n  var initialValues = {\n    name: '',\n    socketPath: '',\n    overridePath: false,\n    meta: {\n      groupId: 1,\n      tagIds: []\n    },\n    gpus: []\n  };\n  var mutation = (0,_portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_13__.useCreateLocalDockerEnvironmentMutation)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validationSchema: _SocketForm_validation__WEBPACK_IMPORTED_MODULE_23__.validation,\n    validateOnMount: true,\n    children: function children(_ref2) {\n      var isValid = _ref2.isValid,\n          dirty = _ref2.dirty;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_11__.Form, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_shared_NameField__WEBPACK_IMPORTED_MODULE_21__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(OverrideSocketFieldset, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_shared_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_22__.MoreSettingsSection, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_14__.Hardware, {})\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_16__.LoadingButton, {\n              className: \"wizard-connect-button vertical-center\",\n              loadingText: \"\\u8FDE\\u63A5\\u73AF\\u5883...\",\n              isLoading: mutation.isLoading,\n              disabled: !dirty || !isValid,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_20__.Icon, {\n                icon: \"svg-plug\",\n                className: \"icon icon-sm vertical-center\"\n              }), ' ', \"\\u8FDE\\u63A5\"]\n            })\n          })\n        })]\n      });\n    }\n  }, formKey);\n\n  function handleSubmit(values) {\n    mutation.mutate({\n      name: values.name,\n      socketPath: values.overridePath ? values.socketPath : '',\n      gpus: values.gpus,\n      meta: values.meta\n    }, {\n      onSuccess: function onSuccess(environment) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_15__.notifySuccess)('环境创建', environment.Name);\n        clearForm();\n        onCreate(environment);\n      }\n    });\n  }\n}\n\nfunction OverrideSocketFieldset() {\n  var _useFormikContext = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useFormikContext)(),\n      values = _useFormikContext.values,\n      setFieldValue = _useFormikContext.setFieldValue,\n      errors = _useFormikContext.errors;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_SwitchField__WEBPACK_IMPORTED_MODULE_19__.SwitchField, {\n          checked: values.overridePath,\n          onChange: function onChange(checked) {\n            return setFieldValue('overridePath', checked);\n          },\n          label: \"\\u8986\\u76D6\\u9ED8\\u8BA4\\u7684socket\\u8DEF\\u5F84\"\n        })\n      })\n    }), values.overridePath && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n      label: \"Socket \\u8DEF\\u5F84\",\n      tooltip: \"Docker Socket\\u7684\\u8DEF\\u5F84\\u3002\\u8BB0\\u4F4F\\u8981\\u5BF9\\u5957\\u63A5\\u5B57\\u8FDB\\u884C\\u7ED1\\u5B9A\\u6302\\u8F7D\\uFF0C\\u66F4\\u591A\\u4FE1\\u606F\\u8BF7\\u53C2\\u89C1\\u4E0A\\u9762\\u7684\\u91CD\\u8981\\u901A\\u77E5\\u3002\",\n      errors: errors.socketPath,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n        name: \"socketPath\",\n        as: _form_components_Input__WEBPACK_IMPORTED_MODULE_18__.Input,\n        placeholder: \"\\u4F8B\\u5982 /var/run/docker.sock (on Linux) \\u6216 //./pipe/docker_engine (on Windows)\"\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///97277\n");

}),

32698:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validation\": function() { return /* binding */ validation; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* harmony import */ var _shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/MetadataFieldset/validation */ 22976);\n/* harmony import */ var _shared_NameField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/NameField */ 66167);\n\n\n\n\nfunction validation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)({\n    name: (0,_shared_NameField__WEBPACK_IMPORTED_MODULE_3__.nameValidation)(),\n    meta: (0,_shared_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_2__.metadataValidation)(),\n    overridePath: (0,yup__WEBPACK_IMPORTED_MODULE_0__.boolean)().default(false),\n    socketPath: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().default('').when('overridePath', function (overridePath, schema) {\n      return overridePath ? schema.required('启用覆盖路径时，需要socket路径') : schema;\n    }),\n    gpus: (0,_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_1__.gpusListValidation)()\n  });\n}//# sourceURL=webpack-internal:///32698\n");

}),

54077:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SocketTab\": function() { return /* binding */ SocketTab; }\n/* harmony export */ });\n/* harmony import */ var _APITab_DeploymentScripts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../APITab/DeploymentScripts */ 98855);\n/* harmony import */ var _SocketForm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocketForm */ 97277);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction SocketTab(_ref) {\n  var onCreate = _ref.onCreate;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_APITab_DeploymentScripts__WEBPACK_IMPORTED_MODULE_0__.DeploymentScripts, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"mt-5\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SocketForm__WEBPACK_IMPORTED_MODULE_1__.SocketForm, {\n        onCreate: onCreate\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///54077\n");

}),

98580:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SocketTab": function() { return /* reexport safe */ _SocketTab__WEBPACK_IMPORTED_MODULE_0__.SocketTab; }
/* harmony export */ });
/* harmony import */ var _SocketTab__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocketTab */ 54077);


}),

71770:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WizardDocker\": function() { return /* binding */ WizardDocker; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm/scripts */ 32858);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/BoxSelector */ 69);\n/* harmony import */ var _shared_EdgeAgentTab__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../shared/EdgeAgentTab */ 93608);\n/* harmony import */ var _useOnlyEdgeOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../useOnlyEdgeOptions */ 58809);\n/* harmony import */ var _AgentTab__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./AgentTab */ 38296);\n/* harmony import */ var _APITab__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./APITab */ 87760);\n/* harmony import */ var _SocketTab__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./SocketTab */ 98580);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\nvar defaultOptions = [{\n  id: 'agent',\n  icon: 'svg-agent',\n  label: '代理',\n  description: '',\n  value: 'agent'\n}, {\n  id: 'api',\n  icon: 'svg-api',\n  label: 'API',\n  description: '',\n  value: 'api'\n}, {\n  id: 'socket',\n  icon: 'svg-socket',\n  label: 'Socket',\n  description: '',\n  value: 'socket'\n}, {\n  id: 'edgeAgent',\n  icon: 'svg-edgeagent',\n  label: '边缘代理',\n  description: '',\n  value: 'edgeAgent',\n  hide: window.ddExtension\n}];\nfunction WizardDocker(_ref) {\n  var onCreate = _ref.onCreate,\n      isDockerStandalone = _ref.isDockerStandalone;\n  var options = (0,_useOnlyEdgeOptions__WEBPACK_IMPORTED_MODULE_16__.useFilterEdgeOptionsIfNeeded)(defaultOptions, 'edgeAgent');\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(options[0].value),\n      _useState2 = _slicedToArray(_useState, 2),\n      creationType = _useState2[0],\n      setCreationType = _useState2[1];\n\n  var tab = getTab(creationType);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\"div\", {\n    className: \"form-horizontal\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_BoxSelector__WEBPACK_IMPORTED_MODULE_14__.BoxSelector, {\n      onChange: function onChange(v) {\n        return setCreationType(v);\n      },\n      options: options,\n      value: creationType,\n      radioName: \"creation-type\"\n    }), tab]\n  });\n\n  function getTab(creationType) {\n    switch (creationType) {\n      case 'agent':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_AgentTab__WEBPACK_IMPORTED_MODULE_17__.AgentTab, {\n          onCreate: function (_onCreate) {\n            function onCreate(_x) {\n              return _onCreate.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'dockerAgent');\n          }),\n          isDockerStandalone: isDockerStandalone\n        });\n\n      case 'api':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_APITab__WEBPACK_IMPORTED_MODULE_18__.APITab, {\n          onCreate: function (_onCreate2) {\n            function onCreate(_x2) {\n              return _onCreate2.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate2.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'dockerApi');\n          })\n        });\n\n      case 'socket':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_SocketTab__WEBPACK_IMPORTED_MODULE_19__.SocketTab, {\n          onCreate: function (_onCreate3) {\n            function onCreate(_x3) {\n              return _onCreate3.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate3.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'localEndpoint');\n          })\n        });\n\n      case 'edgeAgent':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_shared_EdgeAgentTab__WEBPACK_IMPORTED_MODULE_15__.EdgeAgentTab, {\n          onCreate: function (_onCreate4) {\n            function onCreate(_x4) {\n              return _onCreate4.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate4.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'dockerEdgeAgent');\n          }),\n          commands: {\n            linux: isDockerStandalone ? [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_13__.commandsTabs.standaloneLinux] : [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_13__.commandsTabs.swarmLinux],\n            win: isDockerStandalone ? [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_13__.commandsTabs.standaloneWindow] : [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_13__.commandsTabs.swarmWindows]\n          }\n        });\n\n      default:\n        return null;\n    }\n  }\n}//# sourceURL=webpack-internal:///71770\n");

}),

93687:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "WizardDocker": function() { return /* reexport safe */ _WizardDocker__WEBPACK_IMPORTED_MODULE_0__.WizardDocker; }
/* harmony export */ });
/* harmony import */ var _WizardDocker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WizardDocker */ 71770);


}),

40935:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WizardEndpointsList\": function() { return /* binding */ WizardEndpointsList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n/* harmony import */ var _portainer_home_EnvironmentList_EnvironmentItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/home/EnvironmentList/EnvironmentItem */ 13316);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WizardEndpointsList.module.css */ 72846);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction WizardEndpointsList(_ref) {\n  var environmentIds = _ref.environmentIds;\n\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_6__.useEnvironmentList)({\n    endpointIds: environmentIds\n  }, function (environments) {\n    if (!environments) {\n      return false;\n    }\n\n    if (!environments.value.some(_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_5__.isUnassociatedEdgeEnvironment)) {\n      return false;\n    }\n\n    return _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_6__.ENVIRONMENTS_POLLING_INTERVAL;\n  }, 0, environmentIds.length > 0),\n      environments = _useEnvironmentList.environments;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_7__.Widget, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_7__.WidgetTitle, {\n      icon: \"svg-plug\",\n      title: \"\\u65B0\\u73AF\\u5883\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_7__.WidgetBody, {\n      children: environments.map(function (environment) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n          className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListWrapper,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n            className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListImage,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"i\", {\n              \"aria-hidden\": \"true\",\n              className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('space-right', (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_3__.environmentTypeIcon)(environment.Type))\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n            className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListTitle,\n            children: environment.Name\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n            className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListSubtitle,\n            children: [\"URL: \", (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_3__.stripProtocol)(environment.URL)]\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n            className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListType,\n            children: [\"Type: \", (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_3__.endpointTypeName)(environment.Type)]\n          }), (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_5__.isEdgeEnvironment)(environment.Type) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n            className: _WizardEndpointsList_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wizardListEdgeStatus,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_portainer_home_EnvironmentList_EnvironmentItem__WEBPACK_IMPORTED_MODULE_4__.EdgeIndicator, {\n              environment: environment\n            })\n          })]\n        }, environment.Id);\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///40935\n");

}),

49674:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "WizardEndpointsList": function() { return /* reexport safe */ _WizardEndpointsList__WEBPACK_IMPORTED_MODULE_0__.WizardEndpointsList; }
/* harmony export */ });
/* harmony import */ var _WizardEndpointsList__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WizardEndpointsList */ 40935);


}),

96712:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AgentPanel\": function() { return /* binding */ AgentPanel; }\n/* harmony export */ });\n/* harmony import */ var _shared_AgentForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/AgentForm */ 10358);\n/* harmony import */ var _DeploymentScripts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DeploymentScripts */ 95469);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction AgentPanel(_ref) {\n  var onCreate = _ref.onCreate;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_DeploymentScripts__WEBPACK_IMPORTED_MODULE_1__.DeploymentScripts, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"mt-5\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_shared_AgentForm__WEBPACK_IMPORTED_MODULE_0__.AgentForm, {\n        onCreate: onCreate\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///96712\n");

}),

95469:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DeploymentScripts\": function() { return /* binding */ DeploymentScripts; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_views_endpoints_helpers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/views/endpoints/helpers */ 13853);\n/* harmony import */ var _portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/environments/queries/useAgentDetails */ 61335);\n/* harmony import */ var _buttons_CopyButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons/CopyButton */ 69574);\n/* harmony import */ var _Code__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/Code */ 25078);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _NavTabs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/NavTabs */ 69953);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\nvar deployments = [{\n  id: 'k8sLoadBalancer',\n  label: 'Kubernetes via load balancer',\n  command: kubeLoadBalancerCommand,\n  showAgentSecretMessage: true\n}, {\n  id: 'k8sNodePort',\n  label: 'Kubernetes via node port',\n  command: kubeNodePortCommand,\n  showAgentSecretMessage: true\n}];\nfunction DeploymentScripts() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(deployments[0].id),\n      _useState2 = _slicedToArray(_useState, 2),\n      deployType = _useState2[0],\n      setDeployType = _useState2[1];\n\n  var agentDetailsQuery = (0,_portainer_environments_queries_useAgentDetails__WEBPACK_IMPORTED_MODULE_14__.useAgentDetails)();\n\n  if (!agentDetailsQuery) {\n    return null;\n  }\n\n  var agentVersion = agentDetailsQuery.agentVersion,\n      agentSecret = agentDetailsQuery.agentSecret;\n  var options = deployments.map(function (c) {\n    var code = c.command(agentVersion);\n    return {\n      id: c.id,\n      label: c.label,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(DeployCode, {\n        agentSecret: agentSecret,\n        showAgentSecretMessage: c.showAgentSecretMessage,\n        code: code\n      })\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_17__.FormSectionTitle, {\n      children: \"Information\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"span\", {\n        className: \"col-sm-12 text-muted small\",\n        children: \"Ensure that you have deployed the Portainer agent in your cluster first. Refer to the platform related command below to deploy it.\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_NavTabs__WEBPACK_IMPORTED_MODULE_18__.NavTabs, {\n      options: options,\n      onSelect: function onSelect(id) {\n        return setDeployType(id);\n      },\n      selectedId: deployType\n    })]\n  });\n}\n\nfunction kubeNodePortCommand(agentVersion) {\n  var agentShortVersion = (0,_portainer_views_endpoints_helpers__WEBPACK_IMPORTED_MODULE_13__.getAgentShortVersion)(agentVersion);\n  return \"kubectl apply -f https://downloads.portainer.io/ce\".concat(agentShortVersion, \"/portainer-agent-k8s-nodeport.yaml\");\n}\n\nfunction kubeLoadBalancerCommand(agentVersion) {\n  var agentShortVersion = (0,_portainer_views_endpoints_helpers__WEBPACK_IMPORTED_MODULE_13__.getAgentShortVersion)(agentVersion);\n  return \"kubectl apply -f https://downloads.portainer.io/ce\".concat(agentShortVersion, \"/portainer-agent-k8s-lb.yaml\");\n}\n\nfunction DeployCode(_ref) {\n  var agentSecret = _ref.agentSecret,\n      showAgentSecretMessage = _ref.showAgentSecretMessage,\n      code = _ref.code;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: [showAgentSecretMessage && agentSecret && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(\"p\", {\n      className: \"text-muted small my-6\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"i\", {\n        className: \"fa fa-info-circle blue-icon space-right\",\n        \"aria-hidden\": \"true\"\n      }), \"Note that the environment variable AGENT_SECRET will need to be set to\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(\"code\", {\n        children: agentSecret\n      }), \". Please update the manifest that will be downloaded from the following script.\"]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_Code__WEBPACK_IMPORTED_MODULE_16__.Code, {\n      children: code\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_buttons_CopyButton__WEBPACK_IMPORTED_MODULE_15__.CopyButton, {\n      copyText: code,\n      children: \"Copy command\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///95469\n");

}),

70394:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubeConfigTeaserForm\": function() { return /* binding */ KubeConfigTeaserForm; }\n/* harmony export */ });\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nvar initialValues = {\n  kubeConfig: '',\n  name: '',\n  meta: {\n    groupId: 1,\n    tagIds: []\n  }\n};\nfunction KubeConfigTeaserForm() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(formik__WEBPACK_IMPORTED_MODULE_0__.Formik, {\n    initialValues: initialValues,\n    onSubmit: function onSubmit() {},\n    validateOnMount: true,\n    children: function children() {\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_0__.Form, {\n        className: \"mt-5\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_3__.FormSectionTitle, {\n          children: \"Environment details\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n          className: \"form-group\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_6__.TextTip, {\n              color: \"blue\",\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"span\", {\n                className: \"text-muted\",\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"a\", {\n                  href: \"https://docs.portainer.io/start/install/agent/kubernetes/import\",\n                  target: \"_blank\",\n                  rel: \"noreferrer\",\n                  className: \"mx-1\",\n                  children: \"Import the kubeconfig file\"\n                }), \"of an existing Kubernetes cluster located on-premise or on a cloud platform. This will create a corresponding environment in Portainer and install the agent on the cluster. Please ensure:\"]\n              })\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n            className: \"col-sm-12 text-muted small\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"ul\", {\n              className: \"p-2 pl-4\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"li\", {\n                children: \"You have a load balancer enabled in your cluster\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"li\", {\n                children: \"You specify current-context in your kubeconfig\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"li\", {\n                children: \"The kubeconfig is self-contained - including any required credentials.\"\n              })]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"p\", {\n              children: \"Note: Officially supported cloud providers are Civo, Linode, DigitalOcean and Microsoft Azure (others are not guaranteed to work at present)\"\n            })]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__.FormControl, {\n          label: \"Name\",\n          required: true,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(formik__WEBPACK_IMPORTED_MODULE_0__.Field, {\n            name: \"name\",\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_4__.Input,\n            \"data-cy\": \"endpointCreate-nameInput\",\n            placeholder: \"e.g. docker-prod01 / kubernetes-cluster01\",\n            readOnly: true\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_2__.FormControl, {\n          label: \"Kubeconfig file\",\n          required: true,\n          inputId: \"kubeconfig_file\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_5__.Button, {\n            disabled: true,\n            children: \"Select a file\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_1__.LoadingButton, {\n              className: \"wizard-connect-button\",\n              loadingText: \"Connecting environment...\",\n              isLoading: false,\n              disabled: true,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"i\", {\n                className: \"fa fa-plug\",\n                \"aria-hidden\": \"true\"\n              }), \" Connect\"]\n            })\n          })\n        })]\n      });\n    }\n  });\n}//# sourceURL=webpack-internal:///70394\n");

}),

13556:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WizardKubernetes\": function() { return /* binding */ WizardKubernetes; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm/scripts */ 32858);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/BoxSelector */ 69);\n/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/BEFeatureIndicator */ 95814);\n/* harmony import */ var _shared_EdgeAgentTab__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../shared/EdgeAgentTab */ 93608);\n/* harmony import */ var _useOnlyEdgeOptions__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../useOnlyEdgeOptions */ 58809);\n/* harmony import */ var _AgentPanel__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./AgentPanel */ 96712);\n/* harmony import */ var _KubeConfigTeaserForm__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./KubeConfigTeaserForm */ 70394);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar defaultOptions = [{\n  id: 'agent_endpoint',\n  icon: 'svg-agent',\n  label: 'Agent',\n  value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.AgentEnvironment,\n  description: ''\n}, {\n  id: 'edgeAgent',\n  icon: 'svg-edgeagent',\n  label: 'Edge Agent',\n  description: '',\n  value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.EdgeAgentEnvironment,\n  hide: window.ddExtension\n}, {\n  id: 'kubeconfig_endpoint',\n  icon: 'svg-cloudimport',\n  label: 'Import',\n  value: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.KubeConfigEnvironment,\n  description: 'Import an existing Kubernetes config',\n  feature: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_21__.FeatureId.K8S_CREATE_FROM_KUBECONFIG\n}];\nfunction WizardKubernetes(_ref) {\n  var onCreate = _ref.onCreate;\n  var options = (0,_useOnlyEdgeOptions__WEBPACK_IMPORTED_MODULE_25__.useFilterEdgeOptionsIfNeeded)(defaultOptions, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.EdgeAgentEnvironment);\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)(options[0].value),\n      _useState2 = _slicedToArray(_useState, 2),\n      creationType = _useState2[0],\n      setCreationType = _useState2[1];\n\n  var tab = getTab(creationType);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"div\", {\n    className: \"form-horizontal\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_BoxSelector__WEBPACK_IMPORTED_MODULE_22__.BoxSelector, {\n      onChange: function onChange(v) {\n        return setCreationType(v);\n      },\n      options: options,\n      value: creationType,\n      radioName: \"creation-type\"\n    }), tab]\n  });\n\n  function getTab(type) {\n    var _options$find;\n\n    switch (type) {\n      case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.AgentEnvironment:\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_AgentPanel__WEBPACK_IMPORTED_MODULE_26__.AgentPanel, {\n          onCreate: function (_onCreate) {\n            function onCreate(_x) {\n              return _onCreate.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'kubernetesAgent');\n          })\n        });\n\n      case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.EdgeAgentEnvironment:\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_shared_EdgeAgentTab__WEBPACK_IMPORTED_MODULE_24__.EdgeAgentTab, {\n          onCreate: function (_onCreate2) {\n            function onCreate(_x2) {\n              return _onCreate2.apply(this, arguments);\n            }\n\n            onCreate.toString = function () {\n              return _onCreate2.toString();\n            };\n\n            return onCreate;\n          }(function (environment) {\n            return onCreate(environment, 'kubernetesEdgeAgent');\n          }),\n          commands: [_objectSpread(_objectSpread({}, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_20__.commandsTabs.k8sLinux), {}, {\n            label: 'Linux'\n          })]\n        });\n\n      case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_19__.EnvironmentCreationTypes.KubeConfigEnvironment:\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"div\", {\n          className: \"px-1 py-5 border border-solid border-orange-1\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_23__.BEFeatureIndicator, {\n            featureId: (_options$find = options.find(function (o) {\n              return o.value === type;\n            })) === null || _options$find === void 0 ? void 0 : _options$find.feature\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_KubeConfigTeaserForm__WEBPACK_IMPORTED_MODULE_27__.KubeConfigTeaserForm, {})]\n        });\n\n      default:\n        throw new Error('Creation type not supported');\n    }\n  }\n}//# sourceURL=webpack-internal:///13556\n");

}),

90602:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "WizardKubernetes": function() { return /* reexport safe */ _WizardKubernetes__WEBPACK_IMPORTED_MODULE_0__.WizardKubernetes; }
/* harmony export */ });
/* harmony import */ var _WizardKubernetes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WizardKubernetes */ 13556);


}),

97585:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EnvironmentCreationView": function() { return /* reexport safe */ _EnvironmentsCreationView__WEBPACK_IMPORTED_MODULE_0__.EnvironmentCreationView; }
/* harmony export */ });
/* harmony import */ var _EnvironmentsCreationView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EnvironmentsCreationView */ 34412);


}),

1807:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AgentForm\": function() { return /* binding */ AgentForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environments/queries/useCreateEnvironmentMutation */ 30417);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _NameField__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../NameField */ 66167);\n/* harmony import */ var _MoreSettingsSection__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../MoreSettingsSection */ 95806);\n/* harmony import */ var _Hardware_Hardware__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../Hardware/Hardware */ 83708);\n/* harmony import */ var _EnvironmentUrlField__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./EnvironmentUrlField */ 12713);\n/* harmony import */ var _AgentForm_validation__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./AgentForm.validation */ 30216);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar initialValues = {\n  environmentUrl: '',\n  name: '',\n  meta: {\n    groupId: 1,\n    tagIds: []\n  },\n  gpus: []\n};\nfunction AgentForm(_ref) {\n  var onCreate = _ref.onCreate,\n      _ref$showGpus = _ref.showGpus,\n      showGpus = _ref$showGpus === void 0 ? false : _ref$showGpus;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_12__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      clearForm = _useReducer2[1];\n\n  var mutation = (0,_portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_13__.useCreateAgentEnvironmentMutation)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validationSchema: _AgentForm_validation__WEBPACK_IMPORTED_MODULE_21__.validation,\n    validateOnMount: true,\n    children: function children(_ref2) {\n      var isValid = _ref2.isValid,\n          dirty = _ref2.dirty;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_11__.Form, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_NameField__WEBPACK_IMPORTED_MODULE_17__.NameField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_EnvironmentUrlField__WEBPACK_IMPORTED_MODULE_20__.EnvironmentUrlField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_18__.MoreSettingsSection, {\n          children: showGpus && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_19__.Hardware, {})\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__.LoadingButton, {\n              className: \"wizard-connect-button vertical-center\",\n              loadingText: \"\\u6B63\\u5728\\u8FDE\\u63A5\\u73AF\\u5883...\",\n              isLoading: mutation.isLoading,\n              disabled: !dirty || !isValid,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_22__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_16__.Icon, {\n                icon: \"svg-plug\",\n                className: \"icon icon-sm vertical-center\"\n              }), ' ', \"\\u8FDE\\u63A5\"]\n            })\n          })\n        })]\n      });\n    }\n  }, formKey);\n\n  function handleSubmit(values) {\n    mutation.mutate(values, {\n      onSuccess: function onSuccess(environment) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_14__.notifySuccess)('Environment created', environment.Name);\n        clearForm();\n        onCreate(environment);\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///1807\n");

}),

30216:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validation\": function() { return /* binding */ validation; },\n/* harmony export */   \"validateAddress\": function() { return /* binding */ validateAddress; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 74364);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 49329);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* harmony import */ var _MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../MetadataFieldset/validation */ 22976);\n/* harmony import */ var _NameField__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../NameField */ 66167);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_15__.object)({\n    name: (0,_NameField__WEBPACK_IMPORTED_MODULE_18__.nameValidation)(),\n    environmentUrl: environmentValidation(),\n    meta: (0,_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_17__.metadataValidation)(),\n    gpus: (0,_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_16__.gpusListValidation)()\n  });\n}\n\nfunction environmentValidation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_15__.string)().required('此字段必填').test('address', '环境地址的格式必须为 <IP>:<PORT> 或 <HOST>:<PORT>.', function (environmentUrl) {\n    return validateAddress(environmentUrl);\n  });\n}\n\nfunction validateAddress(address) {\n  if (typeof address === 'undefined') {\n    return false;\n  }\n\n  if (address.indexOf('://') > -1) {\n    return false;\n  }\n\n  var _address$split = address.split(':'),\n      _address$split2 = _slicedToArray(_address$split, 2),\n      host = _address$split2[0],\n      port = _address$split2[1];\n\n  if (host.length === 0 || Number.isNaN(parseInt(port, 10)) || port.match(/^[0-9]+$/) == null || parseInt(port, 10) < 1 || parseInt(port, 10) > 65535) {\n    return false;\n  }\n\n  return true;\n}//# sourceURL=webpack-internal:///30216\n");

}),

12713:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentUrlField\": function() { return /* binding */ EnvironmentUrlField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\nfunction EnvironmentUrlField() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('environmentUrl'),\n      _useField2 = _slicedToArray(_useField, 2),\n      meta = _useField2[1];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_12__.FormControl, {\n    label: \"\\u73AF\\u5883\\u5730\\u5740\",\n    errors: meta.error,\n    required: true,\n    inputId: \"environment-url-field\",\n    tooltip: \"<HOST>:<PORT> or <IP>:<PORT>\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(formik__WEBPACK_IMPORTED_MODULE_11__.Field, {\n      id: \"environment-url-field\",\n      name: \"environmentUrl\",\n      as: _form_components_Input__WEBPACK_IMPORTED_MODULE_13__.Input,\n      placeholder: \"\\u4F8B\\u5982 10.0.0.10:9001 \\u6216 tasks.portainer_agent:9001\",\n      \"data-cy\": \"endpointCreate-endpointUrlAgentInput\"\n    })\n  });\n}//# sourceURL=webpack-internal:///12713\n");

}),

10358:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AgentForm": function() { return /* reexport safe */ _AgentForm__WEBPACK_IMPORTED_MODULE_0__.AgentForm; }
/* harmony export */ });
/* harmony import */ var _AgentForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AgentForm */ 1807);


}),

90343:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeAgentFieldset\": function() { return /* binding */ EdgeAgentFieldset; }\n/* harmony export */ });\n/* harmony import */ var _NameField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../NameField */ 66167);\n/* harmony import */ var _PortainerUrlField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PortainerUrlField */ 17466);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction EdgeAgentFieldset(_ref) {\n  var readonly = _ref.readonly;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_NameField__WEBPACK_IMPORTED_MODULE_0__.NameField, {\n      readonly: readonly\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_PortainerUrlField__WEBPACK_IMPORTED_MODULE_1__.PortainerUrlField, {\n      fieldName: \"portainerUrl\",\n      readonly: readonly\n    })]\n  });\n}//# sourceURL=webpack-internal:///90343\n");

}),

78867:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeAgentForm\": function() { return /* binding */ EdgeAgentForm; },\n/* harmony export */   \"buildInitialValues\": function() { return /* binding */ buildInitialValues; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/environments/queries/useCreateEnvironmentMutation */ 30417);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n/* harmony import */ var _edge_components_EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/edge/components/EdgeCheckInIntervalField */ 64858);\n/* harmony import */ var _react_portainer_environments_wizard_hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/portainer/environments/wizard/hooks/useCreateEdgeDeviceParam */ 93711);\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _MoreSettingsSection__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../MoreSettingsSection */ 95806);\n/* harmony import */ var _Hardware_Hardware__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Hardware/Hardware */ 83708);\n/* harmony import */ var _EdgeAgentFieldset__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./EdgeAgentFieldset */ 90343);\n/* harmony import */ var _EdgeAgentForm_validation__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./EdgeAgentForm.validation */ 74011);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar initialValues = buildInitialValues();\nfunction EdgeAgentForm(_ref) {\n  var onCreate = _ref.onCreate,\n      readonly = _ref.readonly,\n      _ref$showGpus = _ref.showGpus,\n      showGpus = _ref$showGpus === void 0 ? false : _ref$showGpus;\n  var createEdgeDevice = (0,_react_portainer_environments_wizard_hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_13__.useCreateEdgeDeviceParam)();\n  var createMutation = (0,_portainer_environments_queries_useCreateEnvironmentMutation__WEBPACK_IMPORTED_MODULE_10__.useCreateEdgeAgentEnvironmentMutation)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(formik__WEBPACK_IMPORTED_MODULE_9__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validateOnMount: true,\n    validationSchema: _EdgeAgentForm_validation__WEBPACK_IMPORTED_MODULE_20__.validationSchema,\n    children: function children(_ref2) {\n      var isValid = _ref2.isValid,\n          setFieldValue = _ref2.setFieldValue,\n          values = _ref2.values;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_9__.Form, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_EdgeAgentFieldset__WEBPACK_IMPORTED_MODULE_19__.EdgeAgentFieldset, {\n          readonly: readonly\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsxs)(_MoreSettingsSection__WEBPACK_IMPORTED_MODULE_17__.MoreSettingsSection, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_14__.FormSection, {\n            title: \"Check-in Intervals\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_edge_components_EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_12__.EdgeCheckinIntervalField, {\n              readonly: readonly,\n              onChange: function onChange(value) {\n                return setFieldValue('pollFrequency', value);\n              },\n              value: values.pollFrequency\n            })\n          }), showGpus && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_Hardware_Hardware__WEBPACK_IMPORTED_MODULE_18__.Hardware, {})]\n        }), !readonly && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n          className: \"row\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_15__.LoadingButton, {\n              className: \"vertical-center\",\n              isLoading: createMutation.isLoading,\n              loadingText: \"\\u521B\\u5EFA\\u73AF\\u5883\\u4E2D...\",\n              disabled: !isValid,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_21__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_16__.Icon, {\n                icon: \"svg-plug\",\n                className: \"icon icon-sm vertical-center\"\n              }), \"\\u521B\\u5EFA\"]\n            })\n          })\n        })]\n      });\n    }\n  });\n\n  function handleSubmit(values) {\n    createMutation.mutate(_objectSpread(_objectSpread({}, values), {}, {\n      isEdgeDevice: createEdgeDevice\n    }), {\n      onSuccess: function onSuccess(environment) {\n        onCreate(environment);\n      }\n    });\n  }\n}\nfunction buildInitialValues() {\n  return {\n    name: '',\n    portainerUrl: defaultPortainerUrl(),\n    pollFrequency: 0,\n    meta: {\n      groupId: 1,\n      tagIds: []\n    },\n    gpus: []\n  };\n\n  function defaultPortainerUrl() {\n    var baseHREF = (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_11__.baseHref)();\n    return window.location.origin + (baseHREF !== '/' ? baseHREF : '');\n  }\n}//# sourceURL=webpack-internal:///78867\n");

}),

74011:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* harmony import */ var _MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../MetadataFieldset/validation */ 22976);\n/* harmony import */ var _NameField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../NameField */ 66167);\n/* harmony import */ var _PortainerUrlField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PortainerUrlField */ 17466);\n\n\n\n\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    name: (0,_NameField__WEBPACK_IMPORTED_MODULE_3__.nameValidation)(),\n    portainerUrl: (0,_PortainerUrlField__WEBPACK_IMPORTED_MODULE_4__.validation)(),\n    pollFrequency: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)().required(),\n    meta: (0,_MetadataFieldset_validation__WEBPACK_IMPORTED_MODULE_2__.metadataValidation)(),\n    gpus: (0,_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_1__.gpusListValidation)()\n  });\n}//# sourceURL=webpack-internal:///74011\n");

}),

17466:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validation\": function() { return /* binding */ validation; },\n/* harmony export */   \"PortainerUrlField\": function() { return /* binding */ PortainerUrlField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ 89954);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ 88373);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_14__.string)().test('url', 'URL应该是一个有效的URI，不能包括localhost', function (value) {\n    if (!value) {\n      return false;\n    }\n\n    try {\n      var url = new URL(value);\n      return url.hostname !== 'localhost';\n    } catch (_unused) {\n      return false;\n    }\n  }).required('URL是必需的');\n}\nfunction PortainerUrlField(_ref) {\n  var fieldName = _ref.fieldName,\n      readonly = _ref.readonly;\n\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_13__.useField)(fieldName),\n      _useField2 = _slicedToArray(_useField, 2),\n      metaProps = _useField2[1];\n\n  var id = \"\".concat(fieldName, \"-input\");\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__.FormControl, {\n    label: \"Portainer server URL\",\n    tooltip: \"\\u4EE3\\u7406\\u5C06\\u7528\\u4E8E\\u542F\\u52A8\\u901A\\u4FE1\\u7684Portainer\\u5B9E\\u4F8B\\u7684URL\\u3002\",\n    required: true,\n    errors: metaProps.error,\n    inputId: id,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(formik__WEBPACK_IMPORTED_MODULE_13__.Field, {\n      id: id,\n      name: fieldName,\n      as: _form_components_Input__WEBPACK_IMPORTED_MODULE_16__.Input,\n      placeholder: \"\\u4F8B\\u5982 https://10.0.0.10:9443 \\u6216 https://portainer.mydomain.com\",\n      required: true,\n      \"data-cy\": \"endpointCreate-portainerServerUrlInput\",\n      readOnly: readonly\n    })\n  });\n}//# sourceURL=webpack-internal:///17466\n");

}),

19996:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EdgeAgentForm": function() { return /* reexport safe */ _EdgeAgentForm__WEBPACK_IMPORTED_MODULE_0__.EdgeAgentForm; }
/* harmony export */ });
/* harmony import */ var _EdgeAgentForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeAgentForm */ 78867);


}),

65593:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeAgentTab\": function() { return /* binding */ EdgeAgentTab; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! uuid */ 64001);\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(uuid__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm */ 37665);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _EdgeAgentForm__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./EdgeAgentForm */ 19996);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\nfunction EdgeAgentTab(_ref) {\n  var onCreate = _ref.onCreate,\n      commands = _ref.commands,\n      isNomadTokenVisible = _ref.isNomadTokenVisible,\n      _ref$showGpus = _ref.showGpus,\n      showGpus = _ref$showGpus === void 0 ? false : _ref$showGpus;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(),\n      _useState2 = _slicedToArray(_useState, 2),\n      edgeInfo = _useState2[0],\n      setEdgeInfo = _useState2[1];\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_12__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      clearForm = _useReducer2[1];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_EdgeAgentForm__WEBPACK_IMPORTED_MODULE_15__.EdgeAgentForm, {\n      onCreate: handleCreate,\n      readonly: !!edgeInfo,\n      showGpus: showGpus\n    }, formKey), edgeInfo && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_13__.EdgeScriptForm, {\n        edgeInfo: edgeInfo,\n        commands: commands,\n        isNomadTokenVisible: isNomadTokenVisible\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"div\", {\n        className: \"row\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(\"div\", {\n          className: \"flex justify-end\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n            color: \"primary\",\n            type: \"reset\",\n            onClick: handleReset,\n            children: \"\\u6DFB\\u52A0\\u5176\\u4ED6\\u73AF\\u5883\"\n          })\n        })\n      })]\n    })]\n  });\n\n  function handleCreate(environment) {\n    setEdgeInfo({\n      key: environment.EdgeKey,\n      id: environment.EdgeID || (0,uuid__WEBPACK_IMPORTED_MODULE_11__.v4)()\n    });\n    onCreate(environment);\n  }\n\n  function handleReset() {\n    setEdgeInfo(undefined);\n    clearForm();\n  }\n}//# sourceURL=webpack-internal:///65593\n");

}),

93608:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EdgeAgentTab": function() { return /* reexport safe */ _EdgeAgentTab__WEBPACK_IMPORTED_MODULE_0__.EdgeAgentTab; }
/* harmony export */ });
/* harmony import */ var _EdgeAgentTab__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeAgentTab */ 65593);


}),

16100:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GpusList\": function() { return /* binding */ GpusList; },\n/* harmony export */   \"gpusListValidation\": function() { return /* binding */ gpusListValidation; },\n/* harmony export */   \"GpusListAngular\": function() { return /* binding */ GpusListAngular; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _form_components_InputList__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/form-components/InputList */ 59505);\n/* harmony import */ var _form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/form-components/InputGroup */ 40413);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Item(_ref) {\n  var item = _ref.item,\n      onChange = _ref.onChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"div\", {\n    className: \"flex gap-2 flex-grow\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup, {\n      size: \"small\",\n      className: \"flex-grow\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup.Addon, {\n        children: \"GPU \\u540D\\u79F0\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup.Input, {\n        placeholder: \"my-gpu\",\n        value: item.name,\n        onChange: function (_onChange) {\n          function onChange(_x) {\n            return _onChange.apply(this, arguments);\n          }\n\n          onChange.toString = function () {\n            return _onChange.toString();\n          };\n\n          return onChange;\n        }(function (e) {\n          onChange(_objectSpread(_objectSpread({}, item), {}, {\n            name: e.target.value\n          }));\n        })\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup, {\n      size: \"small\",\n      className: \"flex-grow\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup.Addon, {\n        children: \"\\u7D22\\u5F15\\u6216UUID\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputGroup__WEBPACK_IMPORTED_MODULE_12__.InputGroup.Input, {\n        placeholder: \"0 or GPU-6e2c7185-c3d3-ae22-da43-bc5267b89061\",\n        value: item.value,\n        onChange: function (_onChange2) {\n          function onChange(_x2) {\n            return _onChange2.apply(this, arguments);\n          }\n\n          onChange.toString = function () {\n            return _onChange2.toString();\n          };\n\n          return onChange;\n        }(function (e) {\n          onChange(_objectSpread(_objectSpread({}, item), {}, {\n            value: e.target.value\n          }));\n        })\n      })]\n    })]\n  });\n}\n\nfunction GpusList(_ref2) {\n  var value = _ref2.value,\n      onChange = _ref2.onChange;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_form_components_InputList__WEBPACK_IMPORTED_MODULE_11__.InputList, {\n    label: \"GPU\",\n    value: value,\n    onChange: onChange,\n    itemBuilder: function itemBuilder() {\n      return {\n        value: '',\n        name: ''\n      };\n    },\n    addLabel: \"add\",\n    item: Item\n  });\n}\nfunction gpusListValidation() {\n  var gpuShape = (0,yup__WEBPACK_IMPORTED_MODULE_9__.object)().shape({\n    name: (0,yup__WEBPACK_IMPORTED_MODULE_9__.string)().required(),\n    value: (0,yup__WEBPACK_IMPORTED_MODULE_9__.string)().required()\n  });\n  return (0,yup__WEBPACK_IMPORTED_MODULE_9__.array)().of(gpuShape).default([]);\n}\nvar GpusListAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_10__.r2a)(GpusList, ['value', 'onChange']);//# sourceURL=webpack-internal:///16100\n");

}),

83708:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Hardware\": function() { return /* binding */ Hardware; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\nfunction Hardware() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('gpus'),\n      _useField2 = _slicedToArray(_useField, 3),\n      field = _useField2[0],\n      helpers = _useField2[2];\n\n  function onChange(value) {\n    helpers.setValue(value);\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_13__.FormSection, {\n    title: \"\\u786C\\u4EF6\\u52A0\\u901F\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_12__.GpusList, {\n      value: field.value,\n      onChange: onChange\n    })\n  });\n}//# sourceURL=webpack-internal:///83708\n");

}),

8515:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GroupField\": function() { return /* binding */ GroupField; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environment-groups/queries */ 43145);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction GroupField() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_12__.useField)('meta.groupId'),\n      _useField2 = _slicedToArray(_useField, 3),\n      fieldProps = _useField2[0],\n      metaProps = _useField2[1],\n      helpers = _useField2[2];\n\n  var groupsQuery = (0,_portainer_environment_groups_queries__WEBPACK_IMPORTED_MODULE_13__.useGroups)();\n\n  if (!groupsQuery.data) {\n    return null;\n  }\n\n  var options = groupsQuery.data.map(function (group) {\n    return {\n      value: group.Id,\n      label: group.Name\n    };\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_14__.FormControl, {\n    label: \"\\u7FA4\\u7EC4\",\n    errors: metaProps.error,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_15__.Select, {\n      name: \"meta.groupId\",\n      options: options,\n      value: fieldProps.value,\n      onChange: function onChange(e) {\n        return handleChange(e.target.value);\n      }\n    })\n  });\n\n  function handleChange(value) {\n    helpers.setValue(value ? parseInt(value, 10) : 1);\n  }\n}//# sourceURL=webpack-internal:///8515\n");

}),

91142:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MetadataFieldset\": function() { return /* binding */ MetadataFieldset; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _TagSelector__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/TagSelector */ 49501);\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var _GroupsField__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./GroupsField */ 8515);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nfunction MetadataFieldset() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_11__.useField)('meta.tagIds'),\n      _useField2 = _slicedToArray(_useField, 3),\n      tagProps = _useField2[0],\n      tagHelpers = _useField2[2];\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_12__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_14__.FormSection, {\n    title: \"\\u5143\\u6570\\u636E\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_GroupsField__WEBPACK_IMPORTED_MODULE_15__.GroupField, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_TagSelector__WEBPACK_IMPORTED_MODULE_13__.TagSelector, {\n      value: tagProps.value,\n      allowCreate: isAdmin,\n      onChange: function onChange(value) {\n        return tagHelpers.setValue(value);\n      }\n    })]\n  });\n}//# sourceURL=webpack-internal:///91142\n");

}),

50755:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "MetadataFieldset": function() { return /* reexport safe */ _MetadataFieldset__WEBPACK_IMPORTED_MODULE_0__.MetadataFieldset; }
/* harmony export */ });
/* harmony import */ var _MetadataFieldset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MetadataFieldset */ 91142);


}),

22976:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"metadataValidation\": function() { return /* binding */ metadataValidation; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n\nfunction metadataValidation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)({\n    groupId: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)(),\n    tagIds: (0,yup__WEBPACK_IMPORTED_MODULE_0__.array)().of((0,yup__WEBPACK_IMPORTED_MODULE_0__.number)()).default([])\n  });\n}//# sourceURL=webpack-internal:///22976\n");

}),

95806:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MoreSettingsSection\": function() { return /* binding */ MoreSettingsSection; }\n/* harmony export */ });\n/* harmony import */ var _form_components_FormSection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/form-components/FormSection */ 17092);\n/* harmony import */ var _MetadataFieldset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MetadataFieldset */ 50755);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction MoreSettingsSection(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_form_components_FormSection__WEBPACK_IMPORTED_MODULE_0__.FormSection, {\n    title: \"\\u66F4\\u591A\\u8BBE\\u7F6E\",\n    isFoldable: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n      className: \"ml-8\",\n      children: [children, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_MetadataFieldset__WEBPACK_IMPORTED_MODULE_1__.MetadataFieldset, {})]\n    })\n  });\n}//# sourceURL=webpack-internal:///95806\n");

}),

66167:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NameField\": function() { return /* binding */ NameField; },\n/* harmony export */   \"isNameUnique\": function() { return /* binding */ isNameUnique; },\n/* harmony export */   \"nameValidation\": function() { return /* binding */ nameValidation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/debounce */ 60352);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\nfunction NameField(_ref) {\n  var readonly = _ref.readonly;\n\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_14__.useField)('name'),\n      _useField2 = _slicedToArray(_useField, 2),\n      meta = _useField2[1];\n\n  var id = 'name-input';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n    label: \"\\u540D\\u79F0\",\n    required: true,\n    errors: meta.error,\n    inputId: id,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(formik__WEBPACK_IMPORTED_MODULE_14__.Field, {\n      id: id,\n      name: \"name\",\n      as: _form_components_Input__WEBPACK_IMPORTED_MODULE_18__.Input,\n      \"data-cy\": \"endpointCreate-nameInput\",\n      placeholder: \"e.g. docker-prod01 / kubernetes-cluster01\",\n      readOnly: readonly\n    })\n  });\n}\nfunction isNameUnique(_x) {\n  return _isNameUnique.apply(this, arguments);\n}\n\nfunction _isNameUnique() {\n  _isNameUnique = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(name) {\n    var result;\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (name) {\n              _context.next = 2;\n              break;\n            }\n\n            return _context.abrupt(\"return\", true);\n\n          case 2:\n            _context.prev = 2;\n            _context.next = 5;\n            return (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_16__.getEnvironments)({\n              limit: 1,\n              query: {\n                name: name\n              }\n            });\n\n          case 5:\n            result = _context.sent;\n\n            if (!(result.totalCount > 0)) {\n              _context.next = 8;\n              break;\n            }\n\n            return _context.abrupt(\"return\", false);\n\n          case 8:\n            _context.next = 12;\n            break;\n\n          case 10:\n            _context.prev = 10;\n            _context.t0 = _context[\"catch\"](2);\n\n          case 12:\n            return _context.abrupt(\"return\", true);\n\n          case 13:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[2, 10]]);\n  }));\n  return _isNameUnique.apply(this, arguments);\n}\n\nvar debouncedIsNameUnique = lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default()(isNameUnique, 500);\n\nfunction nameValidation() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_15__.string)().required('名称是必填项').test('unique-name', '名称应唯一', function (name) {\n    return debouncedIsNameUnique(name) || false;\n  });\n}//# sourceURL=webpack-internal:///66167\n");

}),

58809:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useFilterEdgeOptionsIfNeeded\": function() { return /* binding */ useFilterEdgeOptionsIfNeeded; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useCreateEdgeDeviceParam */ 93711);\n\n\n\nfunction useFilterEdgeOptionsIfNeeded(options, edgeValue) {\n  var createEdgeDevice = (0,_hooks_useCreateEdgeDeviceParam__WEBPACK_IMPORTED_MODULE_2__.useCreateEdgeDeviceParam)();\n\n  if (!createEdgeDevice) {\n    return options;\n  }\n\n  return options.filter(function (option) {\n    return option.value === edgeValue;\n  });\n}//# sourceURL=webpack-internal:///58809\n");

}),

27492:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HomeView\": function() { return /* binding */ HomeView; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 42108);\n/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/angulartics.matomo/analytics-services */ 45119);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _components_Option__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/Option */ 67169);\n/* harmony import */ var _useFetchOrCreateLocalEnvironment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./useFetchOrCreateLocalEnvironment */ 30881);\n/* harmony import */ var _HomeView_module_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./HomeView.module.css */ 70682);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction HomeView() {\n  var localEnvironmentAdded = (0,_useFetchOrCreateLocalEnvironment__WEBPACK_IMPORTED_MODULE_7__.useConnectLocalEnvironment)();\n\n  var _useAnalytics = (0,_angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)(),\n      trackEvent = _useAnalytics.trackEvent;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_3__.PageHeader, {\n      title: \"\\u5FEB\\u901F\\u8BBE\\u7F6E\",\n      breadcrumbs: [{\n        label: '环境向导'\n      }]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_4__.Widget, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_4__.WidgetTitle, {\n            title: \"\\u73AF\\u5883\\u5411\\u5BFC\",\n            icon: \"svg-magic\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_4__.WidgetBody, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n              className: \"row\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n                className: \"col-sm-12 form-section-title\",\n                children: \"\\u6B22\\u8FCE\\u4F7F\\u7528Portainer\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n                className: \"text-muted small\",\n                children: [localEnvironmentAdded.status === 'success' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"p\", {\n                  children: [\"\\u6211\\u4EEC\\u5DF2\\u7ECF\\u5C06\\u4F60\\u7684\\u672C\\u5730\\u73AF\\u5883\", ' ', getTypeLabel(localEnvironmentAdded.type), \" \\u8FDE\\u63A5\\u5230 Portainer.\"]\n                }), localEnvironmentAdded.status === 'error' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"p\", {\n                  children: [\"\\u6211\\u4EEC\\u65E0\\u6CD5\\u5C06\\u60A8\\u7684\\u672C\\u5730\\u73AF\\u5883\\u8FDE\\u63A5\\u5230Portainer\\u3002\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"br\", {}), \"\\u8BF7\\u786E\\u4FDD\\u4F60\\u7684\\u73AF\\u5883\\u88AB\\u6B63\\u786E\\u66DD\\u5149\\u3002\\u5173\\u4E8E \\u5E2E\\u52A9\\u5B89\\u88C5\\uFF0C\\u8BF7\\u8BBF\\u95EE\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"a\", {\n                    href: \"https://documentation.portainer.io/quickstart/\",\n                    children: \"https://documentation.portainer.io/quickstart\"\n                  })]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"p\", {\n                  children: \"\\u5728\\u4E0B\\u9762\\u5F00\\u59CB\\u4F7F\\u7528\\u4F60\\u7684\\u672C\\u5730\\u5BB9\\u5668\\u6216\\u8FDE\\u63A5\\u66F4\\u591A\\u7684 \\u5BB9\\u5668\\u73AF\\u5883\\u3002\"\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n                className: \"flex flex-wrap gap-4\",\n                children: [localEnvironmentAdded.status === 'success' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_5__.Link, {\n                  to: \"portainer.home\",\n                  className: _HomeView_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].link,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_Option__WEBPACK_IMPORTED_MODULE_6__.Option, {\n                    icon: localEnvironmentAdded.type === _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentType.Docker ? 'fab fa-docker' : 'fas fa-dharmachakra',\n                    title: \"\\u5F00\\u59CB\\u4F7F\\u7528\",\n                    description: \"\\u4F7F\\u7528Portainer\\u6B63\\u5728\\u8FD0\\u884C\\u7684\\u672C\\u5730\\u73AF\\u5883\\u8FDB\\u884C\\u64CD\\u4F5C\",\n                    onClick: function onClick() {\n                      return trackLocalEnvironmentAnalytics();\n                    }\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_5__.Link, {\n                  to: \"portainer.wizard.endpoints\",\n                  className: _HomeView_module_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"].link,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_Option__WEBPACK_IMPORTED_MODULE_6__.Option, {\n                    title: \"\\u6DFB\\u52A0\\u73AF\\u5883\",\n                    icon: \"fa fa-plug\",\n                    description: \"\\u8FDE\\u63A5\\u5230\\u5176\\u4ED6\\u73AF\\u5883\"\n                  })\n                })]\n              })]\n            })\n          })]\n        })\n      })\n    })]\n  });\n\n  function trackLocalEnvironmentAnalytics() {\n    trackEvent('endpoint-wizard-endpoint-select', {\n      category: 'portainer',\n      metadata: {\n        environment: 'Get-started-local-environment'\n      }\n    });\n  }\n}\n\nfunction getTypeLabel(type) {\n  switch (type) {\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentType.Docker:\n      return 'Docker';\n\n    case _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentType.KubernetesLocal:\n      return 'Kubernetes';\n\n    default:\n      return '';\n  }\n}//# sourceURL=webpack-internal:///27492\n");

}),

70971:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "HomeView": function() { return /* reexport safe */ _HomeView__WEBPACK_IMPORTED_MODULE_0__.HomeView; }
/* harmony export */ });
/* harmony import */ var _HomeView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HomeView */ 27492);


}),

30881:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useConnectLocalEnvironment\": function() { return /* binding */ useConnectLocalEnvironment; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironmentList */ 86064);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_environment_service_create__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/environments/environment.service/create */ 94040);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction useConnectLocalEnvironment() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(),\n      _useState2 = _slicedToArray(_useState, 2),\n      localEnvironment = _useState2[0],\n      setLocalEnvironment = _useState2[1];\n\n  var _useFetchLocalEnviron = useFetchLocalEnvironment(),\n      isLoading = _useFetchLocalEnviron.isLoading,\n      environment = _useFetchLocalEnviron.environment;\n\n  var createLocalEnvironmentMutation = (0,react_query__WEBPACK_IMPORTED_MODULE_14__.useMutation)(createLocalEnvironment);\n  var mutate = createLocalEnvironmentMutation.mutate;\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    if (isLoading || localEnvironment) {\n      return;\n    }\n\n    if (environment) {\n      setLocalEnvironment(environment);\n      return;\n    }\n\n    mutate(undefined, {\n      onSuccess: function onSuccess(environment) {\n        setLocalEnvironment(environment);\n      }\n    });\n  }, [environment, isLoading, localEnvironment, mutate]);\n  return {\n    status: getStatus(isLoading, createLocalEnvironmentMutation.status),\n    type: localEnvironment === null || localEnvironment === void 0 ? void 0 : localEnvironment.Type\n  };\n}\n\nfunction getStatus(isLoading, mutationStatus) {\n  if (isLoading || mutationStatus === 'loading') {\n    return 'loading';\n  }\n\n  if (mutationStatus === 'error') {\n    return 'error';\n  }\n\n  return 'success';\n}\n\nfunction createLocalEnvironment() {\n  return _createLocalEnvironment.apply(this, arguments);\n}\n\nfunction _createLocalEnvironment() {\n  _createLocalEnvironment = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return (0,_portainer_environments_environment_service_create__WEBPACK_IMPORTED_MODULE_17__.createLocalKubernetesEnvironment)({\n              name: 'local'\n            });\n\n          case 3:\n            return _context.abrupt(\"return\", _context.sent);\n\n          case 6:\n            _context.prev = 6;\n            _context.t0 = _context[\"catch\"](0);\n            _context.next = 10;\n            return (0,_portainer_environments_environment_service_create__WEBPACK_IMPORTED_MODULE_17__.createLocalDockerEnvironment)({\n              name: 'local'\n            });\n\n          case 10:\n            return _context.abrupt(\"return\", _context.sent);\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n  return _createLocalEnvironment.apply(this, arguments);\n}\n\nfunction useFetchLocalEnvironment() {\n  var _useEnvironmentList = (0,_portainer_environments_queries_useEnvironmentList__WEBPACK_IMPORTED_MODULE_15__.useEnvironmentList)({\n    page: 0,\n    pageLimit: 1,\n    types: [_portainer_environments_types__WEBPACK_IMPORTED_MODULE_16__.EnvironmentType.Docker, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_16__.EnvironmentType.KubernetesLocal]\n  }, false, Infinity),\n      environments = _useEnvironmentList.environments,\n      isLoading = _useEnvironmentList.isLoading;\n\n  return {\n    isLoading: isLoading,\n    environment: environments.length > 0 ? environments[0] : undefined\n  };\n}//# sourceURL=webpack-internal:///30881\n");

}),

73479:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Option\": function() { return /* binding */ Option; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/BEFeatureIndicator */ 95814);\n/* harmony import */ var _Option_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Option.module.css */ 55207);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\nfunction Option(_ref) {\n  var icon = _ref.icon,\n      active = _ref.active,\n      description = _ref.description,\n      title = _ref.title,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,\n      featureId = _ref.featureId;\n  var Icon = typeof icon !== 'string' ? icon : null;\n  var isLimited = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_3__.isLimitedToBE)(featureId);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"button\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].root, isLimited ? _Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].teaser : _Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].feature, 'border-0', _defineProperty({}, _Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].active, active)),\n    type: \"button\",\n    disabled: isLimited,\n    onClick: onClick,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n      className: \"text-center mt-2\",\n      children: Icon ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(Icon, {\n        selected: active,\n        className: _Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].iconComponent\n      }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"i\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(icon, 'block', _Option_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].icon)\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n      className: \"mt-3 text-center flex flex-col\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"h3\", {\n        children: title\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"h5\", {\n        children: description\n      }), isLimited && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_4__.BEFeatureIndicator, {\n        showIcon: false,\n        featureId: featureId,\n        className: \"!whitespace-normal\"\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///73479\n");

}),

67169:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Option": function() { return /* reexport safe */ _Option__WEBPACK_IMPORTED_MODULE_0__.Option; }
/* harmony export */ });
/* harmony import */ var _Option__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Option */ 73479);


}),

93711:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCreateEdgeDeviceParam\": function() { return /* binding */ useCreateEdgeDeviceParam; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n\nfunction useCreateEdgeDeviceParam() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useCurrentStateAndParams)(),\n      edgeDeviceParam = _useCurrentStateAndPa.params.edgeDevice;\n\n  var createEdgeDevice = edgeDeviceParam ? edgeDeviceParam === 'true' : false;\n  return createEdgeDevice;\n}//# sourceURL=webpack-internal:///93711\n");

}),

13206:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HomeView\": function() { return /* reexport safe */ _HomeView__WEBPACK_IMPORTED_MODULE_0__.HomeView; },\n/* harmony export */   \"EnvironmentTypeSelectView\": function() { return /* reexport safe */ _EnvironmentTypeSelectView__WEBPACK_IMPORTED_MODULE_1__.EnvironmentTypeSelectView; },\n/* harmony export */   \"EnvironmentCreationView\": function() { return /* reexport safe */ _EnvironmentsCreationView__WEBPACK_IMPORTED_MODULE_2__.EnvironmentCreationView; }\n/* harmony export */ });\n/* harmony import */ var _HomeView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HomeView */ 70971);\n/* harmony import */ var _EnvironmentTypeSelectView__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EnvironmentTypeSelectView */ 97717);\n/* harmony import */ var _EnvironmentsCreationView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EnvironmentsCreationView */ 97585);\n\n\n//# sourceURL=webpack-internal:///13206\n");

}),

92081:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NotificationsView\": function() { return /* binding */ NotificationsView; },\n/* harmony export */   \"NotificationsViewAngular\": function() { return /* binding */ NotificationsViewAngular; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 24090);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _notifications_store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./notifications-store */ 76598);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./columns */ 21099);\n/* harmony import */ var _datatable_store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./datatable-store */ 58777);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar storageKey = 'notifications-list';\nvar useSettingsStore = (0,_datatable_store__WEBPACK_IMPORTED_MODULE_12__.createStore)(storageKey, 'time', true);\nfunction NotificationsView() {\n  var settingsStore = useSettingsStore();\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.useUser)(),\n      user = _useUser.user;\n\n  var userNotifications = (0,zustand__WEBPACK_IMPORTED_MODULE_14__.useStore)(_notifications_store__WEBPACK_IMPORTED_MODULE_10__.notificationsStore, function (state) {\n    return state.userNotifications[user.Id];\n  }) || [];\n  var breadcrumbs = 'Notifications';\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_1__.useCurrentStateAndParams)(),\n      id = _useCurrentStateAndPa.params.id;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_7__.PageHeader, {\n      title: \"\\u901A\\u77E5\",\n      breadcrumbs: breadcrumbs,\n      reload: true\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_8__.Datatable, {\n      columns: _columns__WEBPACK_IMPORTED_MODULE_11__.columns,\n      titleOptions: {\n        title: '通知',\n        icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n      },\n      dataset: userNotifications,\n      settingsStore: settingsStore,\n      storageKey: \"notifications\",\n      emptyContentLabel: \"\\u6CA1\\u6709\\u627E\\u5230\\u901A\\u77E5\",\n      totalCount: userNotifications.length,\n      renderTableActions: function renderTableActions(selectedRows) {\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(TableActions, {\n          selectedRows: selectedRows\n        });\n      },\n      initialActiveItem: id\n    })]\n  });\n}\n\nfunction TableActions(_ref) {\n  var selectedRows = _ref.selectedRows;\n\n  var _useUser2 = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_4__.useUser)(),\n      user = _useUser2.user;\n\n  var notificationsStoreState = (0,zustand__WEBPACK_IMPORTED_MODULE_14__.useStore)(_notifications_store__WEBPACK_IMPORTED_MODULE_10__.notificationsStore);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_9__.Button, {\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n    color: \"dangerlight\",\n    onClick: function onClick() {\n      return handleRemove();\n    },\n    disabled: selectedRows.length === 0,\n    children: \"Remove\"\n  });\n\n  function handleRemove() {\n    var removeNotifications = notificationsStoreState.removeNotifications;\n    var ids = selectedRows.map(function (row) {\n      return row.id;\n    });\n    removeNotifications(user.Id, ids);\n  }\n}\n\nvar NotificationsViewAngular = (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_3__.react2angular)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_5__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_6__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_2__.withCurrentUser)(NotificationsView))), []);//# sourceURL=webpack-internal:///92081\n");

}),

48212:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"details\": function() { return /* binding */ details; }\n/* harmony export */ });\nvar details = {\n  Header: 'Details',\n  accessor: 'details',\n  id: 'details',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///48212\n");

}),

21099:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"columns\": function() { return /* binding */ columns; }\n/* harmony export */ });\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type */ 81111);\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ 94114);\n/* harmony import */ var _details__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./details */ 48212);\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./time */ 37289);\n\n\n\n\nvar columns = [_type__WEBPACK_IMPORTED_MODULE_0__.type, _title__WEBPACK_IMPORTED_MODULE_1__.title, _details__WEBPACK_IMPORTED_MODULE_2__.details, _time__WEBPACK_IMPORTED_MODULE_3__.time];//# sourceURL=webpack-internal:///21099\n");

}),

37289:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"time\": function() { return /* binding */ time; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n\nvar time = {\n  Header: 'Time',\n  accessor: function accessor(row) {\n    return row.timeStamp ? (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.isoDate)(row.timeStamp) : '-';\n  },\n  id: 'time',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///37289\n");

}),

94114:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"title\": function() { return /* binding */ title; }\n/* harmony export */ });\nvar title = {\n  Header: 'Title',\n  accessor: 'title',\n  id: 'title',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///94114\n");

}),

81111:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"type\": function() { return /* binding */ type; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__);\n\nvar type = {\n  Header: 'Type',\n  accessor: function accessor(row) {\n    return row.type.charAt(0).toUpperCase() + row.type.slice(1);\n  },\n  id: 'type',\n  disableFilters: true,\n  canHide: true\n};//# sourceURL=webpack-internal:///81111\n");

}),

58777:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zustand */ 22037);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/components/datatables/types */ 16579);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nfunction createStore(storageKey, initialSortBy, desc) {\n  return (0,zustand__WEBPACK_IMPORTED_MODULE_9__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_10__.persist)(function (set) {\n    return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.sortableSettings)(set, initialSortBy, desc)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.paginationSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.hiddenColumnsSettings)(set)), (0,_react_components_datatables_types__WEBPACK_IMPORTED_MODULE_8__.refreshableSettings)(set));\n  }, {\n    name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_7__.keyBuilder)(storageKey)\n  }));\n}//# sourceURL=webpack-internal:///58777\n");

}),

76598:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"notificationsStore\": function() { return /* binding */ notificationsStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! zustand/vanilla */ 36153);\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! zustand/middleware */ 55087);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nvar notificationsStore = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_20__[\"default\"])()((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_21__.persist)(function (set) {\n  return {\n    userNotifications: {},\n    addNotification: function addNotification(userId, notification) {\n      set(function (state) {\n        return {\n          userNotifications: _objectSpread(_objectSpread({}, state.userNotifications), {}, _defineProperty({}, userId, [].concat(_toConsumableArray(state.userNotifications[userId] || []), [notification])))\n        };\n      });\n    },\n    removeNotification: function removeNotification(userId, notificationId) {\n      set(function (state) {\n        return {\n          userNotifications: _objectSpread(_objectSpread({}, state.userNotifications), {}, _defineProperty({}, userId, state.userNotifications[userId].filter(function (notif) {\n            return notif.id !== notificationId;\n          })))\n        };\n      });\n    },\n    removeNotifications: function removeNotifications(userId, notificationIds) {\n      set(function (state) {\n        return {\n          userNotifications: _objectSpread(_objectSpread({}, state.userNotifications), {}, _defineProperty({}, userId, state.userNotifications[userId].filter(function (notification) {\n            return !notificationIds.includes(notification.id);\n          })))\n        };\n      });\n    },\n    clearUserNotifications: function clearUserNotifications(userId) {\n      set(function (state) {\n        return {\n          userNotifications: _objectSpread(_objectSpread({}, state.userNotifications), {}, _defineProperty({}, userId, []))\n        };\n      });\n    }\n  };\n}, {\n  name: (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_19__.keyBuilder)('notifications')\n}));//# sourceURL=webpack-internal:///76598\n");

}),

83823:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultRegistryAction\": function() { return /* binding */ DefaultRegistryAction; }\n/* harmony export */ });\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _Tip_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Tip/Tooltip */ 36147);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/BEFeatureIndicator */ 95814);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction DefaultRegistryAction() {\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__.usePublicSettings)({\n    select: function select(settings) {\n      var _settings$DefaultRegi;\n\n      return (_settings$DefaultRegi = settings.DefaultRegistry) === null || _settings$DefaultRegi === void 0 ? void 0 : _settings$DefaultRegi.Hide;\n    }\n  });\n  var defaultRegistryMutation = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__.useUpdateDefaultRegistrySettingsMutation)();\n\n  if (!settingsQuery.isSuccess) {\n    return null;\n  }\n\n  var hideDefaultRegistry = settingsQuery.data;\n  var isLimited = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__.isLimitedToBE)(_portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.HIDE_DOCKER_HUB_ANONYMOUS);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: !hideDefaultRegistry ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n      className: \"vertical-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_5__.Button, {\n        className: \"btn btn-xs btn-light vertical-center\",\n        onClick: function onClick() {\n          return handleShowOrHide(true);\n        },\n        disabled: isLimited,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_6__.Icon, {\n          icon: \"eye-off\",\n          feather: true\n        }), \"\\u5BF9\\u6240\\u6709\\u7528\\u6237\\u9690\\u85CF\"]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_7__.BEFeatureIndicator, {\n        featureId: _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.HIDE_DOCKER_HUB_ANONYMOUS\n      }), isLimited ? null : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, {\n        message: \"\\u8FD9\\u5C06\\u5728\\u4EFB\\u4F55\\u6CE8\\u518C\\u8868\\u4E0B\\u62C9\\u63D0\\u793A\\u4E2D\\u9690\\u85CF\\u8BE5\\u9009\\u9879\\uFF0C\\u4F46\\u5E76\\u4E0D\\u59A8\\u788D\\u7528\\u6237\\u901A\\u8FC7YAML\\u76F4\\u63A5\\u4ECEDocker Hub\\u533F\\u540D\\u90E8\\u7F72\\u3002 \\u6CE8\\u610F\\uFF1A\\u5982\\u679C\\u7528\\u6237\\u6CA1\\u6709\\u5176\\u4ED6\\u6CE8\\u518C\\u8868\\u53EF\\u7528\\uFF0CDocker Hub\\uFF08\\u533F\\u540D\\uFF09\\u5C06\\u7EE7\\u7EED\\u663E\\u793A\\u4E3A\\u552F\\u4E00\\u7684\\u9009\\u9879\\u3002\"\n      })]\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n      className: \"vertical-center\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_5__.Button, {\n        className: \"btn btn-xs btn-success vertical-center\",\n        onClick: function onClick() {\n          return handleShowOrHide(false);\n        },\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_6__.Icon, {\n          icon: \"eye\",\n          feather: true\n        }), \"Show for all users\"]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Tip_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, {\n        message: \"\\u8FD9\\u5C06\\u663E\\u793A\\u4EFB\\u4F55\\u6CE8\\u518C\\u8868\\u4E0B\\u62C9\\u63D0\\u793A\\u4E2D\\u7684\\u9009\\u9879\\u3002 (\\u4F46\\u8BF7\\u6CE8\\u610F\\uFF0CDocker Hub\\uFF08\\u533F\\u540D\\uFF09\\u9009\\u9879\\u53EA\\u5728\\u7528\\u6237\\u6CA1\\u6709\\u53EF\\u4FE1\\u7684Docker Hub\\u9009\\u9879\\u65F6\\u663E\\u793A\\uFF09\\u3002\"\n      })]\n    })\n  });\n\n  function handleShowOrHide(hideDefaultRegistry) {\n    defaultRegistryMutation.mutate({\n      Hide: hideDefaultRegistry\n    }, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__.notifySuccess)('Success', '默认注册表设置更新成功');\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///83823\n");

}),

33609:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultRegistryDomain\": function() { return /* binding */ DefaultRegistryDomain; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction DefaultRegistryDomain() {\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__.usePublicSettings)({\n    select: function select(settings) {\n      var _settings$DefaultRegi;\n\n      return (_settings$DefaultRegi = settings.DefaultRegistry) === null || _settings$DefaultRegi === void 0 ? void 0 : _settings$DefaultRegi.Hide;\n    }\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      'cm-strikethrough': settingsQuery.isSuccess && settingsQuery.data\n    }),\n    children: \"docker.io\"\n  });\n}//# sourceURL=webpack-internal:///33609\n");

}),

16826:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultRegistryName\": function() { return /* binding */ DefaultRegistryName; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction DefaultRegistryName() {\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_1__.usePublicSettings)({\n    select: function select(settings) {\n      var _settings$DefaultRegi;\n\n      return (_settings$DefaultRegi = settings.DefaultRegistry) === null || _settings$DefaultRegi === void 0 ? void 0 : _settings$DefaultRegi.Hide;\n    }\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      'cm-strikethrough': settingsQuery.isSuccess && settingsQuery.data\n    }),\n    children: \"Docker Hub (\\u533F\\u540D)\"\n  });\n}//# sourceURL=webpack-internal:///16826\n");

}),

26747:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultRegistryAction\": function() { return /* reexport safe */ _DefaultRegistryAction__WEBPACK_IMPORTED_MODULE_0__.DefaultRegistryAction; },\n/* harmony export */   \"DefaultRegistryDomain\": function() { return /* reexport safe */ _DefaultRegistryDomain__WEBPACK_IMPORTED_MODULE_1__.DefaultRegistryDomain; },\n/* harmony export */   \"DefaultRegistryName\": function() { return /* reexport safe */ _DefaultRegistryName__WEBPACK_IMPORTED_MODULE_2__.DefaultRegistryName; }\n/* harmony export */ });\n/* harmony import */ var _DefaultRegistryAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DefaultRegistryAction */ 83823);\n/* harmony import */ var _DefaultRegistryDomain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DefaultRegistryDomain */ 33609);\n/* harmony import */ var _DefaultRegistryName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DefaultRegistryName */ 16826);\n\n\n//# sourceURL=webpack-internal:///26747\n");

}),

39165:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Badge\": function() { return /* binding */ Badge; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.pad-start.js */ 99658);\n/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n// Helper function used as workaround to add opacity to the background color\nfunction setOpacity(hex, alpha) {\n  return \"\".concat(hex).concat(Math.floor(alpha * 255).toString(16).padStart(2, '0'));\n}\n\nfunction Badge(_ref) {\n  var icon = _ref.icon,\n      value = _ref.value,\n      color = _ref.color;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"span\", {\n    className: \"badge inline-flex items-center\",\n    style: {\n      backgroundColor: setOpacity(color, 0.1),\n      color: color,\n      padding: '5px 10px'\n    },\n    children: [icon, value]\n  });\n}//# sourceURL=webpack-internal:///39165\n");

}),

99098:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InternalAuth\": function() { return /* binding */ InternalAuth; }\n/* harmony export */ });\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _PasswordLengthSlider_PasswordLengthSlider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PasswordLengthSlider/PasswordLengthSlider */ 95387);\n/* harmony import */ var _SaveAuthSettingsButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SaveAuthSettingsButton */ 81644);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nfunction InternalAuth(_ref) {\n  var onSaveSettings = _ref.onSaveSettings,\n      isLoading = _ref.isLoading,\n      value = _ref.value,\n      onChange = _ref.onChange;\n\n  function onSubmit() {\n    if (value.RequiredPasswordLength < 10) {\n      (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_0__.confirmDestructive)({\n        title: '是否允许弱密码？',\n        message: '你设置了一个不安全的最小密码长度。这可能使你的系统容易受到攻击，你确定吗？',\n        buttons: {\n          confirm: {\n            label: '是的',\n            className: 'btn-danger'\n          }\n        },\n        callback: function onConfirm(confirmed) {\n          if (confirmed) onSaveSettings();\n        }\n      });\n    } else {\n      onSaveSettings();\n    }\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_1__.FormSectionTitle, {\n      children: \"\\u4FE1\\u606F\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"form-group col-sm-12 text-muted small\",\n      children: \"\\u5F53\\u4F7F\\u7528\\u5185\\u90E8\\u8BA4\\u8BC1\\u65F6\\uFF0CPortainer\\u5C06\\u52A0\\u5BC6\\u7528\\u6237\\u7684 \\u5BC6\\u7801\\u5E76\\u5728\\u672C\\u5730\\u5B58\\u50A8\\u8BC1\\u4E66\\u3002\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_1__.FormSectionTitle, {\n      children: \"\\u5BC6\\u7801\\u89C4\\u5219\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"form-group col-sm-12 text-muted small\",\n      children: \"\\u5B9A\\u4E49\\u7528\\u6237\\u751F\\u6210\\u7684\\u5BC6\\u7801\\u7684\\u6700\\u5C0F\\u957F\\u5EA6\\u3002\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_PasswordLengthSlider_PasswordLengthSlider__WEBPACK_IMPORTED_MODULE_2__.PasswordLengthSlider, {\n        min: 1,\n        max: 18,\n        step: 1,\n        value: value.RequiredPasswordLength,\n        onChange: onChange\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SaveAuthSettingsButton__WEBPACK_IMPORTED_MODULE_3__.SaveAuthSettingsButton, {\n      onSubmit: onSubmit,\n      isLoading: isLoading\n    })]\n  });\n}//# sourceURL=webpack-internal:///99098\n");

}),

95387:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PasswordLengthSlider\": function() { return /* binding */ PasswordLengthSlider; }\n/* harmony export */ });\n/* harmony import */ var rc_slider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rc-slider */ 90518);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 66);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-feather */ 64550);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-feather */ 32473);\n/* harmony import */ var rc_slider_assets_index_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rc-slider/assets/index.css */ 57100);\n/* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Badge */ 39165);\n/* harmony import */ var _PasswordLengthSlider_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PasswordLengthSlider.module.css */ 53720);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nvar sliderProperties = {\n  weak: {\n    strength: 'weak',\n    color: '#F04438',\n    text: '弱密码'\n  },\n  good: {\n    strength: 'good',\n    color: '#F79009',\n    text: '好密码'\n  },\n  strong: {\n    strength: 'strong',\n    color: '#12B76A',\n    text: '强密码'\n  },\n  veryStrong: {\n    strength: 'veryStrong',\n    color: '#0BA5EC',\n    text: '非常强的密码'\n  }\n};\nvar SliderWithTooltip = rc_slider__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createSliderWithTooltip(rc_slider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nfunction PasswordLengthSlider(_ref) {\n  var min = _ref.min,\n      max = _ref.max,\n      step = _ref.step,\n      value = _ref.value,\n      onChange = _ref.onChange;\n  var sliderProps = getSliderProps(value);\n\n  function getSliderProps(value) {\n    if (value < 10) {\n      return sliderProperties.weak;\n    }\n\n    if (value < 12) {\n      return sliderProperties.good;\n    }\n\n    if (value < 14) {\n      return sliderProperties.strong;\n    }\n\n    return sliderProperties.veryStrong;\n  }\n\n  function getBadgeIcon(strength) {\n    switch (strength) {\n      case 'weak':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n          size: \"13\",\n          className: \"space-right\",\n          strokeWidth: \"3px\"\n        });\n\n      case 'good':\n      case 'strong':\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n          size: \"13\",\n          className: \"space-right\",\n          strokeWidth: \"3px\"\n        });\n\n      default:\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n          size: \"13\",\n          className: \"space-right\",\n          strokeWidth: \"3px\"\n        });\n    }\n  }\n\n  function handleChange(sliderValue) {\n    onChange(sliderValue);\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_PasswordLengthSlider_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].root, _PasswordLengthSlider_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"][sliderProps.strength]),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"div\", {\n      className: \"col-sm-4\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(SliderWithTooltip, {\n        tipFormatter: function tipFormatter(value) {\n          return \"\".concat(value, \" \\u4E2A\\u5B57\\u7B26\");\n        },\n        min: min,\n        max: max,\n        step: step,\n        defaultValue: 12,\n        value: value,\n        onChange: handleChange,\n        handleStyle: {\n          height: 25,\n          width: 25,\n          borderWidth: 1.85,\n          borderColor: sliderProps.color,\n          top: 1.5,\n          boxShadow: 'none'\n        },\n        railStyle: {\n          height: 10\n        },\n        trackStyle: {\n          backgroundColor: sliderProps.color,\n          height: 10\n        }\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('col-sm-2', _PasswordLengthSlider_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sliderBadge),\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Badge__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n        icon: getBadgeIcon(sliderProps.strength),\n        value: sliderProps.text,\n        color: sliderProps.color\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///95387\n");

}),

81644:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SaveAuthSettingsButton\": function() { return /* binding */ SaveAuthSettingsButton; }\n/* harmony export */ });\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction SaveAuthSettingsButton(_ref) {\n  var onSubmit = _ref.onSubmit,\n      isLoading = _ref.isLoading;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_1__.FormSectionTitle, {\n      children: \"\\u64CD\\u4F5C\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n      className: \"form-group\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_0__.LoadingButton, {\n          loadingText: \"Saving...\",\n          isLoading: isLoading,\n          onClick: function onClick() {\n            return onSubmit();\n          },\n          children: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\"\n        })\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///81644\n");

}),

56455:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "InternalAuth": function() { return /* reexport safe */ _InternalAuth__WEBPACK_IMPORTED_MODULE_0__.InternalAuth; }
/* harmony export */ });
/* harmony import */ var _InternalAuth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InternalAuth */ 99098);


}),

20243:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AutoEnvCreationSettingsForm\": function() { return /* binding */ AutoEnvCreationSettingsForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ 89954);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ 88373);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! yup */ 95085);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _EnableWaitingRoomSwitch__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./EnableWaitingRoomSwitch */ 30178);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar validation = yup__WEBPACK_IMPORTED_MODULE_8__.object({\n  TrustOnFirstConnect: yup__WEBPACK_IMPORTED_MODULE_8__.boolean(),\n  EdgePortainerUrl: yup__WEBPACK_IMPORTED_MODULE_8__.string().test('url', 'URL应该是一个有效的URI，不能包括localhost', function (value) {\n    if (!value) {\n      return false;\n    }\n\n    try {\n      var url = new URL(value);\n      return !!url.hostname && url.hostname !== 'localhost';\n    } catch (_unused) {\n      return false;\n    }\n  }).required('URL is required')\n});\nvar defaultUrl = buildDefaultUrl();\nfunction AutoEnvCreationSettingsForm(_ref) {\n  var settings = _ref.settings;\n  var url = settings.EdgePortainerUrl;\n  var initialValues = {\n    EdgePortainerUrl: url || defaultUrl,\n    TrustOnFirstConnect: settings.TrustOnFirstConnect\n  };\n  var mutation = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_12__.useUpdateSettingsMutation)();\n  var updateSettings = mutation.mutate;\n  var handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (variables) {\n    updateSettings(variables, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.notifySuccess)('Success', '成功地更新了自动环境创建设置');\n      }\n    });\n  }, [updateSettings]);\n  (0,react__WEBPACK_IMPORTED_MODULE_9__.useEffect)(function () {\n    if (!url && validation.isValidSync({\n      EdgePortainerUrl: defaultUrl\n    })) {\n      updateSettings({\n        EdgePortainerUrl: defaultUrl\n      });\n    }\n  }, [updateSettings, url]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(formik__WEBPACK_IMPORTED_MODULE_7__.Formik, {\n    initialValues: initialValues,\n    onSubmit: handleSubmit,\n    validationSchema: validation,\n    validateOnMount: true,\n    enableReinitialize: true,\n    children: function children(_ref2) {\n      var errors = _ref2.errors,\n          isValid = _ref2.isValid,\n          dirty = _ref2.dirty;\n      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_7__.Form, {\n        className: \"form-horizontal\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_15__.FormSectionTitle, {\n          children: \"Configuration\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_14__.FormControl, {\n          label: \"Portainer URL\",\n          tooltip: \"\\u4EE3\\u7406\\u5C06\\u7528\\u4E8E\\u542F\\u52A8\\u901A\\u4FE1\\u7684Portainer\\u5B9E\\u4F8B\\u7684URL\\u3002\",\n          inputId: \"url-input\",\n          errors: errors.EdgePortainerUrl,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(formik__WEBPACK_IMPORTED_MODULE_7__.Field, {\n            as: _form_components_Input__WEBPACK_IMPORTED_MODULE_16__.Input,\n            id: \"url-input\",\n            name: \"EdgePortainerUrl\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_EnableWaitingRoomSwitch__WEBPACK_IMPORTED_MODULE_17__.EnabledWaitingRoomSwitch, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"div\", {\n          className: \"form-group\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"div\", {\n            className: \"col-sm-12\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_13__.LoadingButton, {\n              loadingText: \"generating...\",\n              isLoading: mutation.isLoading,\n              disabled: !isValid || !dirty,\n              children: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\"\n            })\n          })\n        })]\n      });\n    }\n  });\n}\n\nfunction buildDefaultUrl() {\n  var baseHREF = (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_10__.baseHref)();\n  return window.location.origin + (baseHREF !== '/' ? baseHREF : '');\n}//# sourceURL=webpack-internal:///20243\n");

}),

93173:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AutomaticEdgeEnvCreation\": function() { return /* binding */ AutomaticEdgeEnvCreation; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _portainer_environments_environment_service_edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/environments/environment.service/edge */ 5775);\n/* harmony import */ var _react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm */ 37665);\n/* harmony import */ var _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm/scripts */ 32858);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../queries */ 37717);\n/* harmony import */ var _AutoEnvCreationSettingsForm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AutoEnvCreationSettingsForm */ 20243);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nvar commands = {\n  linux: [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.k8sLinux, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.swarmLinux, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.standaloneLinux, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.nomadLinux],\n  win: [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.swarmWindows, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_4__.commandsTabs.standaloneWindow]\n};\nfunction AutomaticEdgeEnvCreation() {\n  var _settingsQuery$data;\n\n  var edgeKeyMutation = useGenerateKeyMutation();\n  var generateKey = edgeKeyMutation.mutate;\n  var settingsQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_6__.useSettings)();\n  var url = (_settingsQuery$data = settingsQuery.data) === null || _settingsQuery$data === void 0 ? void 0 : _settingsQuery$data.EdgePortainerUrl;\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n    if (url) {\n      generateKey();\n    }\n  }, [generateKey, url]);\n\n  if (!settingsQuery.data) {\n    return null;\n  }\n\n  var edgeKey = edgeKeyMutation.data;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_5__.Widget, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_5__.WidgetTitle, {\n      icon: \"svg-laptop\",\n      title: \"Automatic Edge Environment Creation\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_5__.WidgetBody, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_AutoEnvCreationSettingsForm__WEBPACK_IMPORTED_MODULE_7__.AutoEnvCreationSettingsForm, {\n        settings: settingsQuery.data\n      }), edgeKeyMutation.isLoading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n        children: [\"Generating key for \", url, \" ... \"]\n      }) : edgeKey && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_react_edge_components_EdgeScriptForm__WEBPACK_IMPORTED_MODULE_3__.EdgeScriptForm, {\n        edgeInfo: {\n          key: edgeKey\n        },\n        commands: commands,\n        isNomadTokenVisible: true\n      })]\n    })]\n  });\n} // using mutation because we want this action to run only when required\n\nfunction useGenerateKeyMutation() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useMutation)(_portainer_environments_environment_service_edge__WEBPACK_IMPORTED_MODULE_2__.generateKey);\n}//# sourceURL=webpack-internal:///93173\n");

}),

30178:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnabledWaitingRoomSwitch\": function() { return /* binding */ EnabledWaitingRoomSwitch; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/SwitchField/Switch */ 79410);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nfunction EnabledWaitingRoomSwitch() {\n  var _useField = (0,formik__WEBPACK_IMPORTED_MODULE_13__.useField)('TrustOnFirstConnect'),\n      _useField2 = _slicedToArray(_useField, 3),\n      inputProps = _useField2[0],\n      meta = _useField2[1],\n      helpers = _useField2[2];\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_15__.FormControl, {\n    inputId: \"edge_waiting_room\",\n    label: \"Disable Edge Environment Waiting Room\",\n    errors: meta.error,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_16__.Switch, {\n      id: \"edge_waiting_room\",\n      name: \"TrustOnFirstConnect\",\n      className: \"space-right\",\n      checked: inputProps.value,\n      onChange: handleChange\n    })\n  });\n\n  function handleChange(_x) {\n    return _handleChange.apply(this, arguments);\n  }\n\n  function _handleChange() {\n    _handleChange = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(trust) {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              if (trust) {\n                _context.next = 3;\n                break;\n              }\n\n              helpers.setValue(false);\n              return _context.abrupt(\"return\");\n\n            case 3:\n              _context.next = 5;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_14__.confirmAsync)({\n                title: '禁用边缘环境等候室',\n                message: '通过禁用等待室功能，所有请求关联的设备都会自动关联，可能会造成安全风险。你确定吗？',\n                buttons: {\n                  cancel: {\n                    label: '取消',\n                    className: 'btn-default'\n                  },\n                  confirm: {\n                    label: '确认',\n                    className: 'btn-danger'\n                  }\n                }\n              });\n\n            case 5:\n              confirmed = _context.sent;\n              helpers.setValue(!!confirmed);\n\n            case 7:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleChange.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///30178\n");

}),

37157:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AutomaticEdgeEnvCreation": function() { return /* reexport safe */ _AutomaticEdgeEnvCreation__WEBPACK_IMPORTED_MODULE_0__.AutomaticEdgeEnvCreation; }
/* harmony export */ });
/* harmony import */ var _AutomaticEdgeEnvCreation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AutomaticEdgeEnvCreation */ 93173);


}),

89856:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeComputeSettings\": function() { return /* binding */ EdgeComputeSettings; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _edge_components_EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/edge/components/EdgeCheckInIntervalField */ 64858);\n/* harmony import */ var _form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/form-components/SwitchField/Switch */ 79410);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _EdgeComputeSettings_validation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./EdgeComputeSettings.validation */ 17795);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EdgeComputeSettings(_ref) {\n  var settings = _ref.settings,\n      onSubmit = _ref.onSubmit;\n\n  if (!settings) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_7__.Widget, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_7__.WidgetTitle, {\n        icon: \"svg-laptop\",\n        title: \"\\u8FB9\\u7F18\\u8BA1\\u7B97\\u8BBE\\u7F6E\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_7__.WidgetBody, {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(formik__WEBPACK_IMPORTED_MODULE_3__.Formik, {\n          initialValues: settings,\n          enableReinitialize: true,\n          validationSchema: function validationSchema() {\n            return (0,_EdgeComputeSettings_validation__WEBPACK_IMPORTED_MODULE_11__.validationSchema)();\n          },\n          onSubmit: onSubmit,\n          validateOnMount: true,\n          children: function children(_ref2) {\n            var values = _ref2.values,\n                errors = _ref2.errors,\n                handleSubmit = _ref2.handleSubmit,\n                setFieldValue = _ref2.setFieldValue,\n                isSubmitting = _ref2.isSubmitting,\n                isValid = _ref2.isValid,\n                dirty = _ref2.dirty;\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_3__.Form, {\n              className: \"form-horizontal\",\n              onSubmit: handleSubmit,\n              noValidate: true,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_6__.FormControl, {\n                inputId: \"edge_enable\",\n                label: \"\\u542F\\u7528\\u8FB9\\u7F18\\u8BA1\\u7B97\\u529F\\u80FD\",\n                size: \"small\",\n                errors: errors.EnableEdgeComputeFeatures,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_5__.Switch, {\n                  id: \"edge_enable\",\n                  name: \"edge_enable\",\n                  className: \"space-right\",\n                  checked: values.EnableEdgeComputeFeatures,\n                  onChange: function onChange(e) {\n                    return setFieldValue('EnableEdgeComputeFeatures', e);\n                  }\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_9__.TextTip, {\n                color: \"blue\",\n                children: \"\\u542F\\u7528\\u540E\\uFF0C\\u8FD9\\u5C06\\u4F7FPortainer\\u80FD\\u591F\\u6267\\u884CEdge \\u8BBE\\u5907\\u7684\\u529F\\u80FD\\u3002\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_6__.FormControl, {\n                inputId: \"edge_enforce_id\",\n                label: \"\\u5F3A\\u5236\\u4F7F\\u7528Portainer\\u751F\\u6210\\u7684\\u8FB9\\u7F18ID\",\n                size: \"small\",\n                tooltip: \"\\u8FD9\\u4E2A\\u8BBE\\u7F6E\\u53EA\\u9002\\u7528\\u4E8E\\u624B\\u52A8\\u521B\\u5EFA\\u7684\\u73AF\\u5883\\u3002\",\n                errors: errors.EnforceEdgeID,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_5__.Switch, {\n                  id: \"edge_enforce_id\",\n                  name: \"edge_enforce_id\",\n                  className: \"space-right\",\n                  checked: values.EnforceEdgeID,\n                  onChange: function onChange(e) {\n                    return setFieldValue('EnforceEdgeID', e.valueOf());\n                  }\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_10__.FormSectionTitle, {\n                children: \"Check-in Intervals\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_edge_components_EdgeCheckInIntervalField__WEBPACK_IMPORTED_MODULE_4__.EdgeCheckinIntervalField, {\n                value: values.EdgeAgentCheckinInterval,\n                onChange: function onChange(value) {\n                  return setFieldValue('EdgeAgentCheckinInterval', value);\n                },\n                isDefaultHidden: true,\n                label: \"\\u8FB9\\u7F18\\u4EE3\\u7406\\u9ED8\\u8BA4\\u8F6E\\u8BE2\\u9891\\u7387\",\n                tooltip: \"\\u6BCF\\u4E2AEdge\\u4EE3\\u7406\\u9ED8\\u8BA4\\u4F7F\\u7528\\u7684\\u4E0EPortainer\\u5B9E\\u4F8B\\u7B7E\\u5230\\u7684\\u65F6\\u95F4\\u95F4\\u9694\\u3002\\u5F71\\u54CDEdge\\u73AF\\u5883\\u7BA1\\u7406\\u548CEdge\\u8BA1\\u7B97\\u529F\\u80FD\\u3002\"\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"div\", {\n                className: \"form-group mt-5\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"div\", {\n                  className: \"col-sm-12\",\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_8__.LoadingButton, {\n                    disabled: !isValid || !dirty,\n                    \"data-cy\": \"settings-edgeComputeButton\",\n                    isLoading: isSubmitting,\n                    loadingText: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\\u4E2D...\",\n                    children: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\"\n                  })\n                })\n              })]\n            });\n          }\n        })\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///89856\n");

}),

17795:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    EdgeAgentCheckinInterval: (0,yup__WEBPACK_IMPORTED_MODULE_0__.number)().required('此字段必填。'),\n    EnableEdgeComputeFeatures: (0,yup__WEBPACK_IMPORTED_MODULE_0__.boolean)().required('此字段必填。'),\n    EnforceEdgeID: (0,yup__WEBPACK_IMPORTED_MODULE_0__.boolean)().required('此字段必填。')\n  });\n}//# sourceURL=webpack-internal:///17795\n");

}),

80601:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "EdgeComputeSettings": function() { return /* reexport safe */ _EdgeComputeSettings__WEBPACK_IMPORTED_MODULE_0__.EdgeComputeSettings; }
/* harmony export */ });
/* harmony import */ var _EdgeComputeSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeComputeSettings */ 89856);


}),

66210:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeComputeSettingsView\": function() { return /* binding */ EdgeComputeSettingsView; }\n/* harmony export */ });\n/* harmony import */ var _EdgeComputeSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EdgeComputeSettings */ 80601);\n/* harmony import */ var _AutomaticEdgeEnvCreation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AutomaticEdgeEnvCreation */ 37157);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\nfunction EdgeComputeSettingsView(_ref) {\n  var settings = _ref.settings,\n      onSubmit = _ref.onSubmit;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(\"div\", {\n    className: \"row\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_EdgeComputeSettings__WEBPACK_IMPORTED_MODULE_0__.EdgeComputeSettings, {\n      settings: settings,\n      onSubmit: onSubmit\n    }),  false && /*#__PURE__*/0]\n  });\n}//# sourceURL=webpack-internal:///66210\n");

}),

47968:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FDOProfilesDatatable\": function() { return /* binding */ FDOProfilesDatatable; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/datatables/SelectedRowsCount */ 38276);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/datatables/useRowSelect */ 89996);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _useFDOProfiles__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./useFDOProfiles */ 74109);\n/* harmony import */ var _columns__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./columns */ 3700);\n/* harmony import */ var _FDOProfilesDatatableActions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./FDOProfilesDatatableActions */ 17258);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction FDOProfilesDatatable(_ref) {\n  var isFDOEnabled = _ref.isFDOEnabled;\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_12__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  var columns = (0,_columns__WEBPACK_IMPORTED_MODULE_16__.useColumns)();\n\n  var _useFDOProfiles = (0,_useFDOProfiles__WEBPACK_IMPORTED_MODULE_15__.useFDOProfiles)(),\n      isLoading = _useFDOProfiles.isLoading,\n      profiles = _useFDOProfiles.profiles,\n      error = _useFDOProfiles.error;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_8__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: profiles,\n    initialState: {\n      pageSize: settings.pageSize || 10,\n      sortBy: [settings.sortBy]\n    },\n    isRowSelectable: function isRowSelectable() {\n      return isFDOEnabled;\n    },\n    selectColumnWidth: 5\n  }, react_table__WEBPACK_IMPORTED_MODULE_8__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_8__.usePagination, _datatables_useRowSelect__WEBPACK_IMPORTED_MODULE_13__.useRowSelect, _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_19__.useRowSelectColumn),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      selectedFlatRows = _useTable.selectedFlatRows,\n      gotoPage = _useTable.gotoPage,\n      setPageSize = _useTable.setPageSize,\n      _useTable$state = _useTable.state,\n      pageIndex = _useTable$state.pageIndex,\n      pageSize = _useTable$state.pageSize;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_14__.TableContainer, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_14__.TableTitle, {\n      icon: \"list\",\n      featherIcon: true,\n      label: \"Device Profiles\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_FDOProfilesDatatableActions__WEBPACK_IMPORTED_MODULE_17__.FDOProfilesDatatableActions, {\n        isFDOEnabled: isFDOEnabled,\n        selectedItems: selectedFlatRows.map(function (row) {\n          return row.original;\n        })\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_14__.Table, {\n      className: tableProps.className,\n      role: tableProps.role,\n      style: tableProps.style,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"thead\", {\n        children: headerGroups.map(function (headerGroup) {\n          var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n              key = _headerGroup$getHeade.key,\n              className = _headerGroup$getHeade.className,\n              role = _headerGroup$getHeade.role,\n              style = _headerGroup$getHeade.style;\n\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_14__.TableHeaderRow, {\n            className: className,\n            role: role,\n            style: style,\n            headers: headerGroup.headers\n          }, key);\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"tbody\", {\n        className: tbodyProps.className,\n        role: tbodyProps.role,\n        style: tbodyProps.style,\n        children: !isLoading && profiles && profiles.length > 0 ? page.map(function (row) {\n          prepareRow(row);\n\n          var _row$getRowProps = row.getRowProps(),\n              key = _row$getRowProps.key,\n              className = _row$getRowProps.className,\n              role = _row$getRowProps.role,\n              style = _row$getRowProps.style;\n\n          return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_14__.TableRow, {\n            cells: row.cells,\n            className: className,\n            role: role,\n            style: style\n          }, key);\n        }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"tr\", {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(\"td\", {\n            colSpan: 5,\n            className: \"text-center text-muted\",\n            children: userMessage(isLoading, error)\n          })\n        })\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_11__.TableFooter, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_10__.SelectedRowsCount, {\n        value: selectedFlatRows.length\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_9__.PaginationControls, {\n        showAll: true,\n        pageLimit: pageSize,\n        page: pageIndex + 1,\n        onPageChange: function onPageChange(p) {\n          return gotoPage(p - 1);\n        },\n        totalCount: profiles ? profiles.length : 0,\n        onPageLimitChange: handlePageSizeChange\n      })]\n    })]\n  });\n\n  function handlePageSizeChange(pageSize) {\n    setPageSize(pageSize);\n    setTableSettings(function (settings) {\n      return _objectSpread(_objectSpread({}, settings), {}, {\n        pageSize: pageSize\n      });\n    });\n  }\n}\n\nfunction userMessage(isLoading, error) {\n  if (isLoading) {\n    return '加载中...';\n  }\n\n  if (error) {\n    return error.message;\n  }\n\n  return '未找到配置文件';\n}//# sourceURL=webpack-internal:///47968\n");

}),

17258:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FDOProfilesDatatableActions\": function() { return /* binding */ FDOProfilesDatatableActions; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/hostmanagement/fdo/fdo.service */ 60122);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\nfunction FDOProfilesDatatableActions(_ref) {\n  var isFDOEnabled = _ref.isFDOEnabled,\n      selectedItems = _ref.selectedItems;\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_9__.useRouter)();\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_8__.useQueryClient)();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n    className: \"actionBar\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_13__.Link, {\n      to: \"portainer.endpoints.profile\",\n      className: \"space-left\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n        disabled: !isFDOEnabled,\n        icon: \"plus-circle\",\n        featherIcon: true,\n        children: \"Add Profile\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n      disabled: !isFDOEnabled || selectedItems.length !== 1,\n      onClick: function onClick() {\n        return onDuplicateProfileClick();\n      },\n      icon: \"plus-circle\",\n      featherIcon: true,\n      children: \"Duplicate\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_14__.Button, {\n      disabled: !isFDOEnabled || selectedItems.length < 1,\n      color: \"danger\",\n      onClick: function onClick() {\n        return onDeleteProfileClick();\n      },\n      icon: \"trash-2\",\n      featherIcon: true,\n      children: \"Remove\"\n    })]\n  });\n\n  function onDuplicateProfileClick() {\n    return _onDuplicateProfileClick.apply(this, arguments);\n  }\n\n  function _onDuplicateProfileClick() {\n    _onDuplicateProfileClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var confirmed, profile, newProfile;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__.confirmAsync)({\n                title: '你确定吗？',\n                message: '这个动作将复制选定的配置文件。继续吗？',\n                buttons: {\n                  confirm: {\n                    label: 'Confirm',\n                    className: 'btn-primary'\n                  }\n                }\n              });\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 5:\n              _context.prev = 5;\n              profile = selectedItems[0];\n              _context.next = 9;\n              return (0,_portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_12__.duplicateProfile)(profile.id);\n\n            case 9:\n              newProfile = _context.sent;\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.success('Profile successfully duplicated', profile.name);\n              router.stateService.go('portainer.endpoints.profile.edit', {\n                id: newProfile.id\n              });\n              _context.next = 17;\n              break;\n\n            case 14:\n              _context.prev = 14;\n              _context.t0 = _context[\"catch\"](5);\n              _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.error('Failure', _context.t0, 'Unable to duplicate profile');\n\n            case 17:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee, null, [[5, 14]]);\n    }));\n    return _onDuplicateProfileClick.apply(this, arguments);\n  }\n\n  function onDeleteProfileClick() {\n    return _onDeleteProfileClick.apply(this, arguments);\n  }\n\n  function _onDeleteProfileClick() {\n    _onDeleteProfileClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_10__.confirmDestructiveAsync)({\n                title: '你确定吗？',\n                message: '这个动作将删除所选的配置文件。继续吗？',\n                buttons: {\n                  confirm: {\n                    label: '删除',\n                    className: 'btn-danger'\n                  }\n                }\n              });\n\n            case 2:\n              confirmed = _context3.sent;\n\n              if (confirmed) {\n                _context3.next = 5;\n                break;\n              }\n\n              return _context3.abrupt(\"return\");\n\n            case 5:\n              _context3.next = 7;\n              return Promise.all(selectedItems.map( /*#__PURE__*/function () {\n                var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(profile) {\n                  return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                    while (1) {\n                      switch (_context2.prev = _context2.next) {\n                        case 0:\n                          _context2.prev = 0;\n                          _context2.next = 3;\n                          return (0,_portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_12__.deleteProfile)(profile.id);\n\n                        case 3:\n                          _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.success('Profile successfully removed', profile.name);\n                          _context2.next = 9;\n                          break;\n\n                        case 6:\n                          _context2.prev = 6;\n                          _context2.t0 = _context2[\"catch\"](0);\n                          _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_11__.error('Failure', _context2.t0, 'Unable to remove profile');\n\n                        case 9:\n                        case \"end\":\n                          return _context2.stop();\n                      }\n                    }\n                  }, _callee2, null, [[0, 6]]);\n                }));\n\n                return function (_x) {\n                  return _ref2.apply(this, arguments);\n                };\n              }()));\n\n            case 7:\n              _context3.next = 9;\n              return queryClient.invalidateQueries('fdo_profiles');\n\n            case 9:\n            case \"end\":\n              return _context3.stop();\n          }\n        }\n      }, _callee3);\n    }));\n    return _onDeleteProfileClick.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///17258\n");

}),

95878:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FDOProfilesDatatableContainer\": function() { return /* binding */ FDOProfilesDatatableContainer; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ 19992);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _FDOProfilesDatatable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./FDOProfilesDatatable */ 47968);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\nfunction FDOProfilesDatatableContainer(_ref) {\n  var props = Object.assign({}, _ref);\n  var defaultSettings = {\n    pageSize: 10,\n    sortBy: {\n      id: 'name',\n      desc: false\n    }\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_8__.TableSettingsProvider, {\n    defaults: defaultSettings,\n    storageKey: \"fdoProfiles\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_FDOProfilesDatatable__WEBPACK_IMPORTED_MODULE_9__.FDOProfilesDatatable, _objectSpread({}, props))\n  });\n}//# sourceURL=webpack-internal:///95878\n");

}),

46588:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"created\": function() { return /* binding */ created; }\n/* harmony export */ });\n/* harmony import */ var _portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/filters/filters */ 41066);\n\nvar created = {\n  Header: '创建于',\n  accessor: 'dateCreated',\n  id: 'created',\n  Cell: function Cell(_ref) {\n    var value = _ref.value;\n    return (0,_portainer_filters_filters__WEBPACK_IMPORTED_MODULE_0__.isoDateFromTimestamp)(value);\n  },\n  disableFilters: true,\n  canHide: true,\n  Filter: function Filter() {\n    return null;\n  }\n};//# sourceURL=webpack-internal:///46588\n");

}),

3700:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useColumns\": function() { return /* binding */ useColumns; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _created__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./created */ 46588);\n/* harmony import */ var _name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./name */ 19424);\n\n\n\nfunction useColumns() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return [_name__WEBPACK_IMPORTED_MODULE_2__.name, _created__WEBPACK_IMPORTED_MODULE_1__.created];\n  }, []);\n}//# sourceURL=webpack-internal:///3700\n");

}),

19424:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nvar name = {\n  Header: '名称',\n  accessor: 'name',\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: true,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      profile = _ref.row.original;\n  var linkProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useSref)('portainer.endpoints.profile.edit', {\n    id: profile.id\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"a\", {\n    href: linkProps.href,\n    onClick: linkProps.onClick,\n    title: name,\n    children: name\n  });\n}//# sourceURL=webpack-internal:///19424\n");

}),

74109:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useFDOProfiles\": function() { return /* binding */ useFDOProfiles; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/hostmanagement/fdo/fdo.service */ 60122);\n\n\n\n\nfunction useFDOProfiles() {\n  var _useQuery = (0,react_query__WEBPACK_IMPORTED_MODULE_1__.useQuery)('fdo_profiles', function () {\n    return (0,_portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_3__.getProfiles)();\n  }),\n      isLoading = _useQuery.isLoading,\n      data = _useQuery.data,\n      isError = _useQuery.isError,\n      error = _useQuery.error;\n\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n    if (isError) {\n      _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__.error('Failure', error, 'Failed retrieving FDO profiles');\n    }\n  }, [isError, error]);\n  var profiles = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return data || [];\n  }, [data]);\n  return {\n    isLoading: isLoading,\n    profiles: profiles,\n    error: isError ? error : undefined\n  };\n}//# sourceURL=webpack-internal:///74109\n");

}),

2274:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SettingsFDO\": function() { return /* binding */ SettingsFDO; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/form-components/SwitchField/Switch */ 79410);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/FormSectionTitle */ 91928);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _FDOProfilesDatatable_FDOProfilesDatatableContainer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../FDOProfilesDatatable/FDOProfilesDatatableContainer */ 95878);\n/* harmony import */ var _SettingsFDO_module_css__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./SettingsFDO.module.css */ 38603);\n/* harmony import */ var _SettingsFDO_validation__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./SettingsFDO.validation */ 12089);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SettingsFDO(_ref) {\n  var settings = _ref.settings,\n      onSubmit = _ref.onSubmit;\n  var fdoConfiguration = settings ? settings.fdoConfiguration : null;\n  var initialFDOEnabled = fdoConfiguration ? fdoConfiguration.enabled : false;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(initialFDOEnabled),\n      _useState2 = _slicedToArray(_useState, 2),\n      isFDOEnabled = _useState2[0],\n      setIsFDOEnabled = _useState2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    var _settings$fdoConfigur;\n\n    setIsFDOEnabled(settings === null || settings === void 0 ? void 0 : (_settings$fdoConfigur = settings.fdoConfiguration) === null || _settings$fdoConfigur === void 0 ? void 0 : _settings$fdoConfigur.enabled);\n  }, [settings]);\n  var initialValues = {\n    enabled: initialFDOEnabled,\n    ownerURL: fdoConfiguration ? fdoConfiguration.ownerURL : '',\n    ownerUsername: fdoConfiguration ? fdoConfiguration.ownerUsername : '',\n    ownerPassword: fdoConfiguration ? fdoConfiguration.ownerPassword : ''\n  };\n  var edgeComputeFeaturesEnabled = settings ? settings.EnableEdgeComputeFeatures : false;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_18__.Widget, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_18__.WidgetTitle, {\n        icon: \"svg-laptop\",\n        title: \"FDO\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_18__.WidgetBody, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_14__.Formik, {\n          initialValues: initialValues,\n          onSubmit: onSubmit,\n          enableReinitialize: true,\n          validationSchema: function validationSchema() {\n            return (0,_SettingsFDO_validation__WEBPACK_IMPORTED_MODULE_24__.validationSchema)();\n          },\n          validateOnChange: true,\n          validateOnMount: true,\n          children: function children(_ref2) {\n            var values = _ref2.values,\n                errors = _ref2.errors,\n                handleSubmit = _ref2.handleSubmit,\n                setFieldValue = _ref2.setFieldValue,\n                isSubmitting = _ref2.isSubmitting,\n                isValid = _ref2.isValid,\n                dirty = _ref2.dirty;\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_14__.Form, {\n              className: \"form-horizontal\",\n              onSubmit: handleSubmit,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__.FormControl, {\n                inputId: \"edge_enableFDO\",\n                label: \"Enable FDO Management Service\",\n                size: \"small\",\n                errors: errors.enabled,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_15__.Switch, {\n                  id: \"edge_enableFDO\",\n                  name: \"edge_enableFDO\",\n                  className: \"space-right\",\n                  disabled: !edgeComputeFeaturesEnabled,\n                  checked: edgeComputeFeaturesEnabled && values.enabled,\n                  onChange: function onChange(e) {\n                    return onChangedEnabled(e, setFieldValue);\n                  }\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_20__.TextTip, {\n                color: \"blue\",\n                children: \"\\u542F\\u7528\\u540E\\uFF0C\\u8FD9\\u5C06\\u5141\\u8BB8Portainer\\u4E0EFDO \\u670D\\u52A1\\u3002\"\n              }), edgeComputeFeaturesEnabled && values.enabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.Fragment, {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__.FormControl, {\n                  inputId: \"owner_url\",\n                  label: \"\\u6240\\u6709\\u8005\\u670D\\u52A1\\u670D\\u52A1\\u5668\",\n                  errors: errors.ownerURL,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_14__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    name: \"ownerURL\",\n                    id: \"owner_url\",\n                    placeholder: \"http://127.0.0.1:8042\",\n                    value: values.ownerURL,\n                    \"data-cy\": \"fdo-serverInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__.FormControl, {\n                  inputId: \"owner_username\",\n                  label: \"\\u6240\\u6709\\u8005\\u670D\\u52A1\\u7528\\u6237\\u540D\",\n                  errors: errors.ownerUsername,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_14__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    name: \"ownerUsername\",\n                    id: \"owner_username\",\n                    placeholder: \"username\",\n                    value: values.ownerUsername,\n                    \"data-cy\": \"fdo-usernameInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_16__.FormControl, {\n                  inputId: \"owner_password\",\n                  label: \"\\u6240\\u6709\\u8005\\u670D\\u52A1\\u5BC6\\u7801\",\n                  errors: errors.ownerPassword,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_14__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    type: \"password\",\n                    name: \"ownerPassword\",\n                    id: \"owner_password\",\n                    placeholder: \"password\",\n                    value: values.ownerPassword,\n                    \"data-cy\": \"fdo-passwordInput\"\n                  })\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n                className: \"form-group mt-5\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n                  className: \"col-sm-12\",\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_19__.LoadingButton, {\n                    disabled: !isValid || !dirty,\n                    \"data-cy\": \"settings-fdoButton\",\n                    isLoading: isSubmitting,\n                    loadingText: \"\\u6B63\\u5728\\u4FDD\\u5B58\\u8BBE\\u7F6E...\",\n                    children: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\"\n                  })\n                })\n              })]\n            });\n          }\n        }), edgeComputeFeaturesEnabled && isFDOEnabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(\"div\", {\n          className: _SettingsFDO_module_css__WEBPACK_IMPORTED_MODULE_23__[\"default\"].fdoTable,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormSectionTitle__WEBPACK_IMPORTED_MODULE_17__.FormSectionTitle, {\n            children: \"Device Profiles\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_20__.TextTip, {\n            color: \"blue\",\n            children: \"\\u6DFB\\u52A0\\u3001\\u7F16\\u8F91\\u548C\\u7BA1\\u7406\\u53EF\\u7528\\u7684\\u8BBE\\u5907\\u914D\\u7F6E\\u6587\\u4EF6\\u5217\\u8868 \\u5728FDO\\u8BBE\\u5907\\u8BBE\\u7F6E\\u8FC7\\u7A0B\\u4E2D\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_FDOProfilesDatatable_FDOProfilesDatatableContainer__WEBPACK_IMPORTED_MODULE_22__.FDOProfilesDatatableContainer, {\n            isFDOEnabled: initialFDOEnabled\n          })]\n        })]\n      })]\n    })\n  });\n\n  function onChangedEnabled(_x, _x2) {\n    return _onChangedEnabled.apply(this, arguments);\n  }\n\n  function _onChangedEnabled() {\n    _onChangedEnabled = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(e, setFieldValue) {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              setIsFDOEnabled(e);\n              setFieldValue('enabled', e);\n\n            case 2:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _onChangedEnabled.apply(this, arguments);\n  }\n}//# sourceURL=webpack-internal:///2274\n");

}),

12089:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    ownerURL: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    ownerUsername: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    ownerPassword: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    })\n  });\n}//# sourceURL=webpack-internal:///12089\n");

}),

77837:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SettingsFDO": function() { return /* reexport safe */ _SettingsFDO__WEBPACK_IMPORTED_MODULE_0__.SettingsFDO; }
/* harmony export */ });
/* harmony import */ var _SettingsFDO__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SettingsFDO */ 2274);


}),

51602:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SettingsOpenAMT\": function() { return /* binding */ SettingsOpenAMT; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var _form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/form-components/SwitchField/Switch */ 79410);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _form_components_FileUpload__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/form-components/FileUpload */ 41519);\n/* harmony import */ var _SettingsOpenAMT_validation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./SettingsOpenAMT.validation */ 41713);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SettingsOpenAMT(_ref) {\n  var settings = _ref.settings,\n      onSubmit = _ref.onSubmit;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_14__.useState)(),\n      _useState2 = _slicedToArray(_useState, 2),\n      certFile = _useState2[0],\n      setCertFile = _useState2[1];\n\n  function handleFileUpload(_x, _x2) {\n    return _handleFileUpload.apply(this, arguments);\n  }\n\n  function _handleFileUpload() {\n    _handleFileUpload = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(file, setFieldValue) {\n      var fileContent;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              if (!file) {\n                _context.next = 7;\n                break;\n              }\n\n              setCertFile(file);\n              _context.next = 4;\n              return readFileContent(file);\n\n            case 4:\n              fileContent = _context.sent;\n              setFieldValue('certFileContent', fileContent);\n              setFieldValue('certFileName', file.name);\n\n            case 7:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleFileUpload.apply(this, arguments);\n  }\n\n  function readFileContent(file) {\n    return new Promise(function (resolve, reject) {\n      var fileReader = new FileReader();\n\n      fileReader.onload = function (e) {\n        if (e.target == null || e.target.result == null) {\n          resolve('');\n          return;\n        }\n\n        var base64 = e.target.result.toString(); // remove prefix of \"data:application/x-pkcs12;base64,\" returned by \"readAsDataURL()\"\n\n        var index = base64.indexOf('base64,');\n        var cert = base64.substring(index + 7, base64.length);\n        resolve(cert);\n      };\n\n      fileReader.onerror = function () {\n        reject(new Error('error reading provisioning certificate file'));\n      };\n\n      fileReader.readAsDataURL(file);\n    });\n  }\n\n  var openAMTConfiguration = settings ? settings.openAMTConfiguration : null;\n  var initialValues = {\n    enabled: openAMTConfiguration ? openAMTConfiguration.enabled : false,\n    mpsServer: openAMTConfiguration ? openAMTConfiguration.mpsServer : '',\n    mpsUser: openAMTConfiguration ? openAMTConfiguration.mpsUser : '',\n    mpsPassword: openAMTConfiguration ? openAMTConfiguration.mpsPassword : '',\n    domainName: openAMTConfiguration ? openAMTConfiguration.domainName : '',\n    certFileContent: openAMTConfiguration ? openAMTConfiguration.certFileContent : '',\n    certFileName: openAMTConfiguration ? openAMTConfiguration.certFileName : '',\n    certFilePassword: openAMTConfiguration ? openAMTConfiguration.certFilePassword : ''\n  };\n\n  if (initialValues.certFileContent && initialValues.certFileName && !certFile) {\n    setCertFile(new File([], initialValues.certFileName));\n  }\n\n  var edgeComputeFeaturesEnabled = settings ? settings.EnableEdgeComputeFeatures : false;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_18__.Widget, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_18__.WidgetTitle, {\n        icon: \"svg-laptop\",\n        title: \"Intel OpenAMT\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_18__.WidgetBody, {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Formik, {\n          initialValues: initialValues,\n          onSubmit: onSubmit,\n          enableReinitialize: true,\n          validationSchema: function validationSchema() {\n            return (0,_SettingsOpenAMT_validation__WEBPACK_IMPORTED_MODULE_23__.validationSchema)();\n          },\n          validateOnChange: true,\n          validateOnMount: true,\n          children: function children(_ref2) {\n            var values = _ref2.values,\n                errors = _ref2.errors,\n                handleSubmit = _ref2.handleSubmit,\n                setFieldValue = _ref2.setFieldValue,\n                isSubmitting = _ref2.isSubmitting,\n                isValid = _ref2.isValid,\n                dirty = _ref2.dirty;\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_15__.Form, {\n              className: \"form-horizontal\",\n              onSubmit: handleSubmit,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                inputId: \"edge_enableOpenAMT\",\n                label: \"Enable OpenAMT\",\n                errors: errors.enabled,\n                size: \"small\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_SwitchField_Switch__WEBPACK_IMPORTED_MODULE_16__.Switch, {\n                  id: \"edge_enableOpenAMT\",\n                  name: \"edge_enableOpenAMT\",\n                  className: \"space-right\",\n                  disabled: !edgeComputeFeaturesEnabled,\n                  checked: edgeComputeFeaturesEnabled && values.enabled,\n                  onChange: function onChange(e) {\n                    return setFieldValue('enabled', e);\n                  }\n                })\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_20__.TextTip, {\n                color: \"blue\",\n                children: \"\\u542F\\u7528\\u540E\\uFF0C\\u8FD9\\u5C06\\u5141\\u8BB8Portainer\\u4E0E\\u4E00\\u4E2A OpenAMT MPS API\\u8FDB\\u884C\\u4EA4\\u4E92\\u3002\"\n              }), edgeComputeFeaturesEnabled && values.enabled && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.Fragment, {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"mps_server\",\n                  label: \"MPS Server\",\n                  size: \"medium\",\n                  errors: errors.mpsServer,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    name: \"mpsServer\",\n                    id: \"mps_server\",\n                    placeholder: \"Enter the MPS Server\",\n                    value: values.mpsServer,\n                    \"data-cy\": \"openAMT-serverInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"mps_username\",\n                  label: \"MPS User\",\n                  size: \"medium\",\n                  errors: errors.mpsUser,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    name: \"mpsUser\",\n                    id: \"mps_username\",\n                    placeholder: \"Enter the MPS User\",\n                    value: values.mpsUser,\n                    \"data-cy\": \"openAMT-usernameInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"mps_password\",\n                  label: \"MPS Password\",\n                  size: \"medium\",\n                  tooltip: \"\\u9700\\u89818-32\\u4E2A\\u5B57\\u7B26\\uFF0C\\u5305\\u62EC\\u4E00\\u4E2A\\u5927\\u5199\\u5B57\\u6BCD\\u3001\\u4E00\\u4E2A\\u5C0F\\u5199\\u5B57\\u6BCD\\u3001\\u4E00\\u4E2A10\\u8FDB\\u5236\\u6570\\u5B57\\u548C\\u4E00\\u4E2A\\u7279\\u6B8A\\u5B57\\u7B26\\u3002\",\n                  errors: errors.mpsPassword,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    type: \"password\",\n                    name: \"mpsPassword\",\n                    id: \"mps_password\",\n                    placeholder: \"Enter the MPS Password\",\n                    value: values.mpsPassword,\n                    \"data-cy\": \"openAMT-passwordInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"hr\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"domain_name\",\n                  label: \"\\u57DF\\u540D\",\n                  size: \"medium\",\n                  tooltip: \"\\u8F93\\u5165\\u4E0E\\u4F9B\\u5E94\\u8BC1\\u4E66\\u76F8\\u5173\\u7684FQDN\\uFF08\\u5373 amtdomain.com\\uFF09\",\n                  errors: errors.domainName,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    name: \"domainName\",\n                    id: \"domain_name\",\n                    placeholder: \"\\u8F93\\u5165\\u57DF\\u540D\",\n                    value: values.domainName,\n                    \"data-cy\": \"openAMT-domainInput\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"certificate_file\",\n                  label: \"\\u63D0\\u4F9B\\u8BC1\\u4E66\\u6587\\u4EF6 (.pfx)\",\n                  size: \"medium\",\n                  tooltip: \"\\u652F\\u6301\\u7684 CA \\u662F Comodo\\u3001DigiCert\\u3001Entrust \\u548C GoDaddy\\u3002<br>\\u8BC1\\u4E66\\u5FC5\\u987B\\u5305\\u542B\\u79C1\\u94A5\\u3002<br>\\u5728\\u57FA\\u4E8E AMT 15 \\u7684\\u8BBE\\u5907\\u4E0A\\uFF0C\\u4F60\\u9700\\u8981\\u4F7F\\u7528 SHA2\\u3002\",\n                  errors: errors.certFileContent,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FileUpload__WEBPACK_IMPORTED_MODULE_22__.FileUploadField, {\n                    inputId: \"certificate_file\",\n                    title: \"Upload file\",\n                    accept: \".pfx\",\n                    value: certFile,\n                    onChange: function onChange(file) {\n                      return handleFileUpload(file, setFieldValue);\n                    }\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_17__.FormControl, {\n                  inputId: \"certificate_password\",\n                  label: \"\\u63D0\\u4F9B\\u8BC1\\u4E66\\u5BC6\\u7801\",\n                  size: \"medium\",\n                  tooltip: \"\\u9700\\u89818-32\\u4E2A\\u5B57\\u7B26\\uFF0C\\u5305\\u62EC\\u4E00\\u4E2A\\u5927\\u5199\\u5B57\\u6BCD\\u3001\\u4E00\\u4E2A\\u5C0F\\u5199\\u5B57\\u6BCD\\u3001\\u4E00\\u4E2A10\\u8FDB\\u5236\\u6570\\u5B57\\u548C\\u4E00\\u4E2A\\u7279\\u6B8A\\u5B57\\u7B26\\u3002\",\n                  errors: errors.certFilePassword,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(formik__WEBPACK_IMPORTED_MODULE_15__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_21__.Input,\n                    type: \"password\",\n                    name: \"certFilePassword\",\n                    id: \"certificate_password\",\n                    placeholder: \"**********\",\n                    value: values.certFilePassword,\n                    \"data-cy\": \"openAMT-certPasswordInput\"\n                  })\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n                className: \"form-group mt-5\",\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(\"div\", {\n                  className: \"col-sm-12\",\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_24__.jsx)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_19__.LoadingButton, {\n                    disabled: !isValid || !dirty,\n                    \"data-cy\": \"settings-fdoButton\",\n                    isLoading: isSubmitting,\n                    loadingText: \"\\u6B63\\u5728\\u4FDD\\u5B58\\u8BBE\\u7F6E...\",\n                    children: \"\\u4FDD\\u5B58\\u8BBE\\u7F6E\"\n                  })\n                })\n              })]\n            });\n          }\n        })\n      })]\n    })\n  });\n}//# sourceURL=webpack-internal:///51602\n");

}),

41713:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yup */ 95085);\n\nfunction validationSchema() {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_0__.object)().shape({\n    mpsServer: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    mpsUser: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    mpsPassword: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    domainName: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    certFileContent: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    certFileName: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    }),\n    certFilePassword: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().when('enabled', {\n      is: true,\n      then: (0,yup__WEBPACK_IMPORTED_MODULE_0__.string)().required('Field is required')\n    })\n  });\n}//# sourceURL=webpack-internal:///41713\n");

}),

7430:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SettingsOpenAMT": function() { return /* reexport safe */ _SettingsOpenAMT__WEBPACK_IMPORTED_MODULE_0__.SettingsOpenAMT; }
/* harmony export */ });
/* harmony import */ var _SettingsOpenAMT__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SettingsOpenAMT */ 51602);


}),

37717:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"usePublicSettings\": function() { return /* binding */ usePublicSettings; },\n/* harmony export */   \"useSettings\": function() { return /* binding */ useSettings; },\n/* harmony export */   \"useUpdateSettingsMutation\": function() { return /* binding */ useUpdateSettingsMutation; },\n/* harmony export */   \"useUpdateDefaultRegistrySettingsMutation\": function() { return /* binding */ useUpdateDefaultRegistrySettingsMutation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _settings_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./settings.service */ 21131);\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction usePublicSettings() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      enabled = _ref.enabled,\n      select = _ref.select,\n      onSuccess = _ref.onSuccess;\n\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQuery)(['settings', 'public'], function () {\n    return (0,_settings_service__WEBPACK_IMPORTED_MODULE_9__.getPublicSettings)();\n  }, _objectSpread(_objectSpread({\n    select: select\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withError)('Unable to retrieve public settings')), {}, {\n    enabled: enabled,\n    onSuccess: onSuccess\n  }));\n}\nfunction useSettings(select, enabled) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQuery)(['settings'], _settings_service__WEBPACK_IMPORTED_MODULE_9__.getSettings, _objectSpread({\n    select: select,\n    enabled: enabled\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withError)('Unable to retrieve settings')));\n}\nfunction useUpdateSettingsMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useMutation)(_settings_service__WEBPACK_IMPORTED_MODULE_9__.updateSettings, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withInvalidate)(queryClient, [['settings'], ['cloud']]), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withError)('Unable to update settings')));\n}\nfunction useUpdateDefaultRegistrySettingsMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_7__.useMutation)(function (payload) {\n    return (0,_settings_service__WEBPACK_IMPORTED_MODULE_9__.updateDefaultRegistry)(payload);\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withInvalidate)(queryClient, [['settings']]), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withError)('Unable to update default registry settings')));\n}//# sourceURL=webpack-internal:///37717\n");

}),

21131:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPublicSettings\": function() { return /* binding */ getPublicSettings; },\n/* harmony export */   \"getSettings\": function() { return /* binding */ getSettings; },\n/* harmony export */   \"updateSettings\": function() { return /* binding */ updateSettings; },\n/* harmony export */   \"updateDefaultRegistry\": function() { return /* binding */ updateDefaultRegistry; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_models_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/models/settings */ 55287);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\nfunction getPublicSettings() {\n  return _getPublicSettings.apply(this, arguments);\n}\n\nfunction _getPublicSettings() {\n  _getPublicSettings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var _yield$axios$get, data;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl('public'));\n\n          case 3:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", new _portainer_models_settings__WEBPACK_IMPORTED_MODULE_3__.PublicSettingsViewModel(data));\n\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context.t0, 'Unable to retrieve application settings');\n\n          case 11:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 8]]);\n  }));\n  return _getPublicSettings.apply(this, arguments);\n}\n\nfunction getSettings() {\n  return _getSettings.apply(this, arguments);\n}\n\nfunction _getSettings() {\n  _getSettings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n    var _yield$axios$get2, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].get(buildUrl());\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            data = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", data);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context2.t0, 'Unable to retrieve application settings');\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getSettings.apply(this, arguments);\n}\n\nfunction updateSettings(_x) {\n  return _updateSettings.apply(this, arguments);\n}\n\nfunction _updateSettings() {\n  _updateSettings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(settings) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].put(buildUrl(), settings);\n\n          case 3:\n            _context3.next = 8;\n            break;\n\n          case 5:\n            _context3.prev = 5;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context3.t0, 'Unable to update application settings');\n\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 5]]);\n  }));\n  return _updateSettings.apply(this, arguments);\n}\n\nfunction updateDefaultRegistry(_x2) {\n  return _updateDefaultRegistry.apply(this, arguments);\n}\n\nfunction _updateDefaultRegistry() {\n  _updateDefaultRegistry = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(defaultRegistry) {\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].put(buildUrl('default_registry'), defaultRegistry);\n\n          case 3:\n            _context4.next = 8;\n            break;\n\n          case 5:\n            _context4.prev = 5;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_4__.parseAxiosError)(_context4.t0, 'Unable to update default registry settings');\n\n          case 8:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 5]]);\n  }));\n  return _updateDefaultRegistry.apply(this, arguments);\n}\n\nfunction buildUrl(subResource, action) {\n  var url = 'settings';\n\n  if (subResource) {\n    url += \"/\".concat(subResource);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///21131\n");

}),

90543:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Details\": function() { return /* binding */ Details; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react-tools/react-query */ 53347);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../types */ 43247);\n/* harmony import */ var _teams_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../teams.service */ 67826);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Details(_ref) {\n  var team = _ref.team,\n      memberships = _ref.memberships,\n      isAdmin = _ref.isAdmin;\n  var deleteMutation = useDeleteTeam();\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_4__.useRouter)();\n  var teamSyncQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_7__.usePublicSettings)({\n    select: function select(settings) {\n      return settings.TeamSync;\n    }\n  });\n  var leaderCount = memberships.filter(function (m) {\n    return m.Role === _types__WEBPACK_IMPORTED_MODULE_11__.TeamRole.Leader;\n  }).length;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"div\", {\n      className: \"col-lg-12 col-md-12 col-xs-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_10__.Widget, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_10__.Widget.Title, {\n          title: \"\\u56E2\\u961F\\u8BE6\\u7EC6\\u4FE1\\u606F\",\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_10__.Widget.Body, {\n          className: \"no-padding\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"table\", {\n            className: \"table\",\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"tbody\", {\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"tr\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"td\", {\n                  children: \"\\u540D\\u79F0\"\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"td\", {\n                  children: [!teamSyncQuery.data && team.Name, isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_9__.Button, {\n                    color: \"danger\",\n                    size: \"xsmall\",\n                    onClick: handleDeleteClick,\n                    icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n                    children: \"\\u5220\\u9664\\u6B64\\u56E2\\u961F\"\n                  })]\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"tr\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"td\", {\n                  children: \"\\u9886\\u5BFC\"\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"td\", {\n                  children: !teamSyncQuery.data && leaderCount\n                })]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(\"tr\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"td\", {\n                  children: \"\\u56E2\\u961F\\u4E2D\\u7684\\u7528\\u6237\\u603B\\u6570\"\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(\"td\", {\n                  children: memberships.length\n                })]\n              })]\n            })\n          })\n        })]\n      })\n    })\n  });\n\n  function handleDeleteClick() {\n    return _handleDeleteClick.apply(this, arguments);\n  }\n\n  function _handleDeleteClick() {\n    _handleDeleteClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_6__.confirmDeletionAsync)(\"\\u662F\\u5426\\u8981\\u5220\\u9664\\u6B64\\u56E2\\u961F\\uFF1F\\u4E0D\\u4F1A\\u5220\\u9664\\u6B64\\u56E2\\u961F\\u4E2D\\u7684\\u7528\\u6237\\u3002\");\n\n            case 2:\n              confirmed = _context.sent;\n\n              if (confirmed) {\n                _context.next = 5;\n                break;\n              }\n\n              return _context.abrupt(\"return\");\n\n            case 5:\n              deleteMutation.mutate(team.Id, {\n                onSuccess: function onSuccess() {\n                  router.stateService.go('portainer.teams');\n                }\n              });\n\n            case 6:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleDeleteClick.apply(this, arguments);\n  }\n}\n\nfunction useDeleteTeam() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_5__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_5__.useMutation)(function (id) {\n    return (0,_teams_service__WEBPACK_IMPORTED_MODULE_12__.deleteTeam)(id);\n  }, (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.mutationOptions)((0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withError)('无法删除团队'), (0,_react_tools_react_query__WEBPACK_IMPORTED_MODULE_8__.withInvalidate)(queryClient, [['teams']])));\n}//# sourceURL=webpack-internal:///90543\n");

}),

47850:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemView\": function() { return /* binding */ ItemView; }\n/* harmony export */ });\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _Tip_TextTip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Tip/TextTip */ 59142);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../queries */ 74050);\n/* harmony import */ var _Details__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Details */ 90543);\n/* harmony import */ var _TeamAssociationSelector__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TeamAssociationSelector */ 56216);\n/* harmony import */ var _useTeamIdParam__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useTeamIdParam */ 69780);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ItemView() {\n  var teamId = (0,_useTeamIdParam__WEBPACK_IMPORTED_MODULE_9__.useTeamIdParam)();\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_2__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_0__.useRouter)();\n  var teamQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_6__.useTeam)(teamId, function () {\n    return router.stateService.go('portainer.teams');\n  });\n  var usersQuery = (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_1__.useUsers)();\n  var membershipsQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_6__.useTeamMemberships)(teamId);\n  var teamSyncQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__.usePublicSettings)({\n    select: function select(settings) {\n      return settings.TeamSync;\n    }\n  });\n\n  if (!teamQuery.data) {\n    return null;\n  }\n\n  var team = teamQuery.data;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_5__.PageHeader, {\n      title: \"\\u56E2\\u961F\\u8BE6\\u7EC6\\u4FE1\\u606F\",\n      breadcrumbs: [{\n        label: 'Teams'\n      }, {\n        label: team.Name\n      }]\n    }), membershipsQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_Details__WEBPACK_IMPORTED_MODULE_7__.Details, {\n      team: team,\n      memberships: membershipsQuery.data,\n      isAdmin: isAdmin\n    }), teamSyncQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n      className: \"row\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n        className: \"col-sm-12\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_Tip_TextTip__WEBPACK_IMPORTED_MODULE_4__.TextTip, {\n          color: \"orange\",\n          children: \"\\u56E2\\u961F\\u9886\\u5BFC\\u7684\\u529F\\u80FD\\u88AB\\u7981\\u7528\\uFF0C\\u56E0\\u4E3A\\u76EE\\u524D\\u56E2\\u961F\\u540C\\u6B65\\u7684\\u5916\\u90E8\\u8BA4\\u8BC1\\u5DF2\\u7ECF\\u542F\\u7528\\u3002 \\u76EE\\u524D\\u542F\\u7528\\u4E86\\u56E2\\u961F\\u540C\\u6B65\\u7684\\u5916\\u90E8\\u8BA4\\u8BC1\\u3002\"\n        })\n      })\n    }), usersQuery.data && membershipsQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_TeamAssociationSelector__WEBPACK_IMPORTED_MODULE_8__.TeamAssociationSelector, {\n      teamId: teamId,\n      memberships: membershipsQuery.data,\n      users: usersQuery.data,\n      disabled: teamSyncQuery.data\n    })]\n  });\n}//# sourceURL=webpack-internal:///47850\n");

}),

97174:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamAssociationSelector\": function() { return /* binding */ TeamAssociationSelector; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ 25212);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _UsersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./UsersList */ 64546);\n/* harmony import */ var _TeamMembersList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TeamMembersList */ 76093);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction TeamAssociationSelector(_ref) {\n  var users = _ref.users,\n      memberships = _ref.memberships,\n      disabled = _ref.disabled,\n      teamId = _ref.teamId;\n\n  var teamUsers = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(memberships.map(function (m) {\n    return users.find(function (user) {\n      return user.Id === m.UserID;\n    });\n  }));\n\n  var usersNotInTeam = users.filter(function (user) {\n    return !memberships.some(function (m) {\n      return m.UserID === user.Id;\n    });\n  });\n  var userRoles = Object.fromEntries(memberships.map(function (m) {\n    return [m.UserID, m.Role];\n  }));\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n    className: \"row\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: \"col-sm-6\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_UsersList__WEBPACK_IMPORTED_MODULE_7__.UsersList, {\n        users: usersNotInTeam,\n        disabled: disabled,\n        teamId: teamId\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: \"col-sm-6\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_TeamMembersList__WEBPACK_IMPORTED_MODULE_8__.TeamMembersList, {\n        teamId: teamId,\n        disabled: disabled,\n        users: teamUsers,\n        roles: userRoles\n      })\n    })]\n  });\n}//# sourceURL=webpack-internal:///97174\n");

}),

96511:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RowProvider\": function() { return /* binding */ RowProvider; },\n/* harmony export */   \"useRowContext\": function() { return /* binding */ useRowContext; }\n/* harmony export */ });\n/* harmony import */ var _datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/RowContext */ 9924);\n\n\nvar _createRowContext = (0,_datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__.createRowContext)(),\n    RowProvider = _createRowContext.RowProvider,\n    useRowContext = _createRowContext.useRowContext;\n\n//# sourceURL=webpack-internal:///96511\n");

}),

75128:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamMembersList\": function() { return /* binding */ TeamMembersList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.max-safe-integer.js */ 43119);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! react-feather */ 17066);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _PaginationControls_PageSelector__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/PaginationControls/PageSelector */ 10688);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _name_column__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./name-column */ 19685);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./RowContext */ 96511);\n/* harmony import */ var _team_role_column__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./team-role-column */ 49620);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar columns = [_name_column__WEBPACK_IMPORTED_MODULE_24__.name, _team_role_column__WEBPACK_IMPORTED_MODULE_26__.teamRole];\nfunction TeamMembersList(_ref) {\n  var users = _ref.users,\n      roles = _ref.roles,\n      disabled = _ref.disabled,\n      teamId = _ref.teamId;\n  var membershipsQuery = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_18__.useTeamMemberships)(teamId);\n  var removeMemberMutation = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_18__.useRemoveMemberMutation)(teamId, membershipsQuery.data);\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(''),\n      _useState2 = _slicedToArray(_useState, 2),\n      search = _useState2[0],\n      setSearch = _useState2[1];\n\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(10),\n      _useState4 = _slicedToArray(_useState3, 2),\n      pageSize = _useState4[0],\n      setPageSize = _useState4[1];\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_16__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_14__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: users,\n    initialState: {\n      pageSize: pageSize,\n      sortBy: [{\n        id: 'name',\n        desc: false\n      }],\n      globalFilter: search\n    }\n  }, react_table__WEBPACK_IMPORTED_MODULE_14__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_14__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_14__.usePagination),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      gotoPage = _useTable.gotoPage,\n      setPageSizeInternal = _useTable.setPageSize,\n      setGlobalFilterInternal = _useTable.setGlobalFilter,\n      pageIndex = _useTable.state.pageIndex,\n      setSortBy = _useTable.setSortBy,\n      rows = _useTable.rows;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  var rowContext = (0,react__WEBPACK_IMPORTED_MODULE_15__.useMemo)(function () {\n    return {\n      getRole: function getRole(userId) {\n        return roles[userId];\n      },\n      disabled: disabled,\n      teamId: teamId\n    };\n  }, [roles, disabled, teamId]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Title, {\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n      title: \"\\u56E2\\u961F\\u6210\\u5458\",\n      children: [\"\\u6BCF\\u9875\\u9879\\u76EE\\u6570:\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(\"select\", {\n        value: pageSize,\n        onChange: handlePageSizeChange,\n        className: \"space-left\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: Number.MAX_SAFE_INTEGER,\n          children: \"All\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 10,\n          children: \"10\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 25,\n          children: \"25\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 50,\n          children: \"50\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 100,\n          children: \"100\"\n        })]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Taskbar, {\n      className: \"col-sm-12 nopadding\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n        className: \"col-sm-12 col-md-6 nopadding\",\n        children: isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_21__.Button, {\n          onClick: function onClick() {\n            return handleRemoveMembers(rows.map(function (_ref2) {\n              var original = _ref2.original;\n              return original.Id;\n            }));\n          },\n          disabled: disabled || users.length === 0,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n          children: \"\\u5220\\u9664\\u6240\\u6709\\u7528\\u6237\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n        className: \"col-sm-12 col-md-6 nopadding\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_23__.Input, {\n          type: \"text\",\n          id: \"filter-users\",\n          value: search,\n          onChange: handleSearchBarChange,\n          placeholder: \"\\u7B5B\\u9009...\",\n          className: \"input-sm\"\n        })\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Body, {\n      className: \"nopadding\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table, {\n        className: tableProps.className,\n        role: tableProps.role,\n        style: tableProps.style,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"thead\", {\n          children: headerGroups.map(function (headerGroup) {\n            var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                key = _headerGroup$getHeade.key,\n                className = _headerGroup$getHeade.className,\n                role = _headerGroup$getHeade.role,\n                style = _headerGroup$getHeade.style;\n\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.HeaderRow, {\n              className: className,\n              role: role,\n              style: style,\n              headers: headerGroup.headers,\n              onSortChange: handleSortChange\n            }, key);\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"tbody\", {\n          className: tbodyProps.className,\n          role: tbodyProps.role,\n          style: tbodyProps.style,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.Content, {\n            emptyContent: \"No users.\",\n            prepareRow: prepareRow,\n            rows: page,\n            renderRow: function renderRow(row, _ref3) {\n              var key = _ref3.key,\n                  className = _ref3.className,\n                  role = _ref3.role,\n                  style = _ref3.style;\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_RowContext__WEBPACK_IMPORTED_MODULE_25__.RowProvider, {\n                context: rowContext,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.Row, {\n                  cells: row.cells,\n                  className: className,\n                  role: role,\n                  style: style\n                }, key)\n              }, key);\n            }\n          })\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.Footer, {\n        children: pageSize !== 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n          className: \"pagination-controls\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_PaginationControls_PageSelector__WEBPACK_IMPORTED_MODULE_20__.PageSelector, {\n            maxSize: 5,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p - 1);\n            },\n            currentPage: pageIndex + 1,\n            itemsPerPage: pageSize,\n            totalCount: rows.length\n          })\n        })\n      })]\n    })]\n  });\n\n  function handlePageSizeChange(e) {\n    var pageSize = parseInt(e.target.value, 10);\n    setPageSize(pageSize);\n    setPageSizeInternal(pageSize);\n  }\n\n  function handleSearchBarChange(e) {\n    var value = e.target.value;\n    setSearch(value);\n    setGlobalFilterInternal(value);\n  }\n\n  function handleSortChange(id, desc) {\n    setSortBy([{\n      id: id,\n      desc: desc\n    }]);\n  }\n\n  function handleRemoveMembers(userIds) {\n    removeMemberMutation.mutate(userIds, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__.notifySuccess)('Success', 'All users successfully removed');\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///75128\n");

}),

76093:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "TeamMembersList": function() { return /* reexport safe */ _TeamMembersList__WEBPACK_IMPORTED_MODULE_0__.TeamMembersList; }
/* harmony export */ });
/* harmony import */ var _TeamMembersList__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TeamMembersList */ 75128);


}),

19685:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 22680);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RowContext */ 96511);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: function accessor(row) {\n    return row.Username;\n  },\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      user = _ref.row.original;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_3__.useRowContext)(),\n      disabled = _useRowContext.disabled,\n      teamId = _useRowContext.teamId;\n\n  var membershipsQuery = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_1__.useTeamMemberships)(teamId);\n  var removeMemberMutation = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_1__.useRemoveMemberMutation)(teamId, membershipsQuery.data);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n    children: [name, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_2__.Button, {\n      color: \"link\",\n      className: \"space-left nopadding\",\n      onClick: function onClick() {\n        return handleRemoveMember(user.Id);\n      },\n      disabled: disabled,\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      children: \"Remove\"\n    })]\n  });\n\n  function handleRemoveMember(userId) {\n    removeMemberMutation.mutate([userId], {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__.notifySuccess)('User removed from team', name);\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///19685\n");

}),

49620:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"teamRole\": function() { return /* binding */ teamRole; },\n/* harmony export */   \"RoleCell\": function() { return /* binding */ RoleCell; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-feather */ 10799);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-feather */ 17066);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-feather */ 64490);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/users/teams/types */ 43247);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./RowContext */ 96511);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nvar teamRole = {\n  Header: 'Team Role',\n  accessor: 'Id',\n  id: 'role',\n  Cell: RoleCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};\nfunction RoleCell(_ref) {\n  var user = _ref.row.original;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_6__.useRowContext)(),\n      getRole = _useRowContext.getRole,\n      disabled = _useRowContext.disabled,\n      teamId = _useRowContext.teamId;\n\n  var membershipsQuery = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_3__.useTeamMemberships)(teamId);\n  var updateRoleMutation = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_3__.useUpdateRoleMutation)(teamId, membershipsQuery.data);\n  var role = getRole(user.Id);\n\n  var _useCurrentUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__.useUser)(),\n      isAdmin = _useCurrentUser.isAdmin;\n\n  var Cell = role === _react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_1__.TeamRole.Leader ? LeaderCell : MemberCell;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(Cell, {\n    isAdmin: isAdmin,\n    onClick: handleUpdateRole,\n    disabled: disabled\n  });\n\n  function handleUpdateRole(role, onSuccessMessage) {\n    updateRoleMutation.mutate({\n      userId: user.Id,\n      role: role\n    }, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_2__.notifySuccess)(onSuccessMessage, user.Username);\n      }\n    });\n  }\n}\n\nfunction LeaderCell(_ref2) {\n  var isAdmin = _ref2.isAdmin,\n      _onClick = _ref2.onClick,\n      disabled = _ref2.disabled;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n    className: \"flex items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n      className: \"space-right feather\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n      mode: \"secondary-alt\"\n    }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_4__.Button, {\n      color: \"link\",\n      className: \"nopadding\",\n      onClick: function onClick() {\n        return _onClick(_react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_1__.TeamRole.Member, 'User is now team member');\n      },\n      disabled: disabled,\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n      children: \"Member\"\n    })]\n  });\n}\n\nfunction MemberCell(_ref3) {\n  var _onClick2 = _ref3.onClick,\n      disabled = _ref3.disabled;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n    className: \"flex items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_5__.Icon, {\n      className: \"space-right feather\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n      mode: \"secondary-alt\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_4__.Button, {\n      color: \"link\",\n      className: \"nopadding\",\n      onClick: function onClick() {\n        return _onClick2(_react_portainer_users_teams_types__WEBPACK_IMPORTED_MODULE_1__.TeamRole.Leader, 'User is now team leader');\n      },\n      disabled: disabled,\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n      children: \"Leader\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///49620\n");

}),

19232:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RowProvider\": function() { return /* binding */ RowProvider; },\n/* harmony export */   \"useRowContext\": function() { return /* binding */ useRowContext; }\n/* harmony export */ });\n/* harmony import */ var _datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/datatables/RowContext */ 9924);\n\n\nvar _createRowContext = (0,_datatables_RowContext__WEBPACK_IMPORTED_MODULE_0__.createRowContext)(),\n    RowProvider = _createRowContext.RowProvider,\n    useRowContext = _createRowContext.useRowContext;\n\n//# sourceURL=webpack-internal:///19232\n");

}),

72897:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UsersList\": function() { return /* binding */ UsersList; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.max-safe-integer.js */ 43119);\n/* harmony import */ var core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_max_safe_integer_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! react-feather */ 10799);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _PaginationControls_PageSelector__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/PaginationControls/PageSelector */ 10688);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _name_column__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./name-column */ 57501);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./RowContext */ 19232);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar columns = [_name_column__WEBPACK_IMPORTED_MODULE_25__.name];\nfunction UsersList(_ref) {\n  var users = _ref.users,\n      disabled = _ref.disabled,\n      teamId = _ref.teamId;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(''),\n      _useState2 = _slicedToArray(_useState, 2),\n      search = _useState2[0],\n      setSearch = _useState2[1];\n\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_15__.useState)(10),\n      _useState4 = _slicedToArray(_useState3, 2),\n      pageSize = _useState4[0],\n      setPageSize = _useState4[1];\n\n  var addMemberMutation = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_18__.useAddMemberMutation)(teamId);\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_16__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_14__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: users,\n    initialState: {\n      pageSize: pageSize,\n      sortBy: [{\n        id: 'name',\n        desc: false\n      }],\n      globalFilter: search\n    }\n  }, react_table__WEBPACK_IMPORTED_MODULE_14__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_14__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_14__.usePagination),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      gotoPage = _useTable.gotoPage,\n      setPageSizeInternal = _useTable.setPageSize,\n      setGlobalFilterInternal = _useTable.setGlobalFilter,\n      pageIndex = _useTable.state.pageIndex,\n      setSortBy = _useTable.setSortBy,\n      rows = _useTable.rows;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  var rowContext = (0,react__WEBPACK_IMPORTED_MODULE_15__.useMemo)(function () {\n    return {\n      disabled: disabled,\n      teamId: teamId\n    };\n  }, [disabled, teamId]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Title, {\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n      title: \"Users\",\n      children: [\"\\u6BCF\\u9875\\u9879\\u76EE\\u6570:\", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(\"select\", {\n        value: pageSize,\n        onChange: handlePageSizeChange,\n        className: \"space-left\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: Number.MAX_SAFE_INTEGER,\n          children: \"All\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 10,\n          children: \"10\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 25,\n          children: \"25\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 50,\n          children: \"50\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"option\", {\n          value: 100,\n          children: \"100\"\n        })]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Taskbar, {\n      className: \"col-sm-12 nopadding\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n        className: \"col-sm-12 col-md-6 nopadding\",\n        children: isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_21__.Button, {\n          onClick: function onClick() {\n            return handleAddAllMembers(rows.map(function (row) {\n              return row.original.Id;\n            }));\n          },\n          disabled: disabled || rows.length === 0,\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n          children: \"\\u6DFB\\u52A0\\u6240\\u6709\\u7528\\u6237\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n        className: \"col-sm-12 col-md-6 nopadding\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_form_components_Input__WEBPACK_IMPORTED_MODULE_24__.Input, {\n          type: \"text\",\n          id: \"filter-users\",\n          value: search,\n          onChange: handleSearchBarChange,\n          placeholder: \"\\u7B5B\\u9009...\",\n          className: \"input-sm\"\n        })\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Body, {\n      className: \"nopadding\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table, {\n        className: tableProps.className,\n        role: tableProps.role,\n        style: tableProps.style,\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"thead\", {\n          children: headerGroups.map(function (headerGroup) {\n            var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                key = _headerGroup$getHeade.key,\n                className = _headerGroup$getHeade.className,\n                role = _headerGroup$getHeade.role,\n                style = _headerGroup$getHeade.style;\n\n            return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.HeaderRow, {\n              className: className,\n              role: role,\n              style: style,\n              headers: headerGroup.headers,\n              onSortChange: handleSortChange\n            }, key);\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"tbody\", {\n          className: tbodyProps.className,\n          role: tbodyProps.role,\n          style: tbodyProps.style,\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.Content, {\n            emptyContent: \"No users.\",\n            prepareRow: prepareRow,\n            rows: page,\n            renderRow: function renderRow(row, _ref2) {\n              var key = _ref2.key,\n                  className = _ref2.className,\n                  role = _ref2.role,\n                  style = _ref2.style;\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_RowContext__WEBPACK_IMPORTED_MODULE_26__.RowProvider, {\n                context: rowContext,\n                children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_22__.Table.Row, {\n                  cells: row.cells,\n                  className: className,\n                  role: role,\n                  style: style\n                }, key)\n              }, key);\n            }\n          })\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_23__.TableFooter, {\n        children: pageSize !== 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(\"div\", {\n          className: \"pagination-controls\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_27__.jsx)(_PaginationControls_PageSelector__WEBPACK_IMPORTED_MODULE_20__.PageSelector, {\n            maxSize: 5,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p - 1);\n            },\n            currentPage: pageIndex + 1,\n            itemsPerPage: pageSize,\n            totalCount: rows.length\n          })\n        })\n      })]\n    })]\n  });\n\n  function handlePageSizeChange(e) {\n    var pageSize = parseInt(e.target.value, 10);\n    setPageSize(pageSize);\n    setPageSizeInternal(pageSize);\n  }\n\n  function handleSearchBarChange(e) {\n    var value = e.target.value;\n    setSearch(value);\n    setGlobalFilterInternal(value);\n  }\n\n  function handleSortChange(id, desc) {\n    setSortBy([{\n      id: id,\n      desc: desc\n    }]);\n  }\n\n  function handleAddAllMembers(userIds) {\n    addMemberMutation.mutate(userIds, {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__.notifySuccess)('Success', 'All users successfully added');\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///72897\n");

}),

64546:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "UsersList": function() { return /* reexport safe */ _UsersList__WEBPACK_IMPORTED_MODULE_0__.UsersList; }
/* harmony export */ });
/* harmony import */ var _UsersList__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UsersList */ 72897);


}),

57501:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"name\": function() { return /* binding */ name; },\n/* harmony export */   \"NameCell\": function() { return /* binding */ NameCell; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 20680);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/users/teams/queries */ 74050);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _RowContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RowContext */ 19232);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nvar name = {\n  Header: '名称',\n  accessor: function accessor(row) {\n    return row.Username;\n  },\n  id: 'name',\n  Cell: NameCell,\n  disableFilters: true,\n  Filter: function Filter() {\n    return null;\n  },\n  canHide: false,\n  sortType: 'string'\n};\nfunction NameCell(_ref) {\n  var name = _ref.value,\n      user = _ref.row.original;\n\n  var _useRowContext = (0,_RowContext__WEBPACK_IMPORTED_MODULE_3__.useRowContext)(),\n      disabled = _useRowContext.disabled,\n      teamId = _useRowContext.teamId;\n\n  var addMemberMutation = (0,_react_portainer_users_teams_queries__WEBPACK_IMPORTED_MODULE_1__.useAddMemberMutation)(teamId);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n    children: [name, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_2__.Button, {\n      color: \"link\",\n      className: \"space-left nopadding\",\n      disabled: disabled,\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      onClick: function onClick() {\n        return handleAddMember();\n      },\n      children: \"Add\"\n    })]\n  });\n\n  function handleAddMember() {\n    addMemberMutation.mutate([user.Id], {\n      onSuccess: function onSuccess() {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_0__.notifySuccess)('User added to team', name);\n      }\n    });\n  }\n}//# sourceURL=webpack-internal:///57501\n");

}),

56216:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "TeamAssociationSelector": function() { return /* reexport safe */ _TeamAssociationSelector__WEBPACK_IMPORTED_MODULE_0__.TeamAssociationSelector; }
/* harmony export */ });
/* harmony import */ var _TeamAssociationSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TeamAssociationSelector */ 97174);


}),

82147:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ItemView": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_0__.ItemView; }
/* harmony export */ });
/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemView */ 47850);


}),

69780:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useTeamIdParam\": function() { return /* binding */ useTeamIdParam; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uirouter/react */ 38566);\n\n\n\nfunction useTeamIdParam() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_2__.useCurrentStateAndParams)(),\n      teamIdParam = _useCurrentStateAndPa.params.id;\n\n  var teamId = parseInt(teamIdParam, 10);\n\n  if (!teamIdParam || Number.isNaN(teamId)) {\n    throw new Error('Team ID is missing');\n  }\n\n  return teamId;\n}//# sourceURL=webpack-internal:///69780\n");

}),

11272:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateTeamForm\": function() { return /* binding */ CreateTeamForm; },\n/* harmony export */   \"useAddTeamMutation\": function() { return /* binding */ useAddTeamMutation; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! formik */ 71842);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var _react_components_Icon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/react/components/Icon */ 6277);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _form_components_FormControl__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @@/form-components/FormControl */ 89400);\n/* harmony import */ var _Widget__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @@/Widget */ 54592);\n/* harmony import */ var _form_components_Input__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @@/form-components/Input */ 96155);\n/* harmony import */ var _UsersSelector__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @@/UsersSelector */ 11068);\n/* harmony import */ var _buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @@/buttons/LoadingButton */ 97347);\n/* harmony import */ var _teams_service__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../teams.service */ 67826);\n/* harmony import */ var _CreateTeamForm_validation__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./CreateTeamForm.validation */ 5997);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CreateTeamForm(_ref) {\n  var users = _ref.users,\n      teams = _ref.teams;\n  var addTeamMutation = useAddTeamMutation();\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_15__.useReducer)(function (state) {\n    return state + 1;\n  }, 0),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      formKey = _useReducer2[0],\n      incFormKey = _useReducer2[1];\n\n  var initialValues = {\n    name: '',\n    leaders: []\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n      className: \"col-lg-12 col-md-12 col-xs-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Title, {\n          icon: \"plus\",\n          title: \"\\u6DFB\\u52A0\\u65B0\\u56E2\\u961F\",\n          featherIcon: true,\n          className: \"vertical-center\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_Widget__WEBPACK_IMPORTED_MODULE_19__.Widget.Body, {\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_13__.Formik, {\n            initialValues: initialValues,\n            validationSchema: function validationSchema() {\n              return (0,_CreateTeamForm_validation__WEBPACK_IMPORTED_MODULE_24__.validationSchema)(teams);\n            },\n            onSubmit: handleAddTeamClick,\n            validateOnMount: true,\n            children: function children(_ref2) {\n              var values = _ref2.values,\n                  errors = _ref2.errors,\n                  handleSubmit = _ref2.handleSubmit,\n                  setFieldValue = _ref2.setFieldValue,\n                  isSubmitting = _ref2.isSubmitting,\n                  isValid = _ref2.isValid;\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(formik__WEBPACK_IMPORTED_MODULE_13__.Form, {\n                className: \"form-horizontal\",\n                onSubmit: handleSubmit,\n                noValidate: true,\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_18__.FormControl, {\n                  inputId: \"team_name\",\n                  label: \"\\u540D\\u79F0\",\n                  errors: errors.name,\n                  required: true,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(formik__WEBPACK_IMPORTED_MODULE_13__.Field, {\n                    as: _form_components_Input__WEBPACK_IMPORTED_MODULE_20__.Input,\n                    name: \"name\",\n                    id: \"team_name\",\n                    required: true,\n                    placeholder: \"\\u4F8B\\u5982 development\",\n                    \"data-cy\": \"team-teamNameInput\"\n                  })\n                }), users.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_form_components_FormControl__WEBPACK_IMPORTED_MODULE_18__.FormControl, {\n                  inputId: \"users-input\",\n                  label: \"\\u9009\\u62E9\\u56E2\\u961F\\u9886\\u5BFC\",\n                  tooltip: \"\\u60A8\\u53EF\\u4EE5\\u4E3A\\u6B64\\u56E2\\u961F\\u6307\\u6D3E\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u9886\\u5BFC\\u8005\\u3002\\u56E2\\u961F\\u9886\\u5BFC\\u8005\\u53EF\\u4EE5\\u7BA1\\u7406\\u4ED6\\u4EEC\\u7684\\u56E2\\u961F\\u7528\\u6237\\u548C\\u8D44\\u6E90\\u3002\",\n                  errors: errors.leaders,\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_UsersSelector__WEBPACK_IMPORTED_MODULE_21__.UsersSelector, {\n                    value: values.leaders,\n                    onChange: function onChange(leaders) {\n                      return setFieldValue('leaders', leaders);\n                    },\n                    users: users,\n                    dataCy: \"team-teamLeaderSelect\",\n                    inputId: \"users-input\",\n                    placeholder: \"\\u9009\\u62E9\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u56E2\\u961F\\u9886\\u5BFC\"\n                  })\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n                  className: \"form-group\",\n                  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(\"div\", {\n                    className: \"col-sm-12\",\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxs)(_buttons_LoadingButton__WEBPACK_IMPORTED_MODULE_22__.LoadingButton, {\n                      disabled: !isValid,\n                      \"data-cy\": \"team-createTeamButton\",\n                      isLoading: isSubmitting || addTeamMutation.isLoading,\n                      loadingText: \"\\u521B\\u5EFA\\u56E2\\u961F\\u4E2D...\",\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_25__.jsx)(_react_components_Icon__WEBPACK_IMPORTED_MODULE_16__.Icon, {\n                        icon: \"plus\",\n                        feather: true,\n                        size: \"md\"\n                      }), \"\\u521B\\u5EFA\\u56E2\\u961F\"]\n                    })\n                  })\n                })]\n              });\n            }\n          }, formKey)\n        })]\n      })\n    })\n  });\n\n  function handleAddTeamClick(_x) {\n    return _handleAddTeamClick.apply(this, arguments);\n  }\n\n  function _handleAddTeamClick() {\n    _handleAddTeamClick = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              addTeamMutation.mutate(values, {\n                onSuccess: function onSuccess() {\n                  incFormKey();\n                  (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_17__.notifySuccess)('团队已成功添加', '');\n                }\n              });\n\n            case 1:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n    return _handleAddTeamClick.apply(this, arguments);\n  }\n}\nfunction useAddTeamMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_14__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_14__.useMutation)(function (values) {\n    return (0,_teams_service__WEBPACK_IMPORTED_MODULE_23__.createTeam)(values.name, values.leaders);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: '未能创建团队'\n      }\n    },\n    onSuccess: function onSuccess() {\n      return queryClient.invalidateQueries(['teams']);\n    }\n  });\n}//# sourceURL=webpack-internal:///11272\n");

}),

5997:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validationSchema\": function() { return /* binding */ validationSchema; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! yup */ 95085);\n\n\n\nfunction validationSchema(teams) {\n  return (0,yup__WEBPACK_IMPORTED_MODULE_2__.object)().shape({\n    name: (0,yup__WEBPACK_IMPORTED_MODULE_2__.string)().required('此字段必填。').test('is-unique', '此团队已存在。', function (name) {\n      return !!name && teams.every(function (team) {\n        return team.Name !== name;\n      });\n    }),\n    leaders: (0,yup__WEBPACK_IMPORTED_MODULE_2__.array)().of((0,yup__WEBPACK_IMPORTED_MODULE_2__.number)())\n  });\n}//# sourceURL=webpack-internal:///5997\n");

}),

59002:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CreateTeamForm": function() { return /* reexport safe */ _CreateTeamForm__WEBPACK_IMPORTED_MODULE_0__.CreateTeamForm; }
/* harmony export */ });
/* harmony import */ var _CreateTeamForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateTeamForm */ 11272);


}),

49281:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ListView\": function() { return /* binding */ ListView; }\n/* harmony export */ });\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @@/PageHeader */ 24117);\n/* harmony import */ var _queries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../queries */ 74050);\n/* harmony import */ var _CreateTeamForm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CreateTeamForm */ 59002);\n/* harmony import */ var _TeamsDatatable_TeamsDatatable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TeamsDatatable/TeamsDatatable */ 72964);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction ListView() {\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.useUser)(),\n      isAdmin = _useUser.isAdmin;\n\n  var usersQuery = (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_0__.useUsers)(false);\n  var teamsQuery = (0,_queries__WEBPACK_IMPORTED_MODULE_3__.useTeams)(!isAdmin, 0, {\n    enabled: !!usersQuery.data\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_PageHeader__WEBPACK_IMPORTED_MODULE_2__.PageHeader, {\n      title: \"Teams\",\n      breadcrumbs: [{\n        label: '团队管理'\n      }]\n    }), usersQuery.data && teamsQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_CreateTeamForm__WEBPACK_IMPORTED_MODULE_4__.CreateTeamForm, {\n      users: usersQuery.data,\n      teams: teamsQuery.data\n    }), teamsQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_TeamsDatatable_TeamsDatatable__WEBPACK_IMPORTED_MODULE_5__.TeamsDatatableContainer, {\n      teams: teamsQuery.data,\n      isAdmin: isAdmin\n    })]\n  });\n}//# sourceURL=webpack-internal:///49281\n");

}),

72964:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamsDatatable\": function() { return /* binding */ TeamsDatatable; },\n/* harmony export */   \"TeamsDatatableContainer\": function() { return /* binding */ TeamsDatatableContainer; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @lineup-lite/hooks */ 28914);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-table */ 4450);\n/* harmony import */ var react_table__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(react_table__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! react-feather */ 4391);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/portainer/helpers/promise-utils */ 19990);\n/* harmony import */ var _react_portainer_users_teams_teams_service__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/react/portainer/users/teams/teams.service */ 67826);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _PaginationControls__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @@/PaginationControls */ 47182);\n/* harmony import */ var _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @@/form-components/Checkbox */ 59748);\n/* harmony import */ var _datatables__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @@/datatables */ 12047);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _datatables_SearchBar__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @@/datatables/SearchBar */ 1808);\n/* harmony import */ var _datatables_TableFooter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/datatables/TableFooter */ 33417);\n/* harmony import */ var _datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/datatables/SelectedRowsCount */ 38276);\n/* harmony import */ var _datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @@/datatables/useTableSettings */ 63613);\n/* harmony import */ var _datatables_TableContent__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @@/datatables/TableContent */ 85813);\n/* harmony import */ var _datatables_NameCell__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @@/datatables/NameCell */ 94020);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar tableKey = 'teams';\nvar columns = [(0,_datatables_NameCell__WEBPACK_IMPORTED_MODULE_34__.buildNameColumn)('Name', 'Id', 'portainer.teams.team')];\nfunction TeamsDatatable(_ref) {\n  var teams = _ref.teams,\n      isAdmin = _ref.isAdmin;\n\n  var _useRemoveMutation = useRemoveMutation(),\n      handleRemove = _useRemoveMutation.handleRemove;\n\n  var _useSearchBarState = (0,_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_29__.useSearchBarState)(tableKey),\n      _useSearchBarState2 = _slicedToArray(_useSearchBarState, 2),\n      searchBarValue = _useSearchBarState2[0],\n      setSearchBarValue = _useSearchBarState2[1];\n\n  var _useTableSettings = (0,_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_32__.useTableSettings)(),\n      settings = _useTableSettings.settings,\n      setTableSettings = _useTableSettings.setTableSettings;\n\n  var _useTable = (0,react_table__WEBPACK_IMPORTED_MODULE_19__.useTable)({\n    defaultCanFilter: false,\n    columns: columns,\n    data: teams,\n    initialState: {\n      pageSize: settings.pageSize || 10,\n      sortBy: [settings.sortBy],\n      globalFilter: searchBarValue\n    },\n    selectCheckboxComponent: _form_components_Checkbox__WEBPACK_IMPORTED_MODULE_26__.Checkbox\n  }, react_table__WEBPACK_IMPORTED_MODULE_19__.useGlobalFilter, react_table__WEBPACK_IMPORTED_MODULE_19__.useSortBy, react_table__WEBPACK_IMPORTED_MODULE_19__.usePagination, react_table__WEBPACK_IMPORTED_MODULE_19__.useRowSelect, isAdmin ? _lineup_lite_hooks__WEBPACK_IMPORTED_MODULE_36__.useRowSelectColumn : emptyPlugin),\n      getTableProps = _useTable.getTableProps,\n      getTableBodyProps = _useTable.getTableBodyProps,\n      headerGroups = _useTable.headerGroups,\n      page = _useTable.page,\n      prepareRow = _useTable.prepareRow,\n      selectedFlatRows = _useTable.selectedFlatRows,\n      gotoPage = _useTable.gotoPage,\n      setPageSize = _useTable.setPageSize,\n      setGlobalFilter = _useTable.setGlobalFilter,\n      _useTable$state = _useTable.state,\n      pageIndex = _useTable$state.pageIndex,\n      pageSize = _useTable$state.pageSize;\n\n  var tableProps = getTableProps();\n  var tbodyProps = getTableBodyProps();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n    className: \"row\",\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"div\", {\n      className: \"col-sm-12\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table.Container, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table.Title, {\n          icon: react_feather__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n          label: \"\\u56E2\\u961F\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables_SearchBar__WEBPACK_IMPORTED_MODULE_29__.SearchBar, {\n            value: searchBarValue,\n            onChange: handleSearchBarChange\n          }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table.Actions, {\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_28__.Button, {\n              color: \"dangerlight\",\n              onClick: handleRemoveClick,\n              disabled: selectedFlatRows.length === 0,\n              icon: react_feather__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n              children: \"\\u5220\\u9664\"\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table, {\n          className: tableProps.className,\n          role: tableProps.role,\n          style: tableProps.style,\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"thead\", {\n            children: headerGroups.map(function (headerGroup) {\n              var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),\n                  key = _headerGroup$getHeade.key,\n                  className = _headerGroup$getHeade.className,\n                  role = _headerGroup$getHeade.role,\n                  style = _headerGroup$getHeade.style;\n\n              return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table.HeaderRow, {\n                className: className,\n                role: role,\n                style: style,\n                headers: headerGroup.headers,\n                onSortChange: handleSortChange\n              }, key);\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(\"tbody\", {\n            className: tbodyProps.className,\n            role: tbodyProps.role,\n            style: tbodyProps.style,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables_TableContent__WEBPACK_IMPORTED_MODULE_33__.TableContent, {\n              prepareRow: prepareRow,\n              renderRow: function renderRow(row, _ref2) {\n                var key = _ref2.key,\n                    className = _ref2.className,\n                    role = _ref2.role,\n                    style = _ref2.style;\n                return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables__WEBPACK_IMPORTED_MODULE_27__.Table.Row, {\n                  cells: row.cells,\n                  className: className,\n                  role: role,\n                  style: style\n                }, key);\n              },\n              rows: page,\n              emptyContent: \"\\u672A\\u627E\\u5230\\u56E2\\u961F\"\n            })\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsxs)(_datatables_TableFooter__WEBPACK_IMPORTED_MODULE_30__.TableFooter, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables_SelectedRowsCount__WEBPACK_IMPORTED_MODULE_31__.SelectedRowsCount, {\n            value: selectedFlatRows.length\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_PaginationControls__WEBPACK_IMPORTED_MODULE_25__.PaginationControls, {\n            showAll: true,\n            pageLimit: pageSize,\n            page: pageIndex + 1,\n            onPageChange: function onPageChange(p) {\n              return gotoPage(p - 1);\n            },\n            totalCount: teams.length,\n            onPageLimitChange: handlePageSizeChange\n          })]\n        })]\n      })\n    })\n  });\n\n  function handlePageSizeChange(pageSize) {\n    setPageSize(pageSize);\n    setTableSettings({\n      pageSize: pageSize\n    });\n  }\n\n  function handleSearchBarChange(value) {\n    setSearchBarValue(value);\n    setGlobalFilter(value);\n  }\n\n  function handleSortChange(id, desc) {\n    setTableSettings({\n      sortBy: {\n        id: id,\n        desc: desc\n      }\n    });\n  }\n\n  function handleRemoveClick() {\n    var ids = selectedFlatRows.map(function (row) {\n      return row.original.Id;\n    });\n    handleRemove(ids);\n  }\n}\nvar defaultSettings = {\n  pageSize: 10,\n  sortBy: {\n    id: 'name',\n    desc: false\n  }\n};\nfunction TeamsDatatableContainer(props) {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(_datatables_useTableSettings__WEBPACK_IMPORTED_MODULE_32__.TableSettingsProvider, {\n    defaults: defaultSettings,\n    storageKey: tableKey,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_35__.jsx)(TeamsDatatable, _objectSpread({}, props))\n  });\n}\n\nfunction useRemoveMutation() {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_20__.useQueryClient)();\n  var deleteMutation = (0,react_query__WEBPACK_IMPORTED_MODULE_20__.useMutation)( /*#__PURE__*/function () {\n    var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(ids) {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              return _context.abrupt(\"return\", (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_22__.promiseSequence)(ids.map(function (id) {\n                return function () {\n                  return (0,_react_portainer_users_teams_teams_service__WEBPACK_IMPORTED_MODULE_23__.deleteTeam)(id);\n                };\n              })));\n\n            case 1:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n\n    return function (_x) {\n      return _ref3.apply(this, arguments);\n    };\n  }(), {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to remove team'\n      }\n    },\n    onSuccess: function onSuccess() {\n      return queryClient.invalidateQueries(['teams']);\n    }\n  });\n  return {\n    handleRemove: handleRemove\n  };\n\n  function handleRemove(_x2) {\n    return _handleRemove.apply(this, arguments);\n  }\n\n  function _handleRemove() {\n    _handleRemove = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(teams) {\n      var confirmed;\n      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.next = 2;\n              return (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_24__.confirmDeletionAsync)('Are you sure you want to remove the selected teams?');\n\n            case 2:\n              confirmed = _context2.sent;\n\n              if (confirmed) {\n                _context2.next = 5;\n                break;\n              }\n\n              return _context2.abrupt(\"return\");\n\n            case 5:\n              deleteMutation.mutate(teams, {\n                onSuccess: function onSuccess() {\n                  (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifySuccess)('Teams successfully removed', '');\n                }\n              });\n\n            case 6:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2);\n    }));\n    return _handleRemove.apply(this, arguments);\n  }\n}\n\nfunction emptyPlugin() {}\n\nemptyPlugin.pluginName = 'emptyPlugin';//# sourceURL=webpack-internal:///72964\n");

}),

45834:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ListView": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_0__.ListView; }
/* harmony export */ });
/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListView */ 49281);


}),

93494:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ItemView\": function() { return /* reexport safe */ _ItemView__WEBPACK_IMPORTED_MODULE_0__.ItemView; },\n/* harmony export */   \"ListView\": function() { return /* reexport safe */ _ListView__WEBPACK_IMPORTED_MODULE_1__.ListView; }\n/* harmony export */ });\n/* harmony import */ var _ItemView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ItemView */ 82147);\n/* harmony import */ var _ListView__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ListView */ 45834);\n\n//# sourceURL=webpack-internal:///93494\n");

}),

74050:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useTeams\": function() { return /* binding */ useTeams; },\n/* harmony export */   \"useTeam\": function() { return /* binding */ useTeam; },\n/* harmony export */   \"useTeamMemberships\": function() { return /* binding */ useTeamMemberships; },\n/* harmony export */   \"useAddMemberMutation\": function() { return /* binding */ useAddMemberMutation; },\n/* harmony export */   \"useRemoveMemberMutation\": function() { return /* binding */ useRemoveMemberMutation; },\n/* harmony export */   \"useUpdateRoleMutation\": function() { return /* binding */ useUpdateRoleMutation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ 78495);\n/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var _portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/helpers/promise-utils */ 19990);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _team_membership_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./team-membership.service */ 12613);\n/* harmony import */ var _teams_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./teams.service */ 67826);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./types */ 43247);\n\n\n\n\n\n\n\n\n\nfunction useTeams() {\n  var onlyLedTeams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  var environmentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref$enabled = _ref.enabled,\n      enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n      _ref$select = _ref.select,\n      select = _ref$select === void 0 ? function (data) {\n    return data;\n  } : _ref$select;\n\n  var teams = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['teams', {\n    onlyLedTeams: onlyLedTeams,\n    environmentId: environmentId\n  }], function () {\n    return (0,_teams_service__WEBPACK_IMPORTED_MODULE_7__.getTeams)(onlyLedTeams, environmentId);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to load teams'\n      }\n    },\n    enabled: enabled,\n    select: select\n  });\n  return teams;\n}\nfunction useTeam(id, onError) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['teams', id], function () {\n    return (0,_teams_service__WEBPACK_IMPORTED_MODULE_7__.getTeam)(id);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to load team'\n      }\n    },\n    onError: onError\n  });\n}\nfunction useTeamMemberships(id) {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQuery)(['teams', id, 'memberships'], function () {\n    return (0,_teams_service__WEBPACK_IMPORTED_MODULE_7__.getTeamMemberships)(id);\n  }, {\n    meta: {\n      error: {\n        title: 'Failure',\n        message: 'Unable to load team memberships'\n      }\n    }\n  });\n}\nfunction useAddMemberMutation(teamId) {\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useMutation)(function (userIds) {\n    return (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_4__.promiseSequence)(userIds.map(function (userId) {\n      return function () {\n        return (0,_team_membership_service__WEBPACK_IMPORTED_MODULE_6__.createTeamMembership)(userId, teamId, _types__WEBPACK_IMPORTED_MODULE_8__.TeamRole.Member);\n      };\n    }));\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.notifyError)('Failure', error, 'Failure to add membership');\n    },\n    onSuccess: function onSuccess() {\n      return queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n    }\n  });\n}\nfunction useRemoveMemberMutation(teamId) {\n  var teamMemberships = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useMutation)(function (userIds) {\n    return (0,_portainer_helpers_promise_utils__WEBPACK_IMPORTED_MODULE_4__.promiseSequence)(userIds.map(function (userId) {\n      return function () {\n        var membership = teamMemberships.find(function (membership) {\n          return membership.UserID === userId;\n        });\n\n        if (!membership) {\n          throw new Error('Membership not found');\n        }\n\n        return (0,_team_membership_service__WEBPACK_IMPORTED_MODULE_6__.deleteTeamMembership)(membership.Id);\n      };\n    }));\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.notifyError)('Failure', error, 'Failure to add membership');\n    },\n    onSuccess: function onSuccess() {\n      queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n    }\n  });\n}\nfunction useUpdateRoleMutation(teamId) {\n  var teamMemberships = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)();\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useMutation)(function (_ref2) {\n    var userId = _ref2.userId,\n        role = _ref2.role;\n    var membership = teamMemberships.find(function (membership) {\n      return membership.UserID === userId;\n    });\n\n    if (!membership) {\n      throw new Error('Membership not found');\n    }\n\n    return (0,_team_membership_service__WEBPACK_IMPORTED_MODULE_6__.updateTeamMembership)(membership.Id, userId, teamId, role);\n  }, {\n    onError: function onError(error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_5__.notifyError)('Failure', error, 'Failure to update membership');\n    },\n    onSuccess: function onSuccess() {\n      queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n    }\n  });\n}//# sourceURL=webpack-internal:///74050\n");

}),

12613:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createTeamMembership\": function() { return /* binding */ createTeamMembership; },\n/* harmony export */   \"deleteTeamMembership\": function() { return /* binding */ deleteTeamMembership; },\n/* harmony export */   \"updateTeamMembership\": function() { return /* binding */ updateTeamMembership; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\nfunction createTeamMembership(_x, _x2, _x3) {\n  return _createTeamMembership.apply(this, arguments);\n}\n\nfunction _createTeamMembership() {\n  _createTeamMembership = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(userId, teamId, role) {\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.prev = 0;\n            _context.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].post(buildUrl(), {\n              userId: userId,\n              teamId: teamId,\n              role: role\n            });\n\n          case 3:\n            _context.next = 8;\n            break;\n\n          case 5:\n            _context.prev = 5;\n            _context.t0 = _context[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context.t0, 'Unable to create team membership');\n\n          case 8:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[0, 5]]);\n  }));\n  return _createTeamMembership.apply(this, arguments);\n}\n\nfunction deleteTeamMembership(_x4) {\n  return _deleteTeamMembership.apply(this, arguments);\n}\n\nfunction _deleteTeamMembership() {\n  _deleteTeamMembership = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(id) {\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"][\"delete\"](buildUrl(id));\n\n          case 3:\n            _context2.next = 8;\n            break;\n\n          case 5:\n            _context2.prev = 5;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context2.t0, 'Unable to delete team membership');\n\n          case 8:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 5]]);\n  }));\n  return _deleteTeamMembership.apply(this, arguments);\n}\n\nfunction updateTeamMembership(_x5, _x6, _x7, _x8) {\n  return _updateTeamMembership.apply(this, arguments);\n}\n\nfunction _updateTeamMembership() {\n  _updateTeamMembership = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(id, userId, teamId, role) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__[\"default\"].put(buildUrl(id), {\n              userId: userId,\n              teamId: teamId,\n              role: role\n            });\n\n          case 3:\n            _context3.next = 8;\n            break;\n\n          case 5:\n            _context3.prev = 5;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_3__.parseAxiosError)(_context3.t0, 'Unable to update team membership');\n\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 5]]);\n  }));\n  return _updateTeamMembership.apply(this, arguments);\n}\n\nfunction buildUrl(id) {\n  var url = '/team_memberships';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///12613\n");

}),

67826:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTeams\": function() { return /* binding */ getTeams; },\n/* harmony export */   \"getTeam\": function() { return /* binding */ getTeam; },\n/* harmony export */   \"deleteTeam\": function() { return /* binding */ deleteTeam; },\n/* harmony export */   \"createTeam\": function() { return /* binding */ createTeam; },\n/* harmony export */   \"getTeamMemberships\": function() { return /* binding */ getTeamMemberships; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ 40958);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.promise.js */ 50527);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n/* harmony import */ var _team_membership_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./team-membership.service */ 12613);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./types */ 43247);\n\n\n\n\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\nfunction getTeams() {\n  return _getTeams.apply(this, arguments);\n}\n\nfunction _getTeams() {\n  _getTeams = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n    var onlyLedTeams,\n        environmentId,\n        _yield$axios$get,\n        data,\n        _args = arguments;\n\n    return regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            onlyLedTeams = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n            environmentId = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;\n            _context.prev = 2;\n            _context.next = 5;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"].get(buildUrl(), {\n              params: {\n                onlyLedTeams: onlyLedTeams,\n                environmentId: environmentId\n              }\n            });\n\n          case 5:\n            _yield$axios$get = _context.sent;\n            data = _yield$axios$get.data;\n            return _context.abrupt(\"return\", data);\n\n          case 10:\n            _context.prev = 10;\n            _context.t0 = _context[\"catch\"](2);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context.t0);\n\n          case 13:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[2, 10]]);\n  }));\n  return _getTeams.apply(this, arguments);\n}\n\nfunction getTeam(_x) {\n  return _getTeam.apply(this, arguments);\n}\n\nfunction _getTeam() {\n  _getTeam = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(id) {\n    var _yield$axios$get2, data;\n\n    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.prev = 0;\n            _context2.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"].get(buildUrl(id));\n\n          case 3:\n            _yield$axios$get2 = _context2.sent;\n            data = _yield$axios$get2.data;\n            return _context2.abrupt(\"return\", data);\n\n          case 8:\n            _context2.prev = 8;\n            _context2.t0 = _context2[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context2.t0);\n\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2, null, [[0, 8]]);\n  }));\n  return _getTeam.apply(this, arguments);\n}\n\nfunction deleteTeam(_x2) {\n  return _deleteTeam.apply(this, arguments);\n}\n\nfunction _deleteTeam() {\n  _deleteTeam = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(id) {\n    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            _context3.prev = 0;\n            _context3.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"][\"delete\"](buildUrl(id));\n\n          case 3:\n            _context3.next = 8;\n            break;\n\n          case 5:\n            _context3.prev = 5;\n            _context3.t0 = _context3[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context3.t0);\n\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[0, 5]]);\n  }));\n  return _deleteTeam.apply(this, arguments);\n}\n\nfunction createTeam(_x3, _x4) {\n  return _createTeam.apply(this, arguments);\n}\n\nfunction _createTeam() {\n  _createTeam = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(name, leaders) {\n    var _yield$axios$post, team;\n\n    return regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            _context4.prev = 0;\n            _context4.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"].post(buildUrl(), {\n              name: name\n            });\n\n          case 3:\n            _yield$axios$post = _context4.sent;\n            team = _yield$axios$post.data;\n            _context4.next = 7;\n            return Promise.all(leaders.map(function (leaderId) {\n              return (0,_team_membership_service__WEBPACK_IMPORTED_MODULE_8__.createTeamMembership)(leaderId, team.Id, _types__WEBPACK_IMPORTED_MODULE_9__.TeamRole.Leader);\n            }));\n\n          case 7:\n            _context4.next = 12;\n            break;\n\n          case 9:\n            _context4.prev = 9;\n            _context4.t0 = _context4[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context4.t0, 'Unable to create team');\n\n          case 12:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4, null, [[0, 9]]);\n  }));\n  return _createTeam.apply(this, arguments);\n}\n\nfunction getTeamMemberships(_x5) {\n  return _getTeamMemberships.apply(this, arguments);\n}\n\nfunction _getTeamMemberships() {\n  _getTeamMemberships = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(teamId) {\n    var _yield$axios$get3, data;\n\n    return regeneratorRuntime.wrap(function _callee5$(_context5) {\n      while (1) {\n        switch (_context5.prev = _context5.next) {\n          case 0:\n            _context5.prev = 0;\n            _context5.next = 3;\n            return _portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__[\"default\"].get(buildUrl(teamId, 'memberships'));\n\n          case 3:\n            _yield$axios$get3 = _context5.sent;\n            data = _yield$axios$get3.data;\n            return _context5.abrupt(\"return\", data);\n\n          case 8:\n            _context5.prev = 8;\n            _context5.t0 = _context5[\"catch\"](0);\n            throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_7__.parseAxiosError)(_context5.t0, 'Unable to get team memberships');\n\n          case 11:\n          case \"end\":\n            return _context5.stop();\n        }\n      }\n    }, _callee5, null, [[0, 8]]);\n  }));\n  return _getTeamMemberships.apply(this, arguments);\n}\n\nfunction buildUrl(id, action) {\n  var url = '/teams';\n\n  if (id) {\n    url += \"/\".concat(id);\n  }\n\n  if (action) {\n    url += \"/\".concat(action);\n  }\n\n  return url;\n}//# sourceURL=webpack-internal:///67826\n");

}),

43247:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamRole\": function() { return /* binding */ TeamRole; }\n/* harmony export */ });\nvar TeamRole;\n\n(function (TeamRole) {\n  TeamRole[TeamRole[\"Leader\"] = 1] = \"Leader\";\n  TeamRole[TeamRole[\"Member\"] = 2] = \"Member\";\n})(TeamRole || (TeamRole = {}));//# sourceURL=webpack-internal:///43247\n");

}),

67234:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AzureSidebar\": function() { return /* binding */ AzureSidebar; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 15638);\n/* harmony import */ var _items_DashboardLink__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../items/DashboardLink */ 52454);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarItem */ 47503);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\nfunction AzureSidebar(_ref) {\n  var environmentId = _ref.environmentId;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_items_DashboardLink__WEBPACK_IMPORTED_MODULE_0__.DashboardLink, {\n      environmentId: environmentId,\n      platformPath: \"azure\",\n      \"data-cy\": \"azureSidebar-dashboard\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_1__.SidebarItem, {\n      to: \"azure.containerinstances\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      label: \"Container instances\",\n      \"data-cy\": \"azureSidebar-containerInstances\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///67234\n");

}),

38196:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AzureSidebar": function() { return /* reexport safe */ _AzureSidebar__WEBPACK_IMPORTED_MODULE_0__.AzureSidebar; }
/* harmony export */ });
/* harmony import */ var _AzureSidebar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AzureSidebar */ 67234);


}),

8446:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DockerSidebar\": function() { return /* binding */ DockerSidebar; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-feather */ 74899);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-feather */ 6262);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-feather */ 90166);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-feather */ 15638);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-feather */ 78595);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-feather */ 13788);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-feather */ 19545);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-feather */ 32473);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-feather */ 36456);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _docker_services_system_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/docker/services/system.service */ 30788);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SidebarItem */ 47503);\n/* harmony import */ var _items_DashboardLink__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./items/DashboardLink */ 52454);\n/* harmony import */ var _items_VolumesLink__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./items/VolumesLink */ 88452);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\nfunction DockerSidebar(_ref) {\n  var environmentId = _ref.environmentId,\n      environment = _ref.environment;\n\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.useUser)(),\n      user = _useUser.user;\n\n  var isAdmin = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.isEnvironmentAdmin)(user, environmentId);\n  var areStacksVisible = isAdmin || environment.SecuritySettings.allowStackManagementForRegularUsers;\n  var envInfoQuery = (0,_docker_services_system_service__WEBPACK_IMPORTED_MODULE_2__.useInfo)(environmentId, function (info) {\n    var _info$Swarm, _info$Swarm2;\n\n    return !!((_info$Swarm = info.Swarm) !== null && _info$Swarm !== void 0 && _info$Swarm.NodeID) && !!((_info$Swarm2 = info.Swarm) !== null && _info$Swarm2 !== void 0 && _info$Swarm2.ControlAvailable);\n  });\n  var envVersionQuery = (0,_docker_services_system_service__WEBPACK_IMPORTED_MODULE_2__.useVersion)(environmentId, function (version) {\n    return parseFloat(version.ApiVersion);\n  });\n  var isSwarmManager = envInfoQuery.data;\n  var apiVersion = envVersionQuery.data || 0;\n  var offlineMode = environment.Status === _portainer_environments_types__WEBPACK_IMPORTED_MODULE_0__.EnvironmentStatus.Down;\n  var setupSubMenuProps = isSwarmManager ? {\n    label: '集群',\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    to: 'docker.swarm',\n    dataCy: 'portainerSidebar-swarm'\n  } : {\n    label: '主机',\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    to: 'docker.host',\n    dataCy: 'portainerSidebar-host'\n  };\n  var featSubMenuTo = isSwarmManager ? 'docker.swarm.featuresConfiguration' : 'docker.host.featuresConfiguration';\n  var registrySubMenuTo = isSwarmManager ? 'docker.swarm.registries' : 'docker.host.registries';\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_items_DashboardLink__WEBPACK_IMPORTED_MODULE_4__.DashboardLink, {\n      environmentId: environmentId,\n      platformPath: \"docker\",\n      \"data-cy\": \"dockerSidebar-dashboard\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      label: \"\\u5E94\\u7528\\u7A0B\\u5E8F\\u6A21\\u677F\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n      to: \"docker.templates\",\n      params: {\n        endpointId: environmentId\n      },\n      \"data-cy\": \"portainerSidebar-appTemplates\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n        label: \"\\u81EA\\u5B9A\\u4E49\\u6A21\\u677F\",\n        to: \"docker.templates.custom\",\n        params: {\n          endpointId: environmentId\n        },\n        \"data-cy\": \"dockerSidebar-customTemplates\"\n      })\n    }), areStacksVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.stacks\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n      label: \"\\u5806\\u6808\",\n      \"data-cy\": \"dockerSidebar-stacks\"\n    }), isSwarmManager && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.services\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n      label: \"\\u670D\\u52A1\",\n      \"data-cy\": \"dockerSidebar-services\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.containers\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n      label: \"\\u5BB9\\u5668\",\n      \"data-cy\": \"dockerSidebar-containers\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.images\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n      label: \"\\u955C\\u50CF\",\n      \"data-cy\": \"dockerSidebar-images\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.networks\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n      label: \"\\u7F51\\u7EDC\",\n      \"data-cy\": \"dockerSidebar-networks\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_items_VolumesLink__WEBPACK_IMPORTED_MODULE_5__.VolumesLink, {\n      environmentId: environmentId,\n      platformPath: \"docker\",\n      \"data-cy\": \"dockerSidebar-volumes\"\n    }), apiVersion >= 1.3 && isSwarmManager && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.configs\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n      label: \"\\u914D\\u7F6E\",\n      \"data-cy\": \"dockerSidebar-configs\"\n    }), apiVersion >= 1.25 && isSwarmManager && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.secrets\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n      label: \"\\u673A\\u5BC6\",\n      \"data-cy\": \"dockerSidebar-secrets\"\n    }), !isSwarmManager && isAdmin && !offlineMode && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      to: \"docker.events\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n      label: \"\\u4E8B\\u4EF6\",\n      \"data-cy\": \"dockerSidebar-events\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n      label: setupSubMenuProps.label,\n      icon: setupSubMenuProps.icon,\n      to: setupSubMenuProps.to,\n      params: {\n        endpointId: environmentId\n      },\n      \"data-cy\": setupSubMenuProps.dataCy,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.Authorized, {\n        authorizations: \"PortainerEndpointUpdateSettings\",\n        adminOnlyCE: true,\n        environmentId: environmentId,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n          to: featSubMenuTo,\n          params: {\n            endpointId: environmentId\n          },\n          label: \"\\u8BBE\\u7F6E\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_3__.SidebarItem, {\n        to: registrySubMenuTo,\n        params: {\n          endpointId: environmentId\n        },\n        label: \"\\u6CE8\\u518C\\u8868\"\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///8446\n");

}),

40674:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeComputeSidebar\": function() { return /* binding */ EdgeComputeSidebar; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-feather */ 15638);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 17790);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 6262);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 36456);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SidebarItem */ 47503);\n/* harmony import */ var _SidebarSection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarSection */ 43353);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\nfunction EdgeComputeSidebar() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_SidebarSection__WEBPACK_IMPORTED_MODULE_1__.SidebarSection, {\n    title: \"Edge compute\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n      to: \"edge.devices\",\n      label: \"Edge Devices\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      \"data-cy\": \"portainerSidebar-edgeDevices\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n      to: \"edge.groups\",\n      label: \"Edge Groups\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n      \"data-cy\": \"portainerSidebar-edgeGroups\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n      to: \"edge.stacks\",\n      label: \"Edge Stacks\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      \"data-cy\": \"portainerSidebar-edgeStacks\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n      to: \"edge.jobs\",\n      label: \"Edge Jobs\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n      \"data-cy\": \"portainerSidebar-edgeJobs\"\n    })]\n  });\n}//# sourceURL=webpack-internal:///40674\n");

}),

2426:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnvironmentSidebar\": function() { return /* binding */ EnvironmentSidebar; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.is-nan.js */ 36554);\n/* harmony import */ var core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_is_nan_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ 15363);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! react-feather */ 19937);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! react-feather */ 14434);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _portainer_environments_queries_useEnvironment__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/portainer/environments/queries/useEnvironment */ 29765);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _portainer_environments_utils_get_platform_icon__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../portainer/environments/utils/get-platform-icon */ 58768);\n/* harmony import */ var _EnvironmentSidebar_module_css__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./EnvironmentSidebar.module.css */ 71609);\n/* harmony import */ var _AzureSidebar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./AzureSidebar */ 38196);\n/* harmony import */ var _DockerSidebar__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./DockerSidebar */ 8446);\n/* harmony import */ var _KubernetesSidebar__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./KubernetesSidebar */ 24602);\n/* harmony import */ var _SidebarSection__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./SidebarSection */ 43353);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./useSidebarState */ 48322);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EnvironmentSidebar() {\n  var _useCurrentEnvironmen = useCurrentEnvironment(),\n      currentEnvironmentQuery = _useCurrentEnvironmen.query,\n      clearEnvironment = _useCurrentEnvironmen.clearEnvironment;\n\n  var environment = currentEnvironmentQuery.data;\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_27__.useSidebarState)(),\n      isOpen = _useSidebarState.isOpen;\n\n  if (!isOpen && !environment) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_EnvironmentSidebar_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].root, 'rounded border border-dotted py-2'),\n    children: environment ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(Content, {\n      environment: environment,\n      onClear: clearEnvironment\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_SidebarSection__WEBPACK_IMPORTED_MODULE_26__.SidebarSectionTitle, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"div\", {\n        className: \"flex items-center gap-1\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"span\", {\n          children: \"\\u73AF\\u5883:\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_29__[\"default\"], {\n          size: \"1em\",\n          className: \"text-xl text-gray-6\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"span\", {\n          className: \"text-gray-6 text-sm\",\n          children: \"\\u672A\\u9009\\u62E9\"\n        })]\n      })\n    })\n  });\n}\n\nfunction Content(_ref) {\n  var environment = _ref.environment,\n      onClear = _ref.onClear;\n  var platform = (0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_18__.getPlatformType)(environment.Type);\n  var Sidebar = getSidebar(platform);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(_SidebarSection__WEBPACK_IMPORTED_MODULE_26__.SidebarSection, {\n    title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(Title, {\n      environment: environment,\n      onClear: onClear\n    }),\n    \"aria-label\": environment.Name,\n    showTitleWhenOpen: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n      className: \"mt-2\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(Sidebar, {\n        environmentId: environment.Id,\n        environment: environment\n      })\n    })\n  });\n\n  function getSidebar(platform) {\n    var _sidebar;\n\n    var sidebar = (_sidebar = {}, _defineProperty(_sidebar, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_17__.PlatformType.Azure, _AzureSidebar__WEBPACK_IMPORTED_MODULE_23__.AzureSidebar), _defineProperty(_sidebar, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_17__.PlatformType.Docker, _DockerSidebar__WEBPACK_IMPORTED_MODULE_24__.DockerSidebar), _defineProperty(_sidebar, _portainer_environments_types__WEBPACK_IMPORTED_MODULE_17__.PlatformType.Kubernetes, _KubernetesSidebar__WEBPACK_IMPORTED_MODULE_25__.KubernetesSidebar), _sidebar);\n    return sidebar[platform];\n  }\n}\n\nfunction useCurrentEnvironment() {\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_13__.useCurrentStateAndParams)(),\n      params = _useCurrentStateAndPa.params;\n\n  var router = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_13__.useRouter)();\n\n  var _useLocalStorage = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_20__.useLocalStorage)('environmentId', undefined, sessionStorage),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),\n      environmentId = _useLocalStorage2[0],\n      setEnvironmentId = _useLocalStorage2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_14__.useEffect)(function () {\n    var environmentId = parseInt(params.endpointId, 10);\n\n    if (params.endpointId && !Number.isNaN(environmentId)) {\n      setEnvironmentId(environmentId);\n    }\n  }, [params.endpointId, setEnvironmentId]);\n  return {\n    query: (0,_portainer_environments_queries_useEnvironment__WEBPACK_IMPORTED_MODULE_19__.useEnvironment)(environmentId),\n    clearEnvironment: clearEnvironment\n  };\n\n  function clearEnvironment() {\n    var $injector = angular__WEBPACK_IMPORTED_MODULE_16___default().element(document).injector();\n    $injector.invoke(\n    /* @ngInject */\n    [\"EndpointProvider\", function (EndpointProvider) {\n      EndpointProvider.setCurrentEndpoint(undefined);\n\n      if (!params.endpointId) {\n        document.title = 'Portainer';\n      }\n    }]);\n\n    if (params.endpointId) {\n      router.stateService.go('portainer.home');\n    }\n\n    setEnvironmentId(undefined);\n  }\n}\n\nfunction Title(_ref2) {\n  var environment = _ref2.environment,\n      onClear = _ref2.onClear;\n\n  var _useSidebarState2 = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_27__.useSidebarState)(),\n      isOpen = _useSidebarState2.isOpen;\n\n  var EnvironmentIcon = (0,_portainer_environments_utils_get_platform_icon__WEBPACK_IMPORTED_MODULE_21__.getPlatformIcon)(environment.Type);\n\n  if (!isOpen) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"div\", {\n      className: \"w-8 flex justify-center -ml-3\",\n      title: environment.Name,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(EnvironmentIcon, {\n        className: \"text-2xl\"\n      })\n    });\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsxs)(\"div\", {\n    className: \"flex items-center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(EnvironmentIcon, {\n      className: \"text-2xl mr-3\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"span\", {\n      className: \"text-white text-ellipsis overflow-hidden whitespace-nowrap\",\n      children: environment.Name\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(\"button\", {\n      title: \"Clear environment\",\n      type: \"button\",\n      onClick: onClear,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_EnvironmentSidebar_module_css__WEBPACK_IMPORTED_MODULE_22__[\"default\"].closeBtn, 'flex items-center justify-center transition-colors duration-200 rounded border-0 text-sm h-5 w-5 p-1 ml-auto mr-2 text-gray-5 be:text-gray-6 hover:text-white be:hover:text-white'),\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_28__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {})\n    })]\n  });\n}//# sourceURL=webpack-internal:///2426\n");

}),

87955:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BuildInfoModalButton\": function() { return /* binding */ BuildInfoModalButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-feather */ 43803);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 87147);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-feather */ 3180);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-feather */ 51355);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react-feather */ 80291);\n/* harmony import */ var _reach_dialog__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @reach/dialog */ 34460);\n/* harmony import */ var _portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/services/api/status.service */ 9251);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Footer_module_css__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Footer.module.css */ 47491);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\nfunction BuildInfoModalButton() {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isBuildInfoVisible = _useState2[0],\n      setIsBuildInfoVisible = _useState2[1];\n\n  var statusQuery = (0,_portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_12__.useStatus)();\n\n  if (!statusQuery.data) {\n    return null;\n  }\n\n  var Version = statusQuery.data.Version;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"button\", {\n      type: \"button\",\n      \"data-cy\": \"portainerSidebar-versionNumber\",\n      className: \"btn-none\",\n      onClick: function onClick() {\n        return setIsBuildInfoVisible(true);\n      },\n      children: Version\n    }), isBuildInfoVisible && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(BuildInfoModal, {\n      closeModal: function closeModal() {\n        return setIsBuildInfoVisible(false);\n      }\n    })]\n  });\n}\n\nfunction BuildInfoModal(_ref) {\n  var closeModal = _ref.closeModal;\n  var versionQuery = (0,_portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_12__.useVersionStatus)();\n  var statusQuery = (0,_portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_12__.useStatus)();\n\n  if (!statusQuery.data || !versionQuery.data) {\n    return null;\n  }\n\n  var Edition = statusQuery.data.Edition;\n  var _versionQuery$data = versionQuery.data,\n      ServerVersion = _versionQuery$data.ServerVersion,\n      DatabaseVersion = _versionQuery$data.DatabaseVersion,\n      Build = _versionQuery$data.Build;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_reach_dialog__WEBPACK_IMPORTED_MODULE_16__.DialogOverlay, {\n    className: _Footer_module_css__WEBPACK_IMPORTED_MODULE_14__[\"default\"].dialog,\n    isOpen: true,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n      className: \"modal-dialog\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n        className: \"modal-content\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n          className: \"modal-header\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"button\", {\n            type: \"button\",\n            className: \"close\",\n            onClick: closeModal,\n            children: \"\\xD7\"\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"h5\", {\n            className: \"modal-title\",\n            children: [\"Portainer \", Edition]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n          className: \"modal-body\",\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n            className: _Footer_module_css__WEBPACK_IMPORTED_MODULE_14__[\"default\"].versionInfo,\n            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"table\", {\n              children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"tbody\", {\n                children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"tr\", {\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"td\", {\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                      className: \"inline-flex items-center\",\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n                        size: \"13\",\n                        className: \"space-right\"\n                      }), \"Server Version: \", ServerVersion]\n                    })\n                  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"td\", {\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                      className: \"inline-flex items-center\",\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n                        size: \"13\",\n                        className: \"space-right\"\n                      }), \"Database Version: \", DatabaseVersion]\n                    })\n                  })]\n                }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"tr\", {\n                  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"td\", {\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                      className: \"inline-flex items-center\",\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n                        size: \"13\",\n                        className: \"space-right\"\n                      }), \"CI Build Number: \", Build.BuildNumber]\n                    })\n                  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"td\", {\n                    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n                        size: \"13\",\n                        className: \"space-right\"\n                      }), \"Image Tag: \", Build.ImageTag]\n                    })\n                  })]\n                })]\n              })\n            })\n          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n            className: _Footer_module_css__WEBPACK_IMPORTED_MODULE_14__[\"default\"].toolsList,\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n              className: \"inline-flex items-center\",\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n                size: \"13\",\n                className: \"space-right\"\n              }), \"Compilation tools:\"]\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"div\", {\n              className: _Footer_module_css__WEBPACK_IMPORTED_MODULE_14__[\"default\"].tools,\n              children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                className: \"text-muted small\",\n                children: [\"Nodejs v\", Build.NodejsVersion]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                className: \"text-muted small\",\n                children: [\"Yarn v\", Build.YarnVersion]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                className: \"text-muted small\",\n                children: [\"Webpack v\", Build.WebpackVersion]\n              }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"span\", {\n                className: \"text-muted small\",\n                children: [\"Go v\", Build.GoVersion]\n              })]\n            })]\n          })]\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"div\", {\n          className: \"modal-footer\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_13__.Button, {\n            className: \"bootbox-accept\",\n            onClick: closeModal,\n            children: \"Ok\"\n          })\n        })]\n      })\n    })\n  });\n}//# sourceURL=webpack-internal:///87955\n");

}),

26393:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Footer\": function() { return /* binding */ Footer; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _UpdateNotifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UpdateNotifications */ 92497);\n/* harmony import */ var _BuildInfoModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./BuildInfoModal */ 87955);\n/* harmony import */ var _reach_dialog_styles_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @reach/dialog/styles.css */ 13559);\n/* harmony import */ var _Footer_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Footer.module.css */ 47491);\n/* harmony import */ var _portainer_logo_svg_c__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./portainer_logo.svg?c */ 2857);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\nfunction Footer() {\n  return _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__.isBE ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(BEFooter, {}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(CEFooter, {});\n}\n\nfunction CEFooter() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Footer_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].root, 'text-center'),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_UpdateNotifications__WEBPACK_IMPORTED_MODULE_2__.UpdateNotification, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(FooterContent, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_portainer_logo_svg_c__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n        width: \"90px\",\n        height: \"\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"span\", {\n        children: \"\\u793E\\u533A\\u7248\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_BuildInfoModal__WEBPACK_IMPORTED_MODULE_3__.BuildInfoModalButton, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"a\", {\n        href: \"https://www.portainer.io/install-BE-now\",\n        className: \"text-blue-6 font-medium\",\n        target: \"_blank\",\n        rel: \"noreferrer\",\n        children: \"\\u5347\\u7EA7\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"a\", {\n        href: \"https://hub.docker.com/r/6053537/portainer-ce\",\n        className: \"text-blue-6 font-medium\",\n        target: \"_blank\",\n        rel: \"noreferrer\",\n        children: \"\\u6C49\\u5316\"\n      })]\n    })]\n  });\n}\n\nfunction BEFooter() {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Footer_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].root, 'text-center'),\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(FooterContent, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"span\", {\n        children: \"\\xA9\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"span\", {\n        children: \"Portainer\\u5546\\u4E1A\\u7248\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_BuildInfoModal__WEBPACK_IMPORTED_MODULE_3__.BuildInfoModalButton, {})]\n    })\n  });\n}\n\nfunction FooterContent(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n    className: \"text-[10px] space-x-1 text-gray-5 be:text-gray-6 flex items-center mx-auto justify-center\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///26393\n");

}),

92497:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UpdateNotification\": function() { return /* binding */ UpdateNotification; }\n/* harmony export */ });\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-query */ 51641);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/services/api/status.service */ 9251);\n/* harmony import */ var _portainer_hooks_useUIState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/hooks/useUIState */ 87585);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _UpdateNotifications_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./UpdateNotifications.module.css */ 32116);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction UpdateNotification() {\n  var uiStateStore = (0,_portainer_hooks_useUIState__WEBPACK_IMPORTED_MODULE_3__.useUIState)();\n  var query = useUpdateNotification();\n\n  if (!query.data || !query.data.UpdateAvailable) {\n    return null;\n  }\n\n  var LatestVersion = query.data.LatestVersion;\n\n  if (!!uiStateStore.dismissedUpdateVersion && (LatestVersion === null || LatestVersion === void 0 ? void 0 : LatestVersion.length) > 0 && uiStateStore.dismissedUpdateVersion === LatestVersion) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_UpdateNotifications_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].root, 'rounded border py-2', 'bg-blue-11 th-dark:bg-gray-warm-11', 'border-blue-9 th-dark:border-gray-warm-9'),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_UpdateNotifications_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].dismissTitle, 'vertical-center'),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_4__.Icon, {\n        icon: \"download-cloud\",\n        mode: \"primary\",\n        feather: true,\n        size: \"md\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"span\", {\n        className: \"space-left\",\n        children: [\"New version available \", LatestVersion]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_UpdateNotifications_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].actions),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"button\", {\n        type: \"button\",\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_UpdateNotifications_module_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"].dismissBtn, 'space-right'),\n        onClick: function onClick() {\n          return onDismiss(LatestVersion);\n        },\n        children: \"Dismiss\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"a\", {\n        className: \"hyperlink space-left\",\n        target: \"_blank\",\n        href: \"https://github.com/portainer/portainer/releases/tag/\".concat(LatestVersion),\n        rel: \"noreferrer\",\n        children: \"See what's new\"\n      })]\n    })]\n  });\n\n  function onDismiss(version) {\n    uiStateStore.dismissUpdateVersion(version);\n  }\n}\n\nfunction useUpdateNotification() {\n  return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(['status', 'version'], function () {\n    return (0,_portainer_services_api_status_service__WEBPACK_IMPORTED_MODULE_2__.getVersionStatus)();\n  });\n}//# sourceURL=webpack-internal:///92497\n");

}),

16256:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Footer": function() { return /* reexport safe */ _Footer__WEBPACK_IMPORTED_MODULE_0__.Footer; }
/* harmony export */ });
/* harmony import */ var _Footer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Footer */ 26393);


}),

42237:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Header\": function() { return /* binding */ Header; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-feather */ 26083);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-feather */ 77543);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _assets_ico_logomark_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/logomark.svg */ 61311);\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/Link */ 31051);\n/* harmony import */ var _portainer_logo_BE_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./portainer_logo-BE.svg */ 20739);\n/* harmony import */ var _portainer_logo_CE_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./portainer_logo-CE.svg */ 66606);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./useSidebarState */ 48322);\n/* harmony import */ var _Header_module_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Header.module.css */ 29196);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nfunction Header(_ref) {\n  var customLogo = _ref.logo;\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_6__.useSidebarState)(),\n      toggle = _useSidebarState.toggle,\n      isOpen = _useSidebarState.isOpen;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n    className: \"flex\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Link__WEBPACK_IMPORTED_MODULE_3__.Link, {\n        to: \"portainer.home\",\n        \"data-cy\": \"portainerSidebar-homeImage\",\n        className: \"text-2xl text-white no-underline hover:no-underline hover:text-white focus:no-underline focus:text-white focus:outline-none\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(Logo, {\n          customLogo: customLogo,\n          isOpen: isOpen\n        })\n      }), isOpen && customLogo && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('uppercase text-[9.4px] space-x-1 tracking-[.28em] pt-3', 'text-gray-3', 'th-dark:text-gray-warm-6'),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"span\", {\n          className: \"font-medium\",\n          children: \"Powered by\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"span\", {\n          className: \"font-semibold\",\n          children: _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__.isBE ? 'portainer business' : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"a\", {\n            href: \"https://www.portainer.io/install-BE-now\",\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('hover:underline', 'text-blue-6 hover:text-blue-8', 'th-dark:text-blue-7 th-dark:hover:text-blue-9'),\n            children: \"portainer community\"\n          })\n        })]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"button\", {\n      type: \"button\",\n      onClick: function onClick() {\n        return toggle();\n      },\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Header_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].collapseBtn, 'w-6 h-6 flex justify-center items-center border-0 rounded', 'transition-all duration-200', 'text-sm text-gray-4 be:text-gray-5 hover:text-white be:hover:text-white', 'bg-blue-11 be:bg-gray-10', 'th-dark:bg-gray-warm-11', 'absolute', {\n        '-right-[10px]': !isOpen,\n        'right-6': isOpen\n      }),\n      \"aria-label\": \"Toggle Sidebar\",\n      title: \"Toggle Sidebar\",\n      children: isOpen ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(react_feather__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {})\n    })]\n  });\n}\n\nfunction getLogo(isOpen, customLogo) {\n  if (customLogo) {\n    return customLogo;\n  }\n\n  if (!isOpen) {\n    return _assets_ico_logomark_svg__WEBPACK_IMPORTED_MODULE_2__;\n  }\n\n  return _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__.isBE ? _portainer_logo_BE_svg__WEBPACK_IMPORTED_MODULE_4__ : _portainer_logo_CE_svg__WEBPACK_IMPORTED_MODULE_5__;\n}\n\nfunction Logo(_ref2) {\n  var customLogo = _ref2.customLogo,\n      isOpen = _ref2.isOpen;\n  var logo = getLogo(isOpen, customLogo);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"img\", {\n    src: logo,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('img-responsive', _Header_module_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"].logo),\n    alt: \"Logo\"\n  });\n}//# sourceURL=webpack-internal:///42237\n");

}),

23415:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubeCtlShell\": function() { return /* binding */ KubeCtlShell; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59886);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 99230);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ 40443);\n/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! xterm */ 96049);\n/* harmony import */ var xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! xterm/lib/addons/fit/fit */ 13501);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n/* harmony import */ var _portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @/portainer/services/terminal-window */ 42491);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./KubectlShell.module.css */ 15777);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction KubeCtlShell(_ref) {\n  var environmentId = _ref.environmentId,\n      onClose = _ref.onClose;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_24__.useState)(new xterm__WEBPACK_IMPORTED_MODULE_22__.Terminal()),\n      _useState2 = _slicedToArray(_useState, 1),\n      terminal = _useState2[0];\n\n  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_24__.useState)({\n    socket: null,\n    minimized: false\n  }),\n      _useState4 = _slicedToArray(_useState3, 2),\n      shell = _useState4[0],\n      setShell = _useState4[1];\n\n  var socket = shell.socket;\n  var terminalElem = (0,react__WEBPACK_IMPORTED_MODULE_24__.useRef)(null);\n\n  var _useLocalStorage = (0,_portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_29__.useLocalStorage)('JWT', ''),\n      _useLocalStorage2 = _slicedToArray(_useLocalStorage, 1),\n      jwt = _useLocalStorage2[0];\n\n  var handleClose = (0,react__WEBPACK_IMPORTED_MODULE_24__.useCallback)(function () {\n    (0,_portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__.terminalClose)(); // only css trick\n\n    socket === null || socket === void 0 ? void 0 : socket.close();\n    terminal.dispose();\n    onClose();\n  }, [onClose, terminal, socket]);\n  var openTerminal = (0,react__WEBPACK_IMPORTED_MODULE_24__.useCallback)(function () {\n    if (!terminalElem.current) {\n      return;\n    }\n\n    terminal.open(terminalElem.current);\n    terminal.setOption('cursorBlink', true);\n    terminal.focus();\n    (0,xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_23__.fit)(terminal);\n    terminal.writeln('#Run kubectl commands inside here');\n    terminal.writeln('#e.g. kubectl get all');\n    terminal.writeln('');\n  }, [terminal]); // refresh socket listeners on socket updates\n\n  (0,react__WEBPACK_IMPORTED_MODULE_24__.useEffect)(function () {\n    if (!socket) {\n      return function () {};\n    }\n\n    function onOpen() {\n      openTerminal();\n    }\n\n    function onMessage(e) {\n      terminal.write(e.data);\n    }\n\n    function onClose() {\n      handleClose();\n    }\n\n    function onError(e) {\n      handleClose();\n\n      if ((socket === null || socket === void 0 ? void 0 : socket.readyState) !== WebSocket.CLOSED) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_28__.error)('Failure', e, 'Websocket connection error');\n      }\n    }\n\n    socket.addEventListener('open', onOpen);\n    socket.addEventListener('message', onMessage);\n    socket.addEventListener('close', onClose);\n    socket.addEventListener('error', onError);\n    return function () {\n      socket.removeEventListener('open', onOpen);\n      socket.removeEventListener('message', onMessage);\n      socket.removeEventListener('close', onClose);\n      socket.removeEventListener('error', onError);\n    };\n  }, [handleClose, openTerminal, socket, terminal]); // on component load/destroy\n\n  (0,react__WEBPACK_IMPORTED_MODULE_24__.useEffect)(function () {\n    var socket = new WebSocket(buildUrl(jwt, environmentId));\n    setShell(function (shell) {\n      return _objectSpread(_objectSpread({}, shell), {}, {\n        socket: socket\n      });\n    });\n    terminal.onData(function (data) {\n      return socket.send(data);\n    });\n    terminal.onKey(function (_ref2) {\n      var domEvent = _ref2.domEvent;\n\n      if (domEvent.ctrlKey && domEvent.code === 'KeyD') {\n        close();\n      }\n    });\n    window.addEventListener('resize', function () {\n      return (0,_portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__.terminalResize)();\n    });\n\n    function close() {\n      socket.close();\n      terminal.dispose();\n      window.removeEventListener('resize', _portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__.terminalResize);\n    }\n\n    return close;\n  }, [environmentId, jwt, terminal]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(\"div\", {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_25__[\"default\"])(_KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].root, _defineProperty({}, _KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].minimized, shell.minimized)),\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(\"div\", {\n      className: _KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].header,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_25__[\"default\"])(_KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].title, 'vertical-center'),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_30__.Icon, {\n          icon: \"terminal\",\n          feather: true\n        }), \"kubectl shell\"]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsxs)(\"div\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_25__[\"default\"])(_KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].actions, 'space-x-8'),\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_31__.Button, {\n          color: \"link\",\n          onClick: clearScreen,\n          \"data-cy\": \"k8sShell-refreshButton\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_30__.Icon, {\n            icon: \"rotate-cw\",\n            feather: true,\n            size: \"md\"\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_31__.Button, {\n          color: \"link\",\n          onClick: toggleMinimize,\n          \"data-cy\": shell.minimized ? 'k8sShell-restore' : 'k8sShell-minimise',\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_30__.Icon, {\n            icon: shell.minimized ? 'maximize-2' : 'minimize-2',\n            feather: true,\n            size: \"md\",\n            \"data-cy\": shell.minimized ? 'k8sShell-restore' : 'k8sShell-minimise'\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_buttons__WEBPACK_IMPORTED_MODULE_31__.Button, {\n          color: \"link\",\n          onClick: handleClose,\n          \"data-cy\": \"k8sShell-closeButton\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_30__.Icon, {\n            icon: \"x\",\n            feather: true,\n            size: \"md\"\n          })\n        })]\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n      className: _KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].terminalContainer,\n      ref: terminalElem,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_33__.jsx)(\"div\", {\n        className: _KubectlShell_module_css__WEBPACK_IMPORTED_MODULE_32__[\"default\"].loadingMessage,\n        children: \"Loading Terminal...\"\n      })\n    })]\n  });\n\n  function clearScreen() {\n    terminal.clear();\n  }\n\n  function toggleMinimize() {\n    if (shell.minimized) {\n      (0,_portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__.terminalResize)();\n      setShell(function (shell) {\n        return _objectSpread(_objectSpread({}, shell), {}, {\n          minimized: false\n        });\n      });\n    } else {\n      (0,_portainer_services_terminal_window__WEBPACK_IMPORTED_MODULE_27__.terminalClose)();\n      setShell(function (shell) {\n        return _objectSpread(_objectSpread({}, shell), {}, {\n          minimized: true\n        });\n      });\n    }\n  }\n\n  function buildUrl(jwt, environmentId) {\n    var params = {\n      token: jwt,\n      endpointId: environmentId\n    };\n    var wsProtocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n    var path = \"\".concat((0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_26__.baseHref)(), \"api/websocket/kubernetes-shell\");\n    var base = path.startsWith('http') ? path.replace(/^https?:\\/\\//i, '') : window.location.host + path;\n    var queryParams = Object.entries(params).map(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n          k = _ref4[0],\n          v = _ref4[1];\n\n      return \"\".concat(k, \"=\").concat(v);\n    }).join('&');\n    return \"\".concat(wsProtocol).concat(base, \"?\").concat(queryParams);\n  }\n}//# sourceURL=webpack-internal:///23415\n");

}),

82434:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubectlShellButton\": function() { return /* binding */ KubectlShellButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-dom */ 79153);\n/* harmony import */ var _angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/angulartics.matomo/analytics-services */ 45119);\n/* harmony import */ var _buttons__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @@/buttons */ 72595);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _KubectlShell__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./KubectlShell */ 23415);\n/* harmony import */ var _KubectlShellButton_module_css__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./KubectlShellButton.module.css */ 20065);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\nfunction KubectlShellButton(_ref) {\n  var environmentId = _ref.environmentId;\n\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      open = _useState2[0],\n      setOpen = _useState2[1];\n\n  var _useAnalytics = (0,_angulartics_matomo_analytics_services__WEBPACK_IMPORTED_MODULE_14__.useAnalytics)(),\n      trackEvent = _useAnalytics.trackEvent;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_buttons__WEBPACK_IMPORTED_MODULE_15__.Button, {\n      color: \"primary\",\n      size: \"small\",\n      disabled: open,\n      \"data-cy\": \"k8sSidebar-shellButton\",\n      onClick: function onClick() {\n        return handleOpen();\n      },\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(_KubectlShellButton_module_css__WEBPACK_IMPORTED_MODULE_18__[\"default\"].root, '!flex'),\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_16__.Icon, {\n        icon: \"terminal\",\n        feather: true,\n        className: \"vertical-center\",\n        size: \"md\"\n      }), ' ', \"kubectl shell\"]\n    }), open && /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_13__.createPortal)( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_KubectlShell__WEBPACK_IMPORTED_MODULE_17__.KubeCtlShell, {\n      environmentId: environmentId,\n      onClose: function onClose() {\n        return setOpen(false);\n      }\n    }), document.body)]\n  });\n\n  function handleOpen() {\n    setOpen(true);\n    trackEvent('kubernetes-kubectl-shell', {\n      category: 'kubernetes'\n    });\n  }\n}//# sourceURL=webpack-internal:///82434\n");

}),

84510:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "KubectlShellButton": function() { return /* reexport safe */ _KubectlShellButton__WEBPACK_IMPORTED_MODULE_0__.KubectlShellButton; }
/* harmony export */ });
/* harmony import */ var _KubectlShellButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./KubectlShellButton */ 82434);


}),

95639:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesSidebar\": function() { return /* binding */ KubernetesSidebar; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-feather */ 94410);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-feather */ 6262);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-feather */ 15638);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-feather */ 32473);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-feather */ 43803);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _assets_ico_vendor_helm_svg_c__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/ico/vendor/helm.svg?c */ 82732);\n/* harmony import */ var _assets_ico_route_svg_c__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/ico/route.svg?c */ 48942);\n/* harmony import */ var _items_DashboardLink__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../items/DashboardLink */ 52454);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../SidebarItem */ 47503);\n/* harmony import */ var _items_VolumesLink__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../items/VolumesLink */ 88452);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../useSidebarState */ 48322);\n/* harmony import */ var _KubectlShell__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./KubectlShell */ 84510);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction KubernetesSidebar(_ref) {\n  var environmentId = _ref.environmentId;\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_6__.useSidebarState)(),\n      isOpen = _useSidebarState.isOpen;\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {\n    children: [isOpen && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n      className: \"mb-3\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_KubectlShell__WEBPACK_IMPORTED_MODULE_7__.KubectlShellButton, {\n        environmentId: environmentId\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_items_DashboardLink__WEBPACK_IMPORTED_MODULE_3__.DashboardLink, {\n      environmentId: environmentId,\n      platformPath: \"kubernetes\",\n      \"data-cy\": \"k8sSidebar-dashboard\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      to: \"kubernetes.templates.custom\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n      label: \"Custom Templates\",\n      \"data-cy\": \"k8sSidebar-customTemplates\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      to: \"kubernetes.resourcePools\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n      label: \"Namespaces\",\n      \"data-cy\": \"k8sSidebar-namespaces\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__.Authorized, {\n      authorizations: \"HelmInstallChart\",\n      environmentId: environmentId,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n        to: \"kubernetes.templates.helm\",\n        params: {\n          endpointId: environmentId\n        },\n        icon: _assets_ico_vendor_helm_svg_c__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n        label: \"Helm\",\n        \"data-cy\": \"k8sSidebar-helm\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      to: \"kubernetes.applications\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n      label: \"Applications\",\n      \"data-cy\": \"k8sSidebar-applications\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      to: \"kubernetes.ingresses\",\n      params: {\n        endpointId: environmentId\n      },\n      label: \"Ingresses\",\n      \"data-cy\": \"k8sSidebar-ingresses\",\n      icon: _assets_ico_route_svg_c__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      to: \"kubernetes.configurations\",\n      params: {\n        endpointId: environmentId\n      },\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n      label: \"ConfigMaps & Secrets\",\n      \"data-cy\": \"k8sSidebar-configurations\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_items_VolumesLink__WEBPACK_IMPORTED_MODULE_5__.VolumesLink, {\n      environmentId: environmentId,\n      platformPath: \"kubernetes\",\n      \"data-cy\": \"k8sSidebar-volumes\"\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n      label: \"Cluster\",\n      to: \"kubernetes.cluster\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n      params: {\n        endpointId: environmentId\n      },\n      \"data-cy\": \"k8sSidebar-cluster\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__.Authorized, {\n        authorizations: \"K8sClusterSetupRW\",\n        adminOnlyCE: true,\n        environmentId: environmentId,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n          to: \"kubernetes.cluster.setup\",\n          params: {\n            endpointId: environmentId\n          },\n          label: \"Setup\",\n          \"data-cy\": \"k8sSidebar-setup\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_0__.Authorized, {\n        authorizations: \"K8sClusterSetupRW\",\n        adminOnlyCE: true,\n        environmentId: environmentId,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n          to: \"kubernetes.cluster.securityConstraint\",\n          params: {\n            endpointId: environmentId\n          },\n          label: \"Security constraints\",\n          \"data-cy\": \"k8sSidebar-securityConstraints\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_4__.SidebarItem, {\n        to: \"kubernetes.registries\",\n        params: {\n          endpointId: environmentId\n        },\n        label: \"Registries\",\n        \"data-cy\": \"k8sSidebar-registries\"\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///95639\n");

}),

24602:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "KubernetesSidebar": function() { return /* reexport safe */ _KubernetesSidebar__WEBPACK_IMPORTED_MODULE_0__.KubernetesSidebar; }
/* harmony export */ });
/* harmony import */ var _KubernetesSidebar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./KubernetesSidebar */ 95639);


}),

54654:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SettingsSidebar\": function() { return /* binding */ SettingsSidebar; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 96670);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-feather */ 44383);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-feather */ 70685);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-feather */ 24090);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-feather */ 47116);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/useRedirectFeatureFlag */ 31947);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SidebarItem */ 47503);\n/* harmony import */ var _SidebarSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SidebarSection */ 43353);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\nfunction SettingsSidebar(_ref) {\n  var isAdmin = _ref.isAdmin,\n      isTeamLeader = _ref.isTeamLeader;\n  var teamSyncQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_0__.usePublicSettings)({\n    select: function select(settings) {\n      return settings.TeamSync;\n    }\n  });\n  var isEdgeRemoteUpgradeEnabledQuery = (0,_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_1__.useFeatureFlag)(_portainer_feature_flags_useRedirectFeatureFlag__WEBPACK_IMPORTED_MODULE_1__.FeatureFlag.EdgeRemoteUpdate);\n  var showUsersSection = !window.ddExtension && (isAdmin || isTeamLeader && !teamSyncQuery.data);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_SidebarSection__WEBPACK_IMPORTED_MODULE_3__.SidebarSection, {\n    title: \"\\u8BBE\\u7F6E\",\n    children: [showUsersSection && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n      to: \"portainer.users\",\n      label: \"\\u7528\\u6237\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      \"data-cy\": \"portainerSidebar-users\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        to: \"portainer.teams\",\n        label: \"\\u56E2\\u961F\",\n        \"data-cy\": \"portainerSidebar-teams\"\n      }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        to: \"portainer.roles\",\n        label: \"\\u89D2\\u8272\",\n        \"data-cy\": \"portainerSidebar-roles\"\n      })]\n    }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        label: \"\\u73AF\\u5883\",\n        to: \"portainer.endpoints\",\n        icon: react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n        openOnPaths: ['portainer.wizard.endpoints'],\n        \"data-cy\": \"portainerSidebar-environments\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n          to: \"portainer.groups\",\n          label: \"\\u7FA4\\u7EC4\",\n          \"data-cy\": \"portainerSidebar-environmentGroups\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n          to: \"portainer.tags\",\n          label: \"\\u6807\\u8BB0\",\n          \"data-cy\": \"portainerSidebar-environmentTags\"\n        }), isEdgeRemoteUpgradeEnabledQuery.data && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n          to: \"portainer.endpoints.updateSchedules\",\n          label: \"\\u66F4\\u65B0 & \\u56DE\\u6EDA\",\n          \"data-cy\": \"portainerSidebar-updateSchedules\"\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        label: \"\\u6CE8\\u518C\\u8868\",\n        to: \"portainer.registries\",\n        icon: react_feather__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n        \"data-cy\": \"portainerSidebar-registries\"\n      }),  false && /*#__PURE__*/0, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        label: \"\\u8EAB\\u4EFD\\u9A8C\\u8BC1\\u65E5\\u5FD7\",\n        to: \"portainer.authLogs\",\n        icon: react_feather__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n        \"data-cy\": \"portainerSidebar-authLogs\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n          to: \"portainer.activityLogs\",\n          label: \"\\u6D3B\\u52A8\\u65E5\\u5FD7\",\n          \"data-cy\": \"portainerSidebar-activityLogs\"\n        })\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n      to: \"portainer.notifications\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n      label: \"\\u901A\\u77E5\",\n      \"data-cy\": \"portainerSidebar-notifications\"\n    }), isAdmin && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n      to: \"portainer.settings\",\n      label: \"\\u8BBE\\u7F6E\",\n      icon: react_feather__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n      \"data-cy\": \"portainerSidebar-settings\",\n      children: [!window.ddExtension && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        to: \"portainer.settings.authentication\",\n        label: \"\\u8EAB\\u4EFD\\u9A8C\\u8BC1\",\n        \"data-cy\": \"portainerSidebar-authentication\"\n      }),  false && /*#__PURE__*/0, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem, {\n        to: \"portainer.settings.edgeCompute\",\n        label: \"\\u8FB9\\u7F18\\u8BA1\\u7B97\",\n        \"data-cy\": \"portainerSidebar-edgeCompute\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem.Wrapper, {\n        label: \"\\u5E2E\\u52A9 / \\u5173\\u4E8E\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"a\", {\n          href:  true ? 'https://www.portainer.io/community_help' : 0,\n          target: \"_blank\",\n          rel: \"noreferrer\",\n          className: \"px-3 rounded flex h-8 items-center\",\n          children: \"\\u5E2E\\u52A9 / \\u5173\\u4E8E\"\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_2__.SidebarItem.Wrapper, {\n        label: \"\\u6C49\\u5316\\u652F\\u6301ysp\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"a\", {\n          href:  true ? 'https://jq.qq.com/?_wv=1027&k=5HqPeR7' : 0,\n          target: \"_blank\",\n          rel: \"noreferrer\",\n          className: \"px-3 rounded flex h-8 items-center\",\n          children: \"\\u6C49\\u5316\\u652F\\u6301ysp\"\n        })\n      })]\n    })]\n  });\n}//# sourceURL=webpack-internal:///54654\n");

}),

9145:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Sidebar\": function() { return /* binding */ Sidebar; }\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-feather */ 90190);\n/* harmony import */ var _portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/hooks/useUser */ 50265);\n/* harmony import */ var _portainer_users_queries__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/users/queries */ 45565);\n/* harmony import */ var _react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/settings/queries */ 37717);\n/* harmony import */ var _Sidebar_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sidebar.module.css */ 58615);\n/* harmony import */ var _EdgeComputeSidebar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./EdgeComputeSidebar */ 40674);\n/* harmony import */ var _EnvironmentSidebar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./EnvironmentSidebar */ 2426);\n/* harmony import */ var _SettingsSidebar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./SettingsSidebar */ 54654);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SidebarItem */ 47503);\n/* harmony import */ var _Footer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Footer */ 16256);\n/* harmony import */ var _Header__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Header */ 42237);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./useSidebarState */ 48322);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Sidebar() {\n  var _useUser = (0,_portainer_hooks_useUser__WEBPACK_IMPORTED_MODULE_1__.useUser)(),\n      isAdmin = _useUser.isAdmin,\n      user = _useUser.user;\n\n  var isTeamLeader = (0,_portainer_users_queries__WEBPACK_IMPORTED_MODULE_2__.useIsTeamLeader)(user);\n  var settingsQuery = (0,_react_portainer_settings_queries__WEBPACK_IMPORTED_MODULE_3__.usePublicSettings)();\n\n  if (!settingsQuery.data) {\n    return null;\n  }\n\n  var _settingsQuery$data = settingsQuery.data,\n      EnableEdgeComputeFeatures = _settingsQuery$data.EnableEdgeComputeFeatures,\n      LogoURL = _settingsQuery$data.LogoURL;\n  return (\n    /*#__PURE__*/\n\n    /* in the future (when we remove r2a) this should wrap the whole app - to change root styles */\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_useSidebarState__WEBPACK_IMPORTED_MODULE_11__.SidebarProvider, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"nav\", {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Sidebar_module_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"].root, 'p-5 flex flex-col'),\n        \"aria-label\": \"Main\",\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Header__WEBPACK_IMPORTED_MODULE_10__.Header, {\n          logo: LogoURL\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"div\", {\n          className: \"mt-6 overflow-y-auto flex-1 -mr-4 pr-4\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(\"ul\", {\n            className: \"space-y-9\",\n            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_8__.SidebarItem, {\n              to: \"portainer.home\",\n              icon: react_feather__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n              label: \"\\u9996\\u9875\",\n              \"data-cy\": \"portainerSidebar-home\"\n            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_EnvironmentSidebar__WEBPACK_IMPORTED_MODULE_6__.EnvironmentSidebar, {}), isAdmin && EnableEdgeComputeFeatures && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_EdgeComputeSidebar__WEBPACK_IMPORTED_MODULE_5__.EdgeComputeSidebar, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_SettingsSidebar__WEBPACK_IMPORTED_MODULE_7__.SettingsSidebar, {\n              isAdmin: isAdmin,\n              isTeamLeader: isTeamLeader\n            })]\n          })\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(\"div\", {\n          className: \"mt-auto pt-8\",\n          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Footer__WEBPACK_IMPORTED_MODULE_9__.Footer, {})\n        })]\n      })\n    })\n  );\n}//# sourceURL=webpack-internal:///9145\n");

}),

10901:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Head\": function() { return /* binding */ Head; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ 15845);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ 7974);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-tooltip */ 34542);\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @@/Icon */ 6277);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../useSidebarState */ 48322);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Head(_ref) {\n  var to = _ref.to,\n      options = _ref.options,\n      _ref$params = _ref.params,\n      params = _ref$params === void 0 ? {} : _ref$params,\n      label = _ref.label,\n      icon = _ref.icon,\n      _ref$ignorePaths = _ref.ignorePaths,\n      ignorePaths = _ref$ignorePaths === void 0 ? [] : _ref$ignorePaths,\n      dataCy = _ref['data-cy'];\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_14__.useSidebarState)(),\n      isOpen = _useSidebarState.isOpen;\n\n  var anchorProps = useSrefActive(to, 'bg-blue-8 be:bg-gray-8 th-dark:bg-gray-true-8', params, options, ignorePaths);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)(\"a\", {\n    href: anchorProps.href,\n    onClick: anchorProps.onClick,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(anchorProps.className, 'text-inherit no-underline hover:no-underline hover:text-inherit focus:no-underline focus:text-inherit', 'w-full flex-1 rounded-md flex items-center h-8 space-x-4 text-sm', 'hover:bg-blue-9 th-dark:hover:bg-gray-true-9 be:hover:bg-gray-9 transition-colors duration-200', {\n      'px-3 justify-start w-full': isOpen,\n      'justify-center w-8': !isOpen\n    }),\n    \"data-tip\": label,\n    \"data-cy\": dataCy,\n    children: [!!icon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_Icon__WEBPACK_IMPORTED_MODULE_13__.Icon, {\n      icon: icon,\n      feather: true,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('flex [&>svg]:w-4')\n    }), isOpen && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(\"span\", {\n      children: label\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(react_tooltip__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n      type: \"info\",\n      place: \"right\",\n      effect: \"solid\",\n      className: \"!opacity-100 bg-blue-9 be:bg-gray-9 !rounded-md !py-1 !px-2\",\n      arrowColor: \"transparent\",\n      disable: isOpen\n    })]\n  });\n}\n\nfunction useSrefActive(to, activeClassName) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var ignorePaths = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_10__.useCurrentStateAndParams)(),\n      _useCurrentStateAndPa2 = _useCurrentStateAndPa.state;\n\n  _useCurrentStateAndPa2 = _useCurrentStateAndPa2 === void 0 ? {} : _useCurrentStateAndPa2;\n  var _useCurrentStateAndPa3 = _useCurrentStateAndPa2.name,\n      stateName = _useCurrentStateAndPa3 === void 0 ? '' : _useCurrentStateAndPa3;\n  var anchorProps = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_10__.useSrefActive)(to, params || {}, activeClassName, options);\n  var className = ignorePaths.some(function (path) {\n    return stateName.includes(path);\n  }) ? '' : anchorProps.className;\n  return _objectSpread(_objectSpread({}, anchorProps), {}, {\n    className: className\n  });\n}//# sourceURL=webpack-internal:///10901\n");

}),

4401:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Menu\": function() { return /* binding */ Menu; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ 23405);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _uirouter_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @uirouter/react */ 38566);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react-feather */ 41337);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-feather */ 92855);\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../useSidebarState */ 48322);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils */ 64787);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\nfunction Menu(_ref) {\n  var children = _ref.children,\n      head = _ref.head,\n      _ref$openOnPaths = _ref.openOnPaths,\n      openOnPaths = _ref$openOnPaths === void 0 ? [] : _ref$openOnPaths;\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_15__.useSidebarState)(),\n      isSidebarOpen = _useSidebarState.isOpen;\n\n  var paths = (0,react__WEBPACK_IMPORTED_MODULE_14__.useMemo)(function () {\n    return [].concat(_toConsumableArray((0,_utils__WEBPACK_IMPORTED_MODULE_16__.getPaths)(head, [])), _toConsumableArray(openOnPaths));\n  }, [openOnPaths, head]);\n\n  var _useIsOpen = useIsOpen(isSidebarOpen, paths),\n      isOpen = _useIsOpen.isOpen,\n      toggleOpen = _useIsOpen.toggleOpen;\n\n  var CollapseButtonIcon = isOpen ? react_feather__WEBPACK_IMPORTED_MODULE_18__[\"default\"] : react_feather__WEBPACK_IMPORTED_MODULE_19__[\"default\"];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(\"div\", {\n    className: \"flex-1\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(\"div\", {\n      className: \"flex w-full justify-between items-center relative \",\n      children: [head, isSidebarOpen && react__WEBPACK_IMPORTED_MODULE_14__.Children.count(children) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"button\", {\n        className: \"bg-transparent border-0 w-6 h-6 flex items-center justify-center absolute right-2 text-gray-5\",\n        onClick: handleClickArrow,\n        type: \"button\",\n        \"aria-label\": \"Collapse button\",\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(CollapseButtonIcon, {\n          className: \"w-4 h-4\"\n        })\n      })]\n    }), isOpen && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(\"ul\", {\n      className: \"!pl-8\",\n      children: children\n    })]\n  });\n\n  function handleClickArrow(e) {\n    e.preventDefault();\n    e.stopPropagation();\n    toggleOpen();\n  }\n}\n\nfunction useIsOpen(isSidebarOpen) {\n  var paths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var _useCurrentStateAndPa = (0,_uirouter_react__WEBPACK_IMPORTED_MODULE_13__.useCurrentStateAndParams)(),\n      state = _useCurrentStateAndPa.state;\n\n  var currentStateName = state.name || '';\n  var isOpenByState = paths.some(function (path) {\n    return currentStateName.startsWith(path);\n  });\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_14__.useReducer)(function (state) {\n    return !state;\n  }, false),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      forceOpen = _useReducer2[0],\n      toggleForceOpen = _useReducer2[1];\n\n  var isOpen = checkIfOpen();\n  return {\n    isOpen: isOpen,\n    toggleOpen: toggleOpen\n  };\n\n  function toggleOpen() {\n    if (!isOpenByState) {\n      toggleForceOpen();\n    }\n  }\n\n  function checkIfOpen() {\n    if (!isSidebarOpen) {\n      return false;\n    }\n\n    if (forceOpen) {\n      return true;\n    }\n\n    return isOpenByState;\n  }\n}//# sourceURL=webpack-internal:///4401\n");

}),

34296:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SidebarItem\": function() { return /* binding */ SidebarItem; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _Wrapper__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Wrapper */ 65872);\n/* harmony import */ var _Menu__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Menu */ 4401);\n/* harmony import */ var _Head__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Head */ 10901);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils */ 64787);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\nfunction SidebarItem(_ref) {\n  var children = _ref.children,\n      icon = _ref.icon,\n      to = _ref.to,\n      params = _ref.params,\n      label = _ref.label,\n      _ref$openOnPaths = _ref.openOnPaths,\n      openOnPaths = _ref$openOnPaths === void 0 ? [] : _ref$openOnPaths,\n      dataCy = _ref['data-cy'];\n  var childrenPath = (0,_utils__WEBPACK_IMPORTED_MODULE_15__.getPathsForChildren)(children);\n\n  var head = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_Head__WEBPACK_IMPORTED_MODULE_14__.Head, {\n    icon: icon,\n    to: to,\n    params: params,\n    label: label,\n    ignorePaths: childrenPath,\n    \"data-cy\": dataCy\n  });\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_Wrapper__WEBPACK_IMPORTED_MODULE_12__.Wrapper, {\n    label: label,\n    children: children ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_Menu__WEBPACK_IMPORTED_MODULE_13__.Menu, {\n      head: head,\n      openOnPaths: [].concat(_toConsumableArray(openOnPaths), _toConsumableArray(childrenPath)),\n      children: children\n    }) : head\n  });\n}//# sourceURL=webpack-internal:///34296\n");

}),

65872:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Wrapper\": function() { return /* binding */ Wrapper; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ 50033);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 66549);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ 47097);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 98191);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ 62176);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ 39532);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\nvar _excluded = [\"className\", \"children\", \"label\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\nfunction Wrapper(_ref) {\n  var className = _ref.className,\n      children = _ref.children,\n      label = _ref.label,\n      ariaProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"li\", _objectSpread(_objectSpread({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('flex', className, 'text-gray-3 min-h-8 [&>a]:text-inherit [&>a]:hover:text-inherit [&>a]:hover:no-underline'),\n    \"aria-label\": label // eslint-disable-next-line react/jsx-props-no-spreading\n\n  }, ariaProps), {}, {\n    children: children\n  }));\n}//# sourceURL=webpack-internal:///65872\n");

}),

47503:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SidebarItem\": function() { return /* binding */ SidebarItem; }\n/* harmony export */ });\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SidebarItem */ 34296);\n/* harmony import */ var _Menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Menu */ 4401);\n/* harmony import */ var _Wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Wrapper */ 65872);\n\n\n\nvar SidebarItem = _SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem;\nSidebarItem.Menu = _Menu__WEBPACK_IMPORTED_MODULE_1__.Menu;\nSidebarItem.Wrapper = _Wrapper__WEBPACK_IMPORTED_MODULE_2__.Wrapper;//# sourceURL=webpack-internal:///47503\n");

}),

64787:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPathsForChildren\": function() { return /* binding */ getPathsForChildren; },\n/* harmony export */   \"getPaths\": function() { return /* binding */ getPaths; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ 92429);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.flat.js */ 34920);\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat.js */ 8743);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ 78433);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react */ 95004);\nfunction _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\nfunction isReactElement(element) {\n  return !!element && _typeof(element) === 'object' && 'type' in element && 'props' in element;\n}\n\nfunction getPathsForChildren(children) {\n  var _Children$map;\n\n  return ((_Children$map = react__WEBPACK_IMPORTED_MODULE_15__.Children.map(children, function (child) {\n    return getPaths(child, []);\n  })) === null || _Children$map === void 0 ? void 0 : _Children$map.flat()) || [];\n}\nfunction getPaths(element, paths) {\n  if (!isReactElement(element)) {\n    return paths;\n  }\n\n  if (typeof element.props.to === 'undefined') {\n    return react__WEBPACK_IMPORTED_MODULE_15__.Children.map(element.props.children, function (child) {\n      return getPaths(child, paths);\n    });\n  }\n\n  return [element.props.to].concat(_toConsumableArray(paths));\n}//# sourceURL=webpack-internal:///64787\n");

}),

43353:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SidebarSection\": function() { return /* binding */ SidebarSection; },\n/* harmony export */   \"SidebarSectionTitle\": function() { return /* binding */ SidebarSectionTitle; }\n/* harmony export */ });\n/* harmony import */ var _useSidebarState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useSidebarState */ 48322);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction SidebarSection(_ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      showTitleWhenOpen = _ref.showTitleWhenOpen,\n      ariaLabel = _ref['aria-label'];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SidebarSectionTitle, {\n      showWhenOpen: showTitleWhenOpen,\n      children: title\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"nav\", {\n      \"aria-label\": typeof title === 'string' ? title : ariaLabel,\n      className: \"mt-4\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"ul\", {\n        children: children\n      })\n    })]\n  });\n}\nfunction SidebarSectionTitle(_ref2) {\n  var showWhenOpen = _ref2.showWhenOpen,\n      children = _ref2.children;\n\n  var _useSidebarState = (0,_useSidebarState__WEBPACK_IMPORTED_MODULE_0__.useSidebarState)(),\n      isOpen = _useSidebarState.isOpen;\n\n  if (!isOpen && !showWhenOpen) {\n    return null;\n  }\n\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"li\", {\n    className: \"ml-3 text-sm text-gray-3 be:text-gray-6 transition-all duration-500 ease-in-out\",\n    children: children\n  });\n}//# sourceURL=webpack-internal:///43353\n");

}),

52454:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DashboardLink\": function() { return /* binding */ DashboardLink; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-feather */ 34043);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarItem */ 47503);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction DashboardLink(_ref) {\n  var environmentId = _ref.environmentId,\n      platformPath = _ref.platformPath,\n      dataCy = _ref['data-cy'];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n    to: \"\".concat(platformPath, \".dashboard\"),\n    params: {\n      endpointId: environmentId\n    },\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    label: \"\\u4EEA\\u8868\\u677F\",\n    \"data-cy\": dataCy\n  });\n}//# sourceURL=webpack-internal:///52454\n");

}),

88452:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumesLink\": function() { return /* binding */ VolumesLink; }\n/* harmony export */ });\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-feather */ 87147);\n/* harmony import */ var _SidebarItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarItem */ 47503);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\nfunction VolumesLink(_ref) {\n  var environmentId = _ref.environmentId,\n      platformPath = _ref.platformPath,\n      dataCy = _ref['data-cy'];\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_SidebarItem__WEBPACK_IMPORTED_MODULE_0__.SidebarItem, {\n    to: \"\".concat(platformPath, \".volumes\"),\n    params: {\n      endpointId: environmentId\n    },\n    icon: react_feather__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    label: \"\\u5B58\\u50A8\\u5377\",\n    \"data-cy\": dataCy\n  });\n}//# sourceURL=webpack-internal:///88452\n");

}),

48322:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Context\": function() { return /* binding */ Context; },\n/* harmony export */   \"useSidebarState\": function() { return /* binding */ useSidebarState; },\n/* harmony export */   \"SidebarProvider\": function() { return /* binding */ SidebarProvider; },\n/* harmony export */   \"TestSidebarProvider\": function() { return /* binding */ TestSidebarProvider; },\n/* harmony export */   \"AngularSidebarService\": function() { return /* binding */ AngularSidebarService; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ 28001);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ 62341);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ 82459);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 42240);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ 77236);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 47771);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ 33262);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 20493);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ 66076);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 77072);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/debounce */ 60352);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 65562);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 57592);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react */ 95004);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/portainer/hooks/useLocalStorage */ 73817);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ 2629);\n\n\n\n\n\n\n\n\n\n\n\nAngularSidebarService.$inject = [\"$rootScope\"];\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n // using bootstrap breakpoint - https://getbootstrap.com/docs/5.0/layout/breakpoints/#min-width\n\n\nvar mobileWidth = 992;\nvar storageKey = 'toolbar_toggle';\nvar Context = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_13__.createContext)(null);\nContext.displayName = 'SidebarContext';\nfunction useSidebarState() {\n  var context = (0,react__WEBPACK_IMPORTED_MODULE_13__.useContext)(Context);\n\n  if (!context) {\n    throw new Error('useSidebarContext must be used within a SidebarProvider');\n  }\n\n  return context;\n}\nfunction SidebarProvider(_ref) {\n  var children = _ref.children;\n  var state = useSidebarStateLocal();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(Context.Provider, {\n    value: state,\n    children: [\" \", children, \" \"]\n  });\n}\nfunction TestSidebarProvider(_ref2) {\n  var children = _ref2.children;\n\n  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_13__.useReducer)(function (state) {\n    return !state;\n  }, true),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      isOpen = _useReducer2[0],\n      toggle = _useReducer2[1];\n\n  var state = (0,react__WEBPACK_IMPORTED_MODULE_13__.useMemo)(function () {\n    return {\n      isOpen: isOpen,\n      toggle: function (_toggle) {\n        function toggle() {\n          return _toggle.apply(this, arguments);\n        }\n\n        toggle.toString = function () {\n          return _toggle.toString();\n        };\n\n        return toggle;\n      }(function () {\n        return toggle();\n      })\n    };\n  }, [isOpen, toggle]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(Context.Provider, {\n    value: state,\n    children: [\" \", children, \" \"]\n  });\n}\n/* @ngInject */\n\nfunction AngularSidebarService($rootScope) {\n  var state = {\n    isOpen: false\n  };\n\n  function isSidebarOpen() {\n    return state.isOpen;\n  }\n\n  function setIsOpen(isOpen) {\n    $rootScope.$evalAsync(function () {\n      state.isOpen = isOpen;\n    });\n  }\n\n  return {\n    isSidebarOpen: isSidebarOpen,\n    setIsOpen: setIsOpen\n  };\n}\n\nfunction useSidebarStateLocal() {\n  var _storage$useLocalStor = _portainer_hooks_useLocalStorage__WEBPACK_IMPORTED_MODULE_15__.useLocalStorage(storageKey, true),\n      _storage$useLocalStor2 = _slicedToArray(_storage$useLocalStor, 2),\n      storageIsOpen = _storage$useLocalStor2[0],\n      setIsOpenInStorage = _storage$useLocalStor2[1];\n\n  var _useStateWithUndo = useStateWithUndo(initialState()),\n      _useStateWithUndo2 = _slicedToArray(_useStateWithUndo, 3),\n      isOpen = _useStateWithUndo2[0],\n      setIsOpen = _useStateWithUndo2[1],\n      undoIsOpenChange = _useStateWithUndo2[2];\n\n  var onResize = (0,react__WEBPACK_IMPORTED_MODULE_13__.useMemo)(function () {\n    return lodash_debounce__WEBPACK_IMPORTED_MODULE_10___default()(function () {\n      if (isMobile()) {\n        if (isOpen) {\n          setIsOpen(false);\n        }\n      } else {\n        undoIsOpenChange();\n      }\n    }, 50);\n  }, [setIsOpen, undoIsOpenChange, isOpen]);\n  useUpdateAngularService(isOpen);\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    if (window.ddExtension) {\n      return undefined;\n    }\n\n    window.addEventListener('resize', onResize);\n    return function () {\n      return window.removeEventListener('resize', onResize);\n    };\n  }, [onResize]);\n  return {\n    isOpen: isOpen,\n    toggle: toggle\n  };\n\n  function toggle() {\n    var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !isOpen;\n    setIsOpenInStorage(value);\n    setIsOpen(value);\n  }\n\n  function initialState() {\n    if (isMobile() || window.ddExtension) {\n      return false;\n    }\n\n    return storageIsOpen;\n  }\n}\n\nfunction useStateWithUndo(initialState) {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useState)(initialState),\n      _useState2 = _slicedToArray(_useState, 2),\n      state = _useState2[0],\n      setState = _useState2[1];\n\n  var prevState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useRef)();\n  var undo = (0,react__WEBPACK_IMPORTED_MODULE_13__.useCallback)(function () {\n    if (!prevState.current) {\n      return;\n    }\n\n    setState(prevState.current);\n    prevState.current = undefined;\n  }, [prevState]);\n  var handleSetState = (0,react__WEBPACK_IMPORTED_MODULE_13__.useCallback)(function (newState) {\n    prevState.current = state;\n    setState(newState);\n  }, [state]);\n  return [state, handleSetState, undo];\n}\n\nfunction useUpdateAngularService(isOpen) {\n  (0,react__WEBPACK_IMPORTED_MODULE_13__.useEffect)(function () {\n    // to sync \"outside state\" - for angularjs\n    var $injector = angular__WEBPACK_IMPORTED_MODULE_14___default().element(document).injector();\n    $injector.invoke(\n    /* @ngInject */\n    [\"SidebarService\", function (SidebarService) {\n      SidebarService.setIsOpen(isOpen);\n    }]);\n  }, [isOpen]);\n}\n\nfunction isMobile() {\n  var width = window.innerWidth;\n  return width < mobileWidth;\n}//# sourceURL=webpack-internal:///48322\n");

}),

14691:

(function(module) {

eval("module.exports = 'test-file-stub';//# sourceURL=webpack-internal:///14691\n");

}),

12534:

(function(module) {

eval("module.exports = {};//# sourceURL=webpack-internal:///12534\n");

}),

38541:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ReactComponent\": function() { return /* binding */ ReactComponent; }\n/* harmony export */ });\n/* harmony default export */ __webpack_exports__[\"default\"] = ('SvgrURL');\nconst ReactComponent = 'div';//# sourceURL=webpack-internal:///38541\n");

}),

75947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FileUploaderController\": function() { return /* binding */ FileUploaderController; }\n/* harmony export */ });\nclass FileUploaderController {\n  /* @ngInject */\n  constructor($async) {\n    Object.assign(this, {\n      $async\n    });\n    this.state = {\n      uploadInProgress: false\n    };\n    this.onFileSelected = this.onFileSelected.bind(this);\n    this.onFileSelectedAsync = this.onFileSelectedAsync.bind(this);\n  }\n\n  onFileSelected(file) {\n    return this.$async(this.onFileSelectedAsync, file);\n  }\n\n  async onFileSelectedAsync(file) {\n    if (!file) {\n      return;\n    }\n\n    this.state.uploadInProgress = true;\n\n    try {\n      await this.uploadFile(file);\n    } finally {\n      this.state.uploadInProgress = false;\n    }\n  }\n\n}\nFileUploaderController.$inject = [\"$async\"];//# sourceURL=webpack-internal:///75947\n");

}),

38123:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _fileUploaderController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fileUploaderController */ 75947);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./fileUploader.html */ 10388);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').component('fileUploader', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _fileUploaderController__WEBPACK_IMPORTED_MODULE_1__.FileUploaderController,\n  bindings: {\n    uploadFile: '<onFileSelected'\n  }\n});//# sourceURL=webpack-internal:///38123\n");

}),

46161:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./filesDatatable.html */ 53719);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').component('filesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    isRoot: '<',\n    goToParent: '&',\n    browse: '&',\n    rename: '&',\n    download: '&',\n    delete: '&',\n    isUploadAllowed: '<',\n    onFileSelectedForUpload: '<'\n  }\n});//# sourceURL=webpack-internal:///46161\n");

}),

10822:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HostBrowserController\": function() { return /* binding */ HostBrowserController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_slice__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/slice */ 85713);\n/* harmony import */ var lodash_es_slice__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_slice__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst ROOT_PATH = '/host';\nclass HostBrowserController {\n  /* @ngInject */\n  constructor($async, HostBrowserService, Notifications, FileSaver, ModalService) {\n    Object.assign(this, {\n      $async,\n      HostBrowserService,\n      Notifications,\n      FileSaver,\n      ModalService\n    });\n    this.state = {\n      path: ROOT_PATH\n    };\n    this.goToParent = this.goToParent.bind(this);\n    this.browse = this.browse.bind(this);\n    this.confirmDeleteFile = this.confirmDeleteFile.bind(this);\n    this.isRoot = this.isRoot.bind(this);\n    this.getRelativePath = this.getRelativePath.bind(this);\n    this.getFilesForPath = this.getFilesForPath.bind(this);\n    this.getFilesForPathAsync = this.getFilesForPathAsync.bind(this);\n    this.downloadFile = this.downloadFile.bind(this);\n    this.downloadFileAsync = this.downloadFileAsync.bind(this);\n    this.renameFile = this.renameFile.bind(this);\n    this.renameFileAsync = this.renameFileAsync.bind(this);\n    this.deleteFile = this.deleteFile.bind(this);\n    this.deleteFileAsync = this.deleteFileAsync.bind(this);\n    this.onFileSelectedForUpload = this.onFileSelectedForUpload.bind(this);\n    this.onFileSelectedForUploadAsync = this.onFileSelectedForUploadAsync.bind(this);\n  }\n\n  getRelativePath(path) {\n    path = path || this.state.path;\n    const rootPathRegex = new RegExp(`^${ROOT_PATH}/?`);\n    const relativePath = path.replace(rootPathRegex, '/');\n    return relativePath;\n  }\n\n  goToParent() {\n    this.getFilesForPath(this.parentPath(this.state.path));\n  }\n\n  isRoot() {\n    return this.state.path === ROOT_PATH;\n  }\n\n  browse(folder) {\n    this.getFilesForPath(this.buildPath(this.state.path, folder));\n  }\n\n  getFilesForPath(path) {\n    return this.$async(this.getFilesForPathAsync, path);\n  }\n\n  async getFilesForPathAsync(path) {\n    try {\n      const files = await this.HostBrowserService.ls(path);\n      this.state.path = path;\n      this.files = files;\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法浏览');\n    }\n  }\n\n  renameFile(name, newName) {\n    return this.$async(this.renameFileAsync, name, newName);\n  }\n\n  async renameFileAsync(name, newName) {\n    const filePath = this.buildPath(this.state.path, name);\n    const newFilePath = this.buildPath(this.state.path, newName);\n\n    try {\n      await this.HostBrowserService.rename(filePath, newFilePath);\n      this.Notifications.success('文件成功重命名', this.getRelativePath(newFilePath));\n      const files = await this.HostBrowserService.ls(this.state.path);\n      this.files = files;\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法重命名文件');\n    }\n  }\n\n  downloadFile(fileName) {\n    return this.$async(this.downloadFileAsync, fileName);\n  }\n\n  async downloadFileAsync(fileName) {\n    const filePath = this.buildPath(this.state.path, fileName);\n\n    try {\n      const {\n        file\n      } = await this.HostBrowserService.get(filePath);\n      const downloadData = new Blob([file], {\n        type: 'text/plain;charset=utf-8'\n      });\n      this.FileSaver.saveAs(downloadData, fileName);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法下载文件');\n    }\n  }\n\n  confirmDeleteFile(name) {\n    const filePath = this.buildPath(this.state.path, name);\n    this.ModalService.confirmDeletion(`是否确实要删除 ${this.getRelativePath(filePath)} ?`, confirmed => {\n      if (!confirmed) {\n        return;\n      }\n\n      return this.deleteFile(filePath);\n    });\n  }\n\n  deleteFile(path) {\n    this.$async(this.deleteFileAsync, path);\n  }\n\n  async deleteFileAsync(path) {\n    try {\n      await this.HostBrowserService.delete(path);\n      this.Notifications.success('文件已成功删除', this.getRelativePath(path));\n      const files = await this.HostBrowserService.ls(this.state.path);\n      this.files = files;\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法删除文件');\n    }\n  }\n\n  $onInit() {\n    this.getFilesForPath(ROOT_PATH);\n  }\n\n  parentPath(path) {\n    if (path === ROOT_PATH) {\n      return ROOT_PATH;\n    }\n\n    const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default()(path, '/');\n\n    return lodash_es_join__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_slice__WEBPACK_IMPORTED_MODULE_0___default()(split, 0, split.length - 1), '/');\n  }\n\n  buildPath(parent, file) {\n    if (parent.lastIndexOf('/') === parent.length - 1) {\n      return parent + file;\n    }\n\n    return parent + '/' + file;\n  }\n\n  onFileSelectedForUpload(file) {\n    return this.$async(this.onFileSelectedForUploadAsync, file);\n  }\n\n  async onFileSelectedForUploadAsync(file) {\n    if (!this.endpointId) {\n      throw new Error('缺少端点ID');\n    }\n\n    try {\n      await this.HostBrowserService.upload(this.endpointId, this.state.path, file);\n      this.onFileUploaded();\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法上传文件');\n    }\n  }\n\n  onFileUploaded() {\n    this.refreshList();\n  }\n\n  refreshList() {\n    this.getFilesForPath(this.state.path);\n  }\n\n}\nHostBrowserController.$inject = [\"$async\", \"HostBrowserService\", \"Notifications\", \"FileSaver\", \"ModalService\"];//# sourceURL=webpack-internal:///10822\n");

}),

70627:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hostBrowserController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hostBrowserController */ 10822);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./hostBrowser.html */ 10884);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').component('hostBrowser', {\n  controller: _hostBrowserController__WEBPACK_IMPORTED_MODULE_1__.HostBrowserController,\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    endpointId: '<'\n  }\n});//# sourceURL=webpack-internal:///70627\n");

}),

60744:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _nodeSelectorController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodeSelectorController */ 42102);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./nodeSelector.html */ 56566);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').component('nodeSelector', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _nodeSelectorController__WEBPACK_IMPORTED_MODULE_1__.NodeSelectorController,\n  bindings: {\n    model: '='\n  }\n});//# sourceURL=webpack-internal:///60744\n");

}),

42102:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NodeSelectorController\": function() { return /* binding */ NodeSelectorController; }\n/* harmony export */ });\nclass NodeSelectorController {\n  /* @ngInject */\n  constructor(AgentService, Notifications) {\n    Object.assign(this, {\n      AgentService,\n      Notifications\n    });\n  }\n\n  async $onInit() {\n    try {\n      const agents = await this.AgentService.agents();\n      this.agents = agents;\n\n      if (!this.model) {\n        this.model = agents[0].NodeName;\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法加载代理');\n    }\n  }\n\n}\nNodeSelectorController.$inject = [\"AgentService\", \"Notifications\"];//# sourceURL=webpack-internal:///42102\n");

}),

41775:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _volumeBrowserController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volumeBrowserController */ 14087);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumeBrowser.html */ 23709);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').component('volumeBrowser', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _volumeBrowserController__WEBPACK_IMPORTED_MODULE_1__.VolumeBrowserController,\n  bindings: {\n    volumeId: '<',\n    nodeName: '<',\n    isUploadEnabled: '<',\n    endpointId: '<'\n  }\n});//# sourceURL=webpack-internal:///41775\n");

}),

14087:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumeBrowserController\": function() { return /* binding */ VolumeBrowserController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_slice__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/slice */ 85713);\n/* harmony import */ var lodash_es_slice__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_slice__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nclass VolumeBrowserController {\n  /* @ngInject */\n  constructor($async, HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, ModalService, Notifications) {\n    Object.assign(this, {\n      $async,\n      HttpRequestHelper,\n      VolumeBrowserService,\n      FileSaver,\n      Blob,\n      ModalService,\n      Notifications\n    });\n    this.state = {\n      path: '/'\n    };\n    this.rename = this.rename.bind(this);\n    this.renameAsync = this.renameAsync.bind(this);\n    this.confirmDelete = this.confirmDelete.bind(this);\n    this.download = this.download.bind(this);\n    this.downloadAsync = this.downloadAsync.bind(this);\n    this.up = this.up.bind(this);\n    this.browse = this.browse.bind(this);\n    this.deleteFile = this.deleteFile.bind(this);\n    this.deleteFileAsync = this.deleteFileAsync.bind(this);\n    this.getFilesForPath = this.getFilesForPath.bind(this);\n    this.getFilesForPathAsync = this.getFilesForPathAsync.bind(this);\n    this.onFileSelectedForUpload = this.onFileSelectedForUpload.bind(this);\n    this.onFileSelectedForUploadAsync = this.onFileSelectedForUploadAsync.bind(this);\n    this.parentPath = this.parentPath.bind(this);\n    this.buildPath = this.buildPath.bind(this);\n    this.$onInit = this.$onInit.bind(this);\n    this.onFileUploaded = this.onFileUploaded.bind(this);\n    this.refreshList = this.refreshList.bind(this);\n  }\n\n  rename(file, newName) {\n    return this.$async(this.renameAsync, file, newName);\n  }\n\n  async renameAsync(file, newName) {\n    const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n    const newFilePath = this.state.path === '/' ? newName : `${this.state.path}/${newName}`;\n\n    try {\n      await this.VolumeBrowserService.rename(this.volumeId, filePath, newFilePath);\n      this.Notifications.success('文件成功重命名', newFilePath);\n      this.files = await this.VolumeBrowserService.ls(this.volumeId, this.state.path);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法重命名文件');\n    }\n  }\n\n  confirmDelete(file) {\n    const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n    this.ModalService.confirmDeletion(`你确定你要删除 ${filePath} ?`, confirmed => {\n      if (!confirmed) {\n        return;\n      }\n\n      this.deleteFile(filePath);\n    });\n  }\n\n  download(file) {\n    return this.$async(this.downloadAsync, file);\n  }\n\n  async downloadAsync(file) {\n    const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n\n    try {\n      const data = await this.VolumeBrowserService.get(this.volumeId, filePath);\n      const downloadData = new Blob([data.file]);\n      this.FileSaver.saveAs(downloadData, file);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法下载文件');\n    }\n  }\n\n  up() {\n    const parentFolder = this.parentPath(this.state.path);\n    this.getFilesForPath(parentFolder);\n  }\n\n  browse(folder) {\n    const path = this.buildPath(this.state.path, folder);\n    this.getFilesForPath(path);\n  }\n\n  deleteFile(file) {\n    return this.$async(this.deleteFileAsync, file);\n  }\n\n  async deleteFileAsync(file) {\n    try {\n      await this.VolumeBrowserService.delete(this.volumeId, file);\n      this.Notifications.success('文件成功删除', file);\n      this.files = await this.VolumeBrowserService.ls(this.volumeId, this.state.path);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法删除文件');\n    }\n  }\n\n  getFilesForPath(path) {\n    return this.$async(this.getFilesForPathAsync, path);\n  }\n\n  async getFilesForPathAsync(path) {\n    try {\n      const files = await this.VolumeBrowserService.ls(this.volumeId, path);\n      this.state.path = path;\n      this.files = files;\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法浏览卷存储卷');\n    }\n  }\n\n  onFileSelectedForUpload(file) {\n    return this.$async(this.onFileSelectedForUploadAsync, file);\n  }\n\n  async onFileSelectedForUploadAsync(file) {\n    try {\n      await this.VolumeBrowserService.upload(this.endpointId, this.state.path, file, this.volumeId);\n      this.onFileUploaded();\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法上传文件');\n    }\n  }\n\n  parentPath(path) {\n    if (path.lastIndexOf('/') === 0) {\n      return '/';\n    }\n\n    const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default()(path, '/');\n\n    return lodash_es_join__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_slice__WEBPACK_IMPORTED_MODULE_0___default()(split, 0, split.length - 1), '/');\n  }\n\n  buildPath(parent, file) {\n    if (parent === '/') {\n      return parent + file;\n    }\n\n    return `${parent}/${file}`;\n  }\n\n  onFileUploaded() {\n    this.refreshList();\n  }\n\n  refreshList() {\n    this.getFilesForPath(this.state.path);\n  }\n\n  async $onInit() {\n    this.HttpRequestHelper.setPortainerAgentTargetHeader(this.nodeName);\n\n    try {\n      this.files = await this.VolumeBrowserService.ls(this.volumeId, this.state.path);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法浏览存储卷');\n    }\n  }\n\n}\nVolumeBrowserController.$inject = [\"$async\", \"HttpRequestHelper\", \"VolumeBrowserService\", \"FileSaver\", \"Blob\", \"ModalService\", \"Notifications\"];//# sourceURL=webpack-internal:///14087\n");

}),

26317:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent', []);//# sourceURL=webpack-internal:///26317\n");

}),

99662:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AgentViewModel\": function() { return /* binding */ AgentViewModel; }\n/* harmony export */ });\nclass AgentViewModel {\n  constructor(data) {\n    this.IPAddress = data.IPAddress;\n    this.NodeName = data.NodeName;\n    this.NodeRole = data.NodeRole;\n  }\n\n}//# sourceURL=webpack-internal:///99662\n");

}),

13481:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nAgentFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\", \"StateManager\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('Agent', AgentFactory);\n\nfunction AgentFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/agents`, {\n    endpointId: EndpointProvider.endpointID,\n    version: StateManager.getAgentApiVersion\n  }, {\n    query: {\n      method: 'GET',\n      isArray: true\n    }\n  });\n}//# sourceURL=webpack-internal:///13481\n");

}),

56192:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _response_browse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./response/browse */ 94477);\nBrowseFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\", \"StateManager\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('Browse', BrowseFactory);\n\nfunction BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/browse/:action`, {\n    endpointId: EndpointProvider.endpointID,\n    version: StateManager.getAgentApiVersion\n  }, {\n    ls: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        action: 'ls'\n      }\n    },\n    get: {\n      method: 'GET',\n      params: {\n        action: 'get'\n      },\n      transformResponse: _response_browse__WEBPACK_IMPORTED_MODULE_1__.browseGetResponse,\n      responseType: 'arraybuffer'\n    },\n    delete: {\n      method: 'DELETE',\n      params: {\n        action: 'delete'\n      }\n    },\n    rename: {\n      method: 'PUT',\n      params: {\n        action: 'rename'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///56192\n");

}),

26084:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nAgentDockerhub.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('AgentDockerhub', AgentDockerhub);\n\nfunction AgentDockerhub($resource, API_ENDPOINT_ENDPOINTS) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/agent/:endpointType/v2/dockerhub/:registryId`, {}, {\n    limits: {\n      method: 'GET',\n      params: {\n        registryId: '@registryId'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///26084\n");

}),

74298:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nHostFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\", \"StateManager\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('Host', HostFactory);\n\nfunction HostFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/host/:action`, {\n    endpointId: EndpointProvider.endpointID,\n    version: StateManager.getAgentApiVersion\n  }, {\n    info: {\n      method: 'GET',\n      params: {\n        action: 'info'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///74298\n");

}),

79688:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nAgentPingFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\", \"$q\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('AgentPing', AgentPingFactory);\n\nfunction AgentPingFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, $q) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/ping`, {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    ping: {\n      method: 'GET',\n      interceptor: {\n        response: function versionInterceptor(response) {\n          const instance = response.resource;\n          const version = response.headers('Portainer-Agent-Api-Version') || 1;\n          instance.version = Number(version);\n          return instance;\n        },\n        responseError: function versionResponseError(error) {\n          // 404 - agent is up - set version to 1\n          if (error.status === 404) {\n            return {\n              version: 1\n            };\n          }\n\n          return $q.reject(error);\n        }\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///79688\n");

}),

94477:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"browseGetResponse\": function() { return /* binding */ browseGetResponse; }\n/* harmony export */ });\n// The get action of the Browse service returns a file.\n// ngResource will transform it as an array of chars.\n// This functions simply creates a response object and assign\n// the data to a field.\nfunction browseGetResponse(data) {\n  const response = {};\n  response.file = data;\n  return response;\n}//# sourceURL=webpack-internal:///94477\n");

}),

40941:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nAgentFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('AgentVersion1', AgentFactory);\n\nfunction AgentFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/agents`, {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      isArray: true\n    }\n  });\n}//# sourceURL=webpack-internal:///40941\n");

}),

91130:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _response_browse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../response/browse */ 94477);\nBrowseFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('BrowseVersion1', BrowseFactory);\n\nfunction BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  return $resource(`${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/browse/:volumeID/:action`, {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    ls: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        action: 'ls'\n      }\n    },\n    get: {\n      method: 'GET',\n      params: {\n        action: 'get'\n      },\n      transformResponse: _response_browse__WEBPACK_IMPORTED_MODULE_1__.browseGetResponse,\n      responseType: 'arraybuffer'\n    },\n    delete: {\n      method: 'DELETE',\n      params: {\n        action: 'delete'\n      }\n    },\n    rename: {\n      method: 'PUT',\n      params: {\n        action: 'rename'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///91130\n");

}),

78548:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_agent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/agent */ 99662);\nAgentServiceFactory.$inject = [\"Agent\", \"AgentVersion1\", \"HttpRequestHelper\", \"Host\", \"StateManager\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('AgentService', AgentServiceFactory);\n\nfunction AgentServiceFactory(Agent, AgentVersion1, HttpRequestHelper, Host, StateManager) {\n  return {\n    agents,\n    hostInfo\n  };\n\n  function getAgentApiVersion() {\n    const state = StateManager.getState();\n    return state.endpoint.agentApiVersion;\n  }\n\n  function hostInfo(nodeName) {\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    return Host.info().$promise;\n  }\n\n  async function agents() {\n    const agentVersion = getAgentApiVersion();\n    const service = agentVersion > 1 ? Agent : AgentVersion1;\n\n    try {\n      const agents = await service.query({\n        version: agentVersion\n      }).$promise;\n      return agents.map(function (item) {\n        return new _models_agent__WEBPACK_IMPORTED_MODULE_1__.AgentViewModel(item);\n      });\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve agents',\n        err\n      };\n    }\n  }\n}//# sourceURL=webpack-internal:///78548\n");

}),

77884:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nHostBrowserServiceFactory.$inject = [\"Browse\", \"Upload\", \"API_ENDPOINT_ENDPOINTS\", \"StateManager\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('HostBrowserService', HostBrowserServiceFactory);\n/* @ngInject */\n\nfunction HostBrowserServiceFactory(Browse, Upload, API_ENDPOINT_ENDPOINTS, StateManager) {\n  return {\n    ls,\n    get,\n    delete: deletePath,\n    rename,\n    upload\n  };\n\n  function ls(path) {\n    return Browse.ls({\n      path: path\n    }).$promise;\n  }\n\n  function get(path) {\n    return Browse.get({\n      path: path\n    }).$promise;\n  }\n\n  function deletePath(path) {\n    return Browse.delete({\n      path: path\n    }).$promise;\n  }\n\n  function rename(path, newPath) {\n    const payload = {\n      CurrentFilePath: path,\n      NewFilePath: newPath\n    };\n    return Browse.rename({}, payload).$promise;\n  }\n\n  function upload(endpointId, Path, file, onProgress) {\n    const agentVersion = StateManager.getAgentApiVersion();\n    const url = `${API_ENDPOINT_ENDPOINTS}/${endpointId}/docker${agentVersion > 1 ? '/v' + agentVersion : ''}/browse/put`;\n    return new Promise((resolve, reject) => {\n      Upload.upload({\n        url: url,\n        data: {\n          file,\n          Path\n        }\n      }).then(resolve, reject, onProgress);\n    });\n  }\n}//# sourceURL=webpack-internal:///77884\n");

}),

38918:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nAgentPingService.$inject = [\"AgentPing\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').service('AgentPingService', AgentPingService);\n\nfunction AgentPingService(AgentPing) {\n  return {\n    ping\n  };\n\n  function ping() {\n    return AgentPing.ping().$promise;\n  }\n}//# sourceURL=webpack-internal:///38918\n");

}),

45824:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nVolumeBrowserServiceFactory.$inject = [\"StateManager\", \"Browse\", \"BrowseVersion1\", \"API_ENDPOINT_ENDPOINTS\", \"Upload\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.agent').factory('VolumeBrowserService', VolumeBrowserServiceFactory);\n/* @ngInject */\n\nfunction VolumeBrowserServiceFactory(StateManager, Browse, BrowseVersion1, API_ENDPOINT_ENDPOINTS, Upload) {\n  return {\n    ls,\n    get,\n    delete: deletePath,\n    rename,\n    upload\n  };\n\n  function getAgentApiVersion() {\n    const state = StateManager.getState();\n    return state.endpoint.agentApiVersion;\n  }\n\n  function getBrowseService() {\n    const agentVersion = getAgentApiVersion();\n    return agentVersion > 1 ? Browse : BrowseVersion1;\n  }\n\n  function ls(volumeId, path) {\n    return getBrowseService().ls({\n      volumeID: volumeId,\n      path,\n      version: getAgentApiVersion()\n    }).$promise;\n  }\n\n  function get(volumeId, path) {\n    return getBrowseService().get({\n      volumeID: volumeId,\n      path,\n      version: getAgentApiVersion()\n    }).$promise;\n  }\n\n  function deletePath(volumeId, path) {\n    return getBrowseService().delete({\n      volumeID: volumeId,\n      path,\n      version: getAgentApiVersion()\n    }).$promise;\n  }\n\n  function rename(volumeId, path, newPath) {\n    const payload = {\n      CurrentFilePath: path,\n      NewFilePath: newPath\n    };\n    return getBrowseService().rename({\n      volumeID: volumeId,\n      version: getAgentApiVersion()\n    }, payload).$promise;\n  }\n\n  function upload(endpointId, path, file, volumeId, onProgress) {\n    const agentVersion = StateManager.getAgentApiVersion();\n\n    if (agentVersion < 2) {\n      throw new Error('upload is not supported on this agent version');\n    }\n\n    const url = `${API_ENDPOINT_ENDPOINTS}/${endpointId}/docker/v${agentVersion}/browse/put?volumeID=${volumeId}`;\n    return new Promise((resolve, reject) => {\n      Upload.upload({\n        url: url,\n        data: {\n          file,\n          Path: path\n        }\n      }).then(resolve, reject, onProgress);\n    });\n  }\n}//# sourceURL=webpack-internal:///45824\n");

}),

14916:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _analytics_services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./analytics-services */ 45119);\nconfig.$inject = [\"$analyticsProvider\", \"$windowProvider\"];\n\n\nconst basePath = 'http://portainer-ce.app'; // forked from https://github.com/angulartics/angulartics-piwik/blob/master/src/angulartics-piwik.js\n\n/**\n * @ngdoc overview\n * @name angulartics.piwik\n * Enables analytics support for Piwik/Matomo (http://piwik.org/docs/tracking-api/)\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('angulartics.matomo', ['angulartics']).config(config).name);\n/* @ngInject */\n\nfunction config($analyticsProvider, $windowProvider) {\n  const $window = $windowProvider.$get();\n  $analyticsProvider.settings.pageTracking.trackRelativePath = true;\n  $analyticsProvider.api.setPortainerStatus = _analytics_services__WEBPACK_IMPORTED_MODULE_1__.setPortainerStatus;\n  $analyticsProvider.api.setUserRole = _analytics_services__WEBPACK_IMPORTED_MODULE_1__.setUserRole;\n  $analyticsProvider.api.clearUserRole = _analytics_services__WEBPACK_IMPORTED_MODULE_1__.clearUserRole;\n  $analyticsProvider.api.setUserEndpointRole = _analytics_services__WEBPACK_IMPORTED_MODULE_1__.setUserEndpointRole;\n  $analyticsProvider.api.clearUserEndpointRole = _analytics_services__WEBPACK_IMPORTED_MODULE_1__.clearUserEndpointRole; // scope: visit or page. Defaults to 'page'\n\n  $analyticsProvider.api.setCustomVariable = function (varIndex, varName, value, scope = 'page') {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('setCustomVariable', varIndex, varName, value, scope);\n  }; // scope: visit or page. Defaults to 'page'\n\n\n  $analyticsProvider.api.deleteCustomVariable = function (varIndex, scope = 'page') {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('deleteCustomVariable', varIndex, scope);\n  }; // trackSiteSearch(keyword, category, [searchCount])\n\n\n  $analyticsProvider.api.trackSiteSearch = function (keyword, category, searchCount) {\n    // keyword is required\n    if (keyword) {\n      const params = ['trackSiteSearch', keyword, category || false]; // searchCount is optional\n\n      if (angular__WEBPACK_IMPORTED_MODULE_0___default().isDefined(searchCount)) {\n        params.push(searchCount);\n      }\n\n      (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)(params);\n    }\n  }; // logs a conversion for goal 1. revenue is optional\n  // trackGoal(goalID, [revenue]);\n\n\n  $analyticsProvider.api.trackGoal = function (goalID, revenue) {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('trackGoal', goalID, revenue || 0);\n  }; // track outlink or download\n  // linkType is 'link' or 'download', 'link' by default\n  // trackLink(url, [linkType]);\n\n\n  $analyticsProvider.api.trackLink = function (url, linkType) {\n    const type = linkType || 'link';\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('trackLink', url, type);\n  }; // Set default angulartics page and event tracking\n\n\n  $analyticsProvider.registerSetUsername(function (username) {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('setUserId', username);\n  }); // locationObj is the angular $location object\n\n  $analyticsProvider.registerPageTrack(function (path) {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('setDocumentTitle', $window.document.title);\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('setReferrerUrl', '');\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('setCustomUrl', basePath + path);\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('trackPageView');\n  });\n  /**\n   * @name eventTrack\n   * Track a basic event in Piwik, or send an ecommerce event.\n   *\n   * @param {string} action A string corresponding to the type of event that needs to be tracked.\n   * @param {object} properties The properties that need to be logged with the event.\n   */\n\n  $analyticsProvider.registerEventTrack(_analytics_services__WEBPACK_IMPORTED_MODULE_1__.trackEvent);\n  /**\n   * @name exceptionTrack\n   * Sugar on top of the eventTrack method for easily handling errors\n   *\n   * @param {object} error An Error object to track: error.toString() used for event 'action', error.stack used for event 'label'.\n   * @param {object} cause The cause of the error given from $exceptionHandler, not used.\n   */\n\n  $analyticsProvider.registerExceptionTrack(function (error) {\n    (0,_analytics_services__WEBPACK_IMPORTED_MODULE_1__.push)('trackEvent', 'Exceptions', error.toString(), error.stack, 0);\n  });\n}//# sourceURL=webpack-internal:///14916\n");

}),

54905:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"onStartupAngular\": function() { return /* binding */ onStartupAngular; }\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ 52474);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\nonStartupAngular.$inject = [\"$rootScope\", \"$state\", \"$interval\", \"LocalStorage\", \"EndpointProvider\", \"SystemService\", \"cfpLoadingBar\", \"$transitions\", \"HttpRequestHelper\"];\n\n\n/* @ngInject */\n\nfunction onStartupAngular($rootScope, $state, $interval, LocalStorage, EndpointProvider, SystemService, cfpLoadingBar, $transitions, HttpRequestHelper) {\n  EndpointProvider.initialize();\n  $rootScope.$state = $state;\n  const defaultTitle = document.title;\n  $transitions.onEnter({}, () => {\n    const endpoint = EndpointProvider.currentEndpoint();\n    document.title = endpoint ? `${defaultTitle} | ${endpoint.Name}` : `${defaultTitle}`;\n  }); // Workaround to prevent the loading bar from going backward\n  // https://github.com/chieffancypants/angular-loading-bar/issues/273\n\n  const originalSet = cfpLoadingBar.set;\n\n  cfpLoadingBar.set = function overrideSet(n) {\n    if (n > cfpLoadingBar.status()) {\n      originalSet.apply(cfpLoadingBar, arguments);\n    }\n  };\n\n  $transitions.onBefore({}, () => {\n    HttpRequestHelper.resetAgentHeaders();\n  }); // Keep-alive Edge endpoints by sending a ping request every minute\n\n  $interval(() => {\n    ping(EndpointProvider, SystemService);\n  }, 60 * 1000);\n  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ajaxSend((event, jqXhr, jqOpts) => {\n    const type = jqOpts.type === 'POST' || jqOpts.type === 'PUT' || jqOpts.type === 'PATCH';\n    const hasNoContentType = jqOpts.contentType !== 'application/json' && jqOpts.headers && !jqOpts.headers['Content-Type'];\n\n    if (type && hasNoContentType) {\n      jqXhr.setRequestHeader('Content-Type', 'application/json');\n    }\n\n    jqXhr.setRequestHeader('Authorization', 'Bearer ' + LocalStorage.getJWT());\n  });\n}\n\nfunction ping(EndpointProvider, SystemService) {\n  const endpoint = EndpointProvider.currentEndpoint();\n\n  if (endpoint && endpoint.Type == Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment) {\n    SystemService.ping(endpoint.Id);\n  }\n}//# sourceURL=webpack-internal:///54905\n");

}),

42311:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var bootstrap_dist_css_bootstrap_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap/dist/css/bootstrap.css */ 66908);\n/* harmony import */ var _fortawesome_fontawesome_free_css_brands_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fortawesome/fontawesome-free/css/brands.css */ 8147);\n/* harmony import */ var _fortawesome_fontawesome_free_css_solid_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/css/solid.css */ 94988);\n/* harmony import */ var _fortawesome_fontawesome_free_css_fontawesome_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/css/fontawesome.css */ 88755);\n/* harmony import */ var toastr_build_toastr_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! toastr/build/toastr.css */ 49785);\n/* harmony import */ var xterm_dist_xterm_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! xterm/dist/xterm.css */ 88009);\n/* harmony import */ var angularjs_slider_dist_rzslider_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! angularjs-slider/dist/rzslider.css */ 40775);\n/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ 42697);\n/* harmony import */ var codemirror_addon_lint_lint_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! codemirror/addon/lint/lint.css */ 97666);\n/* harmony import */ var angular_json_tree_dist_angular_json_tree_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! angular-json-tree/dist/angular-json-tree.css */ 60899);\n/* harmony import */ var angular_loading_bar_build_loading_bar_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! angular-loading-bar/build/loading-bar.css */ 66350);\n/* harmony import */ var angular_moment_picker_dist_angular_moment_picker_min_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! angular-moment-picker/dist/angular-moment-picker.min.css */ 29633);\n/* harmony import */ var spinkit_spinkit_min_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! spinkit/spinkit.min.css */ 69272);\n/* harmony import */ var _reach_menu_button_styles_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @reach/menu-button/styles.css */ 99254);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./colors */ 34281);\n/* harmony import */ var _rdash_css__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rdash.css */ 90515);\n/* harmony import */ var _app_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./app.css */ 95764);\n/* harmony import */ var _theme_css__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./theme.css */ 96326);\n/* harmony import */ var _vendor_override_css__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./vendor-override.css */ 46867);\n/* harmony import */ var _fonts_nomad_icon_css__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../fonts/nomad-icon.css */ 12805);\n/* harmony import */ var _bootstrap_override_css__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./bootstrap-override.css */ 99278);\n/* harmony import */ var _icon_css__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./icon.css */ 80338);\n/* harmony import */ var _button_css__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./button.css */ 45738);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack-internal:///42311\n");

}),

98767:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"configApp\": function() { return /* binding */ configApp; }\n/* harmony export */ });\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xterm */ 96049);\n/* harmony import */ var xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm/lib/addons/fit/fit */ 13501);\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./portainer/services/axios */ 6811);\nconfigApp.$inject = [\"$urlRouterProvider\", \"$httpProvider\", \"localStorageServiceProvider\", \"jwtOptionsProvider\", \"$uibTooltipProvider\", \"$compileProvider\", \"cfpLoadingBarProvider\"];\n\n\n\n/* @ngInject */\n\nfunction configApp($urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, $uibTooltipProvider, $compileProvider, cfpLoadingBarProvider) {\n  if (false) {}\n\n  localStorageServiceProvider.setPrefix('portainer');\n  jwtOptionsProvider.config({\n    tokenGetter:\n    /* @ngInject */\n    [\"LocalStorage\", function tokenGetter(LocalStorage) {\n      return LocalStorage.getJWT();\n    }],\n    whiteListedDomains: ['localhost']\n  });\n  $httpProvider.interceptors.push('jwtInterceptor');\n  $httpProvider.interceptors.push('EndpointStatusInterceptor');\n  $httpProvider.defaults.headers.post['Content-Type'] = 'application/json';\n  $httpProvider.defaults.headers.put['Content-Type'] = 'application/json';\n  $httpProvider.defaults.headers.patch['Content-Type'] = 'application/json';\n  $httpProvider.interceptors.push(() => ({\n    request: _portainer_services_axios__WEBPACK_IMPORTED_MODULE_2__.agentInterceptor\n  }));\n  xterm__WEBPACK_IMPORTED_MODULE_0__.Terminal.applyAddon(xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_1__);\n  $uibTooltipProvider.setTriggers({\n    mouseenter: 'mouseleave',\n    click: 'click',\n    focus: 'blur',\n    outsideClick: 'outsideClick'\n  });\n  cfpLoadingBarProvider.includeSpinner = false;\n  cfpLoadingBarProvider.parentSelector = '#loadingbar-placeholder';\n  cfpLoadingBarProvider.latencyThreshold = 600;\n  $urlRouterProvider.otherwise('/auth');\n}//# sourceURL=webpack-internal:///98767\n");

}),

71541:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"API_ENDPOINT_AUTH\": function() { return /* binding */ API_ENDPOINT_AUTH; },\n/* harmony export */   \"API_ENDPOINT_BACKUP\": function() { return /* binding */ API_ENDPOINT_BACKUP; },\n/* harmony export */   \"API_ENDPOINT_CUSTOM_TEMPLATES\": function() { return /* binding */ API_ENDPOINT_CUSTOM_TEMPLATES; },\n/* harmony export */   \"API_ENDPOINT_EDGE_GROUPS\": function() { return /* binding */ API_ENDPOINT_EDGE_GROUPS; },\n/* harmony export */   \"API_ENDPOINT_EDGE_JOBS\": function() { return /* binding */ API_ENDPOINT_EDGE_JOBS; },\n/* harmony export */   \"API_ENDPOINT_EDGE_STACKS\": function() { return /* binding */ API_ENDPOINT_EDGE_STACKS; },\n/* harmony export */   \"API_ENDPOINT_EDGE_TEMPLATES\": function() { return /* binding */ API_ENDPOINT_EDGE_TEMPLATES; },\n/* harmony export */   \"API_ENDPOINT_ENDPOINTS\": function() { return /* binding */ API_ENDPOINT_ENDPOINTS; },\n/* harmony export */   \"API_ENDPOINT_ENDPOINT_GROUPS\": function() { return /* binding */ API_ENDPOINT_ENDPOINT_GROUPS; },\n/* harmony export */   \"API_ENDPOINT_KUBERNETES\": function() { return /* binding */ API_ENDPOINT_KUBERNETES; },\n/* harmony export */   \"API_ENDPOINT_MOTD\": function() { return /* binding */ API_ENDPOINT_MOTD; },\n/* harmony export */   \"API_ENDPOINT_REGISTRIES\": function() { return /* binding */ API_ENDPOINT_REGISTRIES; },\n/* harmony export */   \"API_ENDPOINT_RESOURCE_CONTROLS\": function() { return /* binding */ API_ENDPOINT_RESOURCE_CONTROLS; },\n/* harmony export */   \"API_ENDPOINT_SETTINGS\": function() { return /* binding */ API_ENDPOINT_SETTINGS; },\n/* harmony export */   \"API_ENDPOINT_STACKS\": function() { return /* binding */ API_ENDPOINT_STACKS; },\n/* harmony export */   \"API_ENDPOINT_STATUS\": function() { return /* binding */ API_ENDPOINT_STATUS; },\n/* harmony export */   \"API_ENDPOINT_SUPPORT\": function() { return /* binding */ API_ENDPOINT_SUPPORT; },\n/* harmony export */   \"API_ENDPOINT_USERS\": function() { return /* binding */ API_ENDPOINT_USERS; },\n/* harmony export */   \"API_ENDPOINT_TAGS\": function() { return /* binding */ API_ENDPOINT_TAGS; },\n/* harmony export */   \"API_ENDPOINT_TEAMS\": function() { return /* binding */ API_ENDPOINT_TEAMS; },\n/* harmony export */   \"API_ENDPOINT_TEAM_MEMBERSHIPS\": function() { return /* binding */ API_ENDPOINT_TEAM_MEMBERSHIPS; },\n/* harmony export */   \"API_ENDPOINT_TEMPLATES\": function() { return /* binding */ API_ENDPOINT_TEMPLATES; },\n/* harmony export */   \"API_ENDPOINT_WEBHOOKS\": function() { return /* binding */ API_ENDPOINT_WEBHOOKS; },\n/* harmony export */   \"DEFAULT_TEMPLATES_URL\": function() { return /* binding */ DEFAULT_TEMPLATES_URL; },\n/* harmony export */   \"PAGINATION_MAX_ITEMS\": function() { return /* binding */ PAGINATION_MAX_ITEMS; },\n/* harmony export */   \"APPLICATION_CACHE_VALIDITY\": function() { return /* binding */ APPLICATION_CACHE_VALIDITY; },\n/* harmony export */   \"CONSOLE_COMMANDS_LABEL_PREFIX\": function() { return /* binding */ CONSOLE_COMMANDS_LABEL_PREFIX; },\n/* harmony export */   \"PREDEFINED_NETWORKS\": function() { return /* binding */ PREDEFINED_NETWORKS; },\n/* harmony export */   \"KUBERNETES_DEFAULT_NAMESPACE\": function() { return /* binding */ KUBERNETES_DEFAULT_NAMESPACE; },\n/* harmony export */   \"KUBERNETES_SYSTEM_NAMESPACES\": function() { return /* binding */ KUBERNETES_SYSTEM_NAMESPACES; },\n/* harmony export */   \"PORTAINER_FADEOUT\": function() { return /* binding */ PORTAINER_FADEOUT; },\n/* harmony export */   \"STACK_NAME_VALIDATION_REGEX\": function() { return /* binding */ STACK_NAME_VALIDATION_REGEX; },\n/* harmony export */   \"TEMPLATE_NAME_VALIDATION_REGEX\": function() { return /* binding */ TEMPLATE_NAME_VALIDATION_REGEX; },\n/* harmony export */   \"BROWSER_OS_PLATFORM\": function() { return /* binding */ BROWSER_OS_PLATFORM; },\n/* harmony export */   \"NEW_LINE_BREAKER\": function() { return /* binding */ NEW_LINE_BREAKER; }\n/* harmony export */ });\nconst API_ENDPOINT_AUTH = 'api/auth';\nconst API_ENDPOINT_BACKUP = 'api/backup';\nconst API_ENDPOINT_CUSTOM_TEMPLATES = 'api/custom_templates';\nconst API_ENDPOINT_EDGE_GROUPS = 'api/edge_groups';\nconst API_ENDPOINT_EDGE_JOBS = 'api/edge_jobs';\nconst API_ENDPOINT_EDGE_STACKS = 'api/edge_stacks';\nconst API_ENDPOINT_EDGE_TEMPLATES = 'api/edge_templates';\nconst API_ENDPOINT_ENDPOINTS = 'api/endpoints';\nconst API_ENDPOINT_ENDPOINT_GROUPS = 'api/endpoint_groups';\nconst API_ENDPOINT_KUBERNETES = 'api/kubernetes';\nconst API_ENDPOINT_MOTD = 'api/motd';\nconst API_ENDPOINT_REGISTRIES = 'api/registries';\nconst API_ENDPOINT_RESOURCE_CONTROLS = 'api/resource_controls';\nconst API_ENDPOINT_SETTINGS = 'api/settings';\nconst API_ENDPOINT_STACKS = 'api/stacks';\nconst API_ENDPOINT_STATUS = 'api/status';\nconst API_ENDPOINT_SUPPORT = 'api/support';\nconst API_ENDPOINT_USERS = 'api/users';\nconst API_ENDPOINT_TAGS = 'api/tags';\nconst API_ENDPOINT_TEAMS = 'api/teams';\nconst API_ENDPOINT_TEAM_MEMBERSHIPS = 'api/team_memberships';\nconst API_ENDPOINT_TEMPLATES = 'api/templates';\nconst API_ENDPOINT_WEBHOOKS = 'api/webhooks';\nconst DEFAULT_TEMPLATES_URL = 'https://raw.githubusercontent.com/portainer/templates/master/templates.json';\nconst PAGINATION_MAX_ITEMS = 10;\nconst APPLICATION_CACHE_VALIDITY = 3600;\nconst CONSOLE_COMMANDS_LABEL_PREFIX = 'io.portainer.commands.';\nconst PREDEFINED_NETWORKS = ['host', 'bridge', 'ingress', 'nat', 'none'];\nconst KUBERNETES_DEFAULT_NAMESPACE = 'default';\nconst KUBERNETES_SYSTEM_NAMESPACES = ['kube-system', 'kube-public', 'kube-node-lease', 'portainer'];\nconst PORTAINER_FADEOUT = 1500;\nconst STACK_NAME_VALIDATION_REGEX = '^[-_a-z0-9]+$';\nconst TEMPLATE_NAME_VALIDATION_REGEX = '^[-_a-z0-9]+$';\nconst BROWSER_OS_PLATFORM = navigator.userAgent.indexOf('Windows') > -1 ? 'win' : navigator.userAgent.indexOf('Mac') > -1 ? 'mac' : 'lin';\nconst NEW_LINE_BREAKER = BROWSER_OS_PLATFORM === 'win' ? '\\r\\n' : '\\n'; // don't declare new constants, either:\n// - if only used in one file or module, declare in that file or module (as a regular js constant)\n// - if needed across modules, declare like the above constant and use es6 import for that\n\nangular.module('portainer').constant('API_ENDPOINT_AUTH', API_ENDPOINT_AUTH).constant('API_ENDPOINT_BACKUP', API_ENDPOINT_BACKUP).constant('API_ENDPOINT_CUSTOM_TEMPLATES', API_ENDPOINT_CUSTOM_TEMPLATES).constant('API_ENDPOINT_EDGE_GROUPS', API_ENDPOINT_EDGE_GROUPS).constant('API_ENDPOINT_EDGE_JOBS', API_ENDPOINT_EDGE_JOBS).constant('API_ENDPOINT_EDGE_STACKS', API_ENDPOINT_EDGE_STACKS).constant('API_ENDPOINT_EDGE_TEMPLATES', API_ENDPOINT_EDGE_TEMPLATES).constant('API_ENDPOINT_ENDPOINTS', API_ENDPOINT_ENDPOINTS).constant('API_ENDPOINT_ENDPOINT_GROUPS', API_ENDPOINT_ENDPOINT_GROUPS).constant('API_ENDPOINT_KUBERNETES', API_ENDPOINT_KUBERNETES).constant('API_ENDPOINT_MOTD', API_ENDPOINT_MOTD).constant('API_ENDPOINT_REGISTRIES', API_ENDPOINT_REGISTRIES).constant('API_ENDPOINT_RESOURCE_CONTROLS', API_ENDPOINT_RESOURCE_CONTROLS).constant('API_ENDPOINT_SETTINGS', API_ENDPOINT_SETTINGS).constant('API_ENDPOINT_STACKS', API_ENDPOINT_STACKS).constant('API_ENDPOINT_STATUS', API_ENDPOINT_STATUS).constant('API_ENDPOINT_SUPPORT', API_ENDPOINT_SUPPORT).constant('API_ENDPOINT_USERS', API_ENDPOINT_USERS).constant('API_ENDPOINT_TAGS', API_ENDPOINT_TAGS).constant('API_ENDPOINT_TEAMS', API_ENDPOINT_TEAMS).constant('API_ENDPOINT_TEAM_MEMBERSHIPS', API_ENDPOINT_TEAM_MEMBERSHIPS).constant('API_ENDPOINT_TEMPLATES', API_ENDPOINT_TEMPLATES).constant('API_ENDPOINT_WEBHOOKS', API_ENDPOINT_WEBHOOKS).constant('DEFAULT_TEMPLATES_URL', DEFAULT_TEMPLATES_URL).constant('PAGINATION_MAX_ITEMS', PAGINATION_MAX_ITEMS).constant('APPLICATION_CACHE_VALIDITY', APPLICATION_CACHE_VALIDITY).constant('CONSOLE_COMMANDS_LABEL_PREFIX', CONSOLE_COMMANDS_LABEL_PREFIX).constant('PREDEFINED_NETWORKS', PREDEFINED_NETWORKS).constant('BROWSER_OS_PLATFORM', BROWSER_OS_PLATFORM);//# sourceURL=webpack-internal:///71541\n");

}),

2601:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./react */ 9623);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./views/configs/configs.html */ 66188);\n\nconst autoNgTemplateLoaderTemplate2 = __webpack_require__(/*! ./views/configs/edit/config.html */ 67539);\n\nconst autoNgTemplateLoaderTemplate3 = __webpack_require__(/*! ./views/configs/create/createconfig.html */ 20641);\n\nconst autoNgTemplateLoaderTemplate4 = __webpack_require__(/*! ./views/dashboard/dashboard.html */ 30357);\n\nconst autoNgTemplateLoaderTemplate5 = __webpack_require__(/*! ./views/events/events.html */ 9208);\n\nconst autoNgTemplateLoaderTemplate6 = __webpack_require__(/*! ./views/images/images.html */ 30503);\n\nconst autoNgTemplateLoaderTemplate7 = __webpack_require__(/*! ./views/images/edit/image.html */ 35003);\n\nconst autoNgTemplateLoaderTemplate8 = __webpack_require__(/*! ./views/images/build/buildimage.html */ 14147);\n\nconst autoNgTemplateLoaderTemplate9 = __webpack_require__(/*! ./views/images/import/importimage.html */ 26447);\n\nconst autoNgTemplateLoaderTemplate10 = __webpack_require__(/*! ./views/networks/networks.html */ 5147);\n\nconst autoNgTemplateLoaderTemplate11 = __webpack_require__(/*! ./views/networks/create/createnetwork.html */ 8285);\n\nconst autoNgTemplateLoaderTemplate12 = __webpack_require__(/*! ./views/secrets/secrets.html */ 8809);\n\nconst autoNgTemplateLoaderTemplate13 = __webpack_require__(/*! ./views/secrets/edit/secret.html */ 12685);\n\nconst autoNgTemplateLoaderTemplate14 = __webpack_require__(/*! ./views/secrets/create/createsecret.html */ 13702);\n\nconst autoNgTemplateLoaderTemplate15 = __webpack_require__(/*! ./views/services/services.html */ 3903);\n\nconst autoNgTemplateLoaderTemplate16 = __webpack_require__(/*! ./views/services/edit/service.html */ 66973);\n\nconst autoNgTemplateLoaderTemplate17 = __webpack_require__(/*! ./views/services/create/createservice.html */ 53566);\n\nconst autoNgTemplateLoaderTemplate18 = __webpack_require__(/*! ./views/services/logs/servicelogs.html */ 42382);\n\nconst autoNgTemplateLoaderTemplate19 = __webpack_require__(/*! Portainer/views/stacks/stacks.html */ 25872);\n\nconst autoNgTemplateLoaderTemplate20 = __webpack_require__(/*! Portainer/views/stacks/edit/stack.html */ 68156);\n\nconst autoNgTemplateLoaderTemplate21 = __webpack_require__(/*! @/docker/views/containers/edit/container.html */ 5744);\n\nconst autoNgTemplateLoaderTemplate22 = __webpack_require__(/*! Portainer/views/stacks/create/createstack.html */ 24021);\n\nconst autoNgTemplateLoaderTemplate23 = __webpack_require__(/*! ./views/swarm/swarm.html */ 12367);\n\nconst autoNgTemplateLoaderTemplate24 = __webpack_require__(/*! ./views/swarm/visualizer/swarmvisualizer.html */ 40640);\n\nconst autoNgTemplateLoaderTemplate25 = __webpack_require__(/*! ./views/tasks/edit/task.html */ 32240);\n\nconst autoNgTemplateLoaderTemplate26 = __webpack_require__(/*! ./views/tasks/logs/tasklogs.html */ 62770);\n\nconst autoNgTemplateLoaderTemplate27 = __webpack_require__(/*! Portainer/views/templates/templates.html */ 61242);\n\nconst autoNgTemplateLoaderTemplate28 = __webpack_require__(/*! ./views/volumes/volumes.html */ 95290);\n\nconst autoNgTemplateLoaderTemplate29 = __webpack_require__(/*! ./views/volumes/edit/volume.html */ 10577);\n\nconst autoNgTemplateLoaderTemplate30 = __webpack_require__(/*! ./views/volumes/browse/browsevolume.html */ 90347);\n\nconst autoNgTemplateLoaderTemplate31 = __webpack_require__(/*! ./views/volumes/create/createvolume.html */ 9713);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.docker', ['portainer.app', _react__WEBPACK_IMPORTED_MODULE_2__.reactModule]).config(['$stateRegistryProvider', function ($stateRegistryProvider) {\n  'use strict';\n\n  var docker = {\n    name: 'docker',\n    parent: 'endpoint',\n    url: '/docker',\n    abstract: true,\n    onEnter:\n    /* @ngInject */\n    [\"endpoint\", \"$async\", \"$state\", \"EndpointService\", \"EndpointProvider\", \"Notifications\", \"StateManager\", \"SystemService\", function onEnter(endpoint, $async, $state, EndpointService, EndpointProvider, Notifications, StateManager, SystemService) {\n      return $async(async () => {\n        if (![1, 2, 4].includes(endpoint.Type)) {\n          $state.go('portainer.home');\n          return;\n        }\n\n        try {\n          const status = await checkEndpointStatus(endpoint);\n\n          if (endpoint.Type !== 4) {\n            await updateEndpointStatus(endpoint, status);\n          }\n\n          endpoint.Status = status;\n\n          if (status === _portainer_environments_types__WEBPACK_IMPORTED_MODULE_1__.EnvironmentStatus.Down) {\n            throw new Error('Environment is unreachable.');\n          }\n\n          EndpointProvider.setEndpointID(endpoint.Id);\n          EndpointProvider.setEndpointPublicURL(endpoint.PublicURL);\n          EndpointProvider.setOfflineModeFromStatus(endpoint.Status);\n          await StateManager.updateEndpointState(endpoint);\n        } catch (e) {\n          Notifications.error('Failed loading environment', e);\n          $state.go('portainer.home', {}, {\n            reload: true\n          });\n        }\n\n        async function checkEndpointStatus(endpoint) {\n          try {\n            await SystemService.ping(endpoint.Id);\n            return 1;\n          } catch (e) {\n            return 2;\n          }\n        }\n\n        async function updateEndpointStatus(endpoint, status) {\n          if (endpoint.Status === status) {\n            return;\n          }\n\n          await EndpointService.updateEndpoint(endpoint.Id, {\n            Status: status\n          });\n        }\n      });\n    }]\n  };\n  var configs = {\n    name: 'docker.configs',\n    url: '/configs',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate1,\n        controller: 'ConfigsController',\n        controllerAs: 'ctrl'\n      }\n    }\n  };\n  var config = {\n    name: 'docker.configs.config',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate2,\n        controller: 'ConfigController'\n      }\n    }\n  };\n  var configCreation = {\n    name: 'docker.configs.new',\n    url: '/new?id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate3,\n        controller: 'CreateConfigController',\n        controllerAs: 'ctrl'\n      }\n    }\n  };\n  const customTemplates = {\n    name: 'docker.templates.custom',\n    url: '/custom',\n    views: {\n      'content@': {\n        component: 'customTemplatesView'\n      }\n    }\n  };\n  const customTemplatesNew = {\n    name: 'docker.templates.custom.new',\n    url: '/new?fileContent&type',\n    views: {\n      'content@': {\n        component: 'createCustomTemplateView'\n      }\n    },\n    params: {\n      fileContent: '',\n      type: ''\n    }\n  };\n  const customTemplatesEdit = {\n    name: 'docker.templates.custom.edit',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'editCustomTemplateView'\n      }\n    }\n  };\n  var dashboard = {\n    name: 'docker.dashboard',\n    url: '/dashboard',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate4,\n        controller: 'DashboardController'\n      }\n    }\n  };\n  var host = {\n    name: 'docker.host',\n    url: '/host',\n    views: {\n      'content@': {\n        component: 'hostView'\n      }\n    }\n  };\n  var hostBrowser = {\n    name: 'docker.host.browser',\n    url: '/browser',\n    views: {\n      'content@': {\n        component: 'hostBrowserView'\n      }\n    }\n  };\n  var events = {\n    name: 'docker.events',\n    url: '/events',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate5,\n        controller: 'EventsController'\n      }\n    }\n  };\n  var images = {\n    name: 'docker.images',\n    url: '/images',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate6,\n        controller: 'ImagesController'\n      }\n    }\n  };\n  var image = {\n    name: 'docker.images.image',\n    url: '/:id?nodeName',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate7,\n        controller: 'ImageController'\n      }\n    }\n  };\n  var imageBuild = {\n    name: 'docker.images.build',\n    url: '/build',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate8,\n        controller: 'BuildImageController'\n      }\n    }\n  };\n  var imageImport = {\n    name: 'docker.images.import',\n    url: '/import',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate9,\n        controller: 'ImportImageController'\n      }\n    }\n  };\n  var networks = {\n    name: 'docker.networks',\n    url: '/networks',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate10,\n        controller: 'NetworksController'\n      }\n    }\n  };\n  var network = {\n    name: 'docker.networks.network',\n    url: '/:id?nodeName',\n    views: {\n      'content@': {\n        component: 'networkDetailsView'\n      }\n    }\n  };\n  var networkCreation = {\n    name: 'docker.networks.new',\n    url: '/new',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate11,\n        controller: 'CreateNetworkController'\n      }\n    }\n  };\n  var nodes = {\n    name: 'docker.nodes',\n    url: '/nodes',\n    abstract: true\n  };\n  var node = {\n    name: 'docker.nodes.node',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'nodeDetailsView'\n      }\n    }\n  };\n  var nodeBrowser = {\n    name: 'docker.nodes.node.browse',\n    url: '/browse',\n    views: {\n      'content@': {\n        component: 'nodeBrowserView'\n      }\n    }\n  };\n  var secrets = {\n    name: 'docker.secrets',\n    url: '/secrets',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate12,\n        controller: 'SecretsController'\n      }\n    }\n  };\n  var secret = {\n    name: 'docker.secrets.secret',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate13,\n        controller: 'SecretController'\n      }\n    }\n  };\n  var secretCreation = {\n    name: 'docker.secrets.new',\n    url: '/new',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate14,\n        controller: 'CreateSecretController'\n      }\n    }\n  };\n  var services = {\n    name: 'docker.services',\n    url: '/services',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate15,\n        controller: 'ServicesController'\n      }\n    }\n  };\n  var service = {\n    name: 'docker.services.service',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate16,\n        controller: 'ServiceController'\n      }\n    }\n  };\n  var serviceCreation = {\n    name: 'docker.services.new',\n    url: '/new',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate17,\n        controller: 'CreateServiceController'\n      }\n    }\n  };\n  var serviceLogs = {\n    name: 'docker.services.service.logs',\n    url: '/logs',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate18,\n        controller: 'ServiceLogsController'\n      }\n    }\n  };\n  var stacks = {\n    name: 'docker.stacks',\n    url: '/stacks',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate19,\n        controller: 'StacksController'\n      }\n    }\n  };\n  var stack = {\n    name: 'docker.stacks.stack',\n    url: '/:name?id&type&regular&external&orphaned&orphanedRunning',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate20,\n        controller: 'StackController'\n      }\n    }\n  };\n  var stackContainer = {\n    name: 'docker.stacks.stack.container',\n    url: '/:id?nodeName',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate21,\n        controller: 'ContainerController'\n      }\n    }\n  };\n  var stackCreation = {\n    name: 'docker.stacks.newstack',\n    url: '/newstack',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate22,\n        controller: 'CreateStackController'\n      }\n    }\n  };\n  var swarm = {\n    name: 'docker.swarm',\n    url: '/swarm',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate23,\n        controller: 'SwarmController'\n      }\n    }\n  };\n  var swarmVisualizer = {\n    name: 'docker.swarm.visualizer',\n    url: '/visualizer',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate24,\n        controller: 'SwarmVisualizerController'\n      }\n    }\n  };\n  var tasks = {\n    name: 'docker.tasks',\n    url: '/tasks',\n    abstract: true\n  };\n  var task = {\n    name: 'docker.tasks.task',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate25,\n        controller: 'TaskController'\n      }\n    }\n  };\n  var taskLogs = {\n    name: 'docker.tasks.task.logs',\n    url: '/logs',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate26,\n        controller: 'TaskLogsController'\n      }\n    }\n  };\n  var templates = {\n    name: 'docker.templates',\n    url: '/templates',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate27,\n        controller: 'TemplatesController'\n      }\n    }\n  };\n  var volumes = {\n    name: 'docker.volumes',\n    url: '/volumes',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate28,\n        controller: 'VolumesController'\n      }\n    }\n  };\n  var volume = {\n    name: 'docker.volumes.volume',\n    url: '/:id?nodeName',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate29,\n        controller: 'VolumeController'\n      }\n    }\n  };\n  var volumeBrowse = {\n    name: 'docker.volumes.volume.browse',\n    url: '/browse',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate30,\n        controller: 'BrowseVolumeController'\n      }\n    }\n  };\n  var volumeCreation = {\n    name: 'docker.volumes.new',\n    url: '/new',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate31,\n        controller: 'CreateVolumeController'\n      }\n    }\n  };\n  const dockerFeaturesConfiguration = {\n    name: 'docker.host.featuresConfiguration',\n    url: '/feat-config',\n    views: {\n      'content@': {\n        component: 'dockerFeaturesConfigurationView'\n      }\n    }\n  };\n  const swarmFeaturesConfiguration = {\n    name: 'docker.swarm.featuresConfiguration',\n    url: '/feat-config',\n    views: {\n      'content@': {\n        component: 'dockerFeaturesConfigurationView'\n      }\n    }\n  };\n  const dockerRegistries = {\n    name: 'docker.host.registries',\n    url: '/registries',\n    views: {\n      'content@': {\n        component: 'endpointRegistriesView'\n      }\n    }\n  };\n  const swarmRegistries = {\n    name: 'docker.swarm.registries',\n    url: '/registries',\n    views: {\n      'content@': {\n        component: 'endpointRegistriesView'\n      }\n    }\n  };\n  const dockerRegistryAccess = {\n    name: 'docker.host.registries.access',\n    url: '/:id/access',\n    views: {\n      'content@': {\n        component: 'dockerRegistryAccessView'\n      }\n    }\n  };\n  const swarmRegistryAccess = {\n    name: 'docker.swarm.registries.access',\n    url: '/:id/access',\n    views: {\n      'content@': {\n        component: 'dockerRegistryAccessView'\n      }\n    }\n  };\n  $stateRegistryProvider.register(configs);\n  $stateRegistryProvider.register(config);\n  $stateRegistryProvider.register(configCreation);\n  $stateRegistryProvider.register(customTemplates);\n  $stateRegistryProvider.register(customTemplatesNew);\n  $stateRegistryProvider.register(customTemplatesEdit);\n  $stateRegistryProvider.register(docker);\n  $stateRegistryProvider.register(dashboard);\n  $stateRegistryProvider.register(host);\n  $stateRegistryProvider.register(hostBrowser);\n  $stateRegistryProvider.register(events);\n  $stateRegistryProvider.register(images);\n  $stateRegistryProvider.register(image);\n  $stateRegistryProvider.register(imageBuild);\n  $stateRegistryProvider.register(imageImport);\n  $stateRegistryProvider.register(networks);\n  $stateRegistryProvider.register(network);\n  $stateRegistryProvider.register(networkCreation);\n  $stateRegistryProvider.register(nodes);\n  $stateRegistryProvider.register(node);\n  $stateRegistryProvider.register(nodeBrowser);\n  $stateRegistryProvider.register(secrets);\n  $stateRegistryProvider.register(secret);\n  $stateRegistryProvider.register(secretCreation);\n  $stateRegistryProvider.register(services);\n  $stateRegistryProvider.register(service);\n  $stateRegistryProvider.register(serviceCreation);\n  $stateRegistryProvider.register(serviceLogs);\n  $stateRegistryProvider.register(stacks);\n  $stateRegistryProvider.register(stack);\n  $stateRegistryProvider.register(stackContainer);\n  $stateRegistryProvider.register(stackCreation);\n  $stateRegistryProvider.register(swarm);\n  $stateRegistryProvider.register(swarmVisualizer);\n  $stateRegistryProvider.register(tasks);\n  $stateRegistryProvider.register(task);\n  $stateRegistryProvider.register(taskLogs);\n  $stateRegistryProvider.register(templates);\n  $stateRegistryProvider.register(volumes);\n  $stateRegistryProvider.register(volume);\n  $stateRegistryProvider.register(volumeBrowse);\n  $stateRegistryProvider.register(volumeCreation);\n  $stateRegistryProvider.register(dockerFeaturesConfiguration);\n  $stateRegistryProvider.register(swarmFeaturesConfiguration);\n  $stateRegistryProvider.register(dockerRegistries);\n  $stateRegistryProvider.register(swarmRegistries);\n  $stateRegistryProvider.register(dockerRegistryAccess);\n  $stateRegistryProvider.register(swarmRegistryAccess);\n}]);//# sourceURL=webpack-internal:///2601\n");

}),

99831:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ContainerCapabilitiesController; }\n/* harmony export */ });\nclass ContainerCapabilitiesController {\n  /* @ngInject */\n  constructor($scope) {\n    this.$scope = $scope;\n    this.oldCapabilities = [];\n  }\n\n  createOnChangeHandler(capability) {\n    return checked => {\n      this.$scope.$evalAsync(() => {\n        capability.allowed = checked;\n      });\n    };\n  }\n\n  $doCheck() {\n    if (this.oldCapabilities.length !== this.capabilities.length) {\n      this.oldCapabilities = this.capabilities;\n      this.capabilitiesOnChange = Object.fromEntries(this.capabilities.map(cap => [cap.capability, this.createOnChangeHandler(cap)]));\n    }\n  }\n\n}\nContainerCapabilitiesController.$inject = [\"$scope\"];//# sourceURL=webpack-internal:///99831\n");

}),

83088:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _container_capabilities_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./container-capabilities.controller */ 99831);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./containerCapabilities.html */ 81521);\n\n\nangular.module('portainer.docker').component('containerCapabilities', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    capabilities: '='\n  },\n  controller: _container_capabilities_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});//# sourceURL=webpack-internal:///83088\n");

}),

17592:

(function() {

eval("angular.module('portainer.docker').controller('ContainerRestartPolicyController', [function ContainerRestartPolicyController() {\n  var ctrl = this;\n  this.state = {\n    editModel: {}\n  };\n  ctrl.save = save;\n\n  function save() {\n    if (ctrl.state.editModel.name === ctrl.name && ctrl.state.editModel.maximumRetryCount === ctrl.maximumRetryCount) {\n      return;\n    }\n\n    ctrl.updateRestartPolicy(ctrl.state.editModel);\n  }\n\n  this.$onInit = function () {\n    ctrl.state.editModel = {\n      name: ctrl.name ? ctrl.name : 'no',\n      maximumRetryCount: ctrl.maximumRetryCount\n    };\n  };\n}]);//# sourceURL=webpack-internal:///17592\n");

}),

8270:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./container-restart-policy.html */ 80239);\n\nangular.module('portainer.docker').component('containerRestartPolicy', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ContainerRestartPolicyController',\n  bindings: {\n    name: '<',\n    maximumRetryCount: '<',\n    updateRestartPolicy: '&'\n  }\n});//# sourceURL=webpack-internal:///8270\n");

}),

15772:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./dashboardClusterAgentInfo.html */ 171);\n\nangular.module('portainer.docker').component('dashboardClusterAgentInfo', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'DashboardClusterAgentInfoController'\n});//# sourceURL=webpack-internal:///15772\n");

}),

26419:

(function() {

eval("angular.module('portainer.docker').controller('DashboardClusterAgentInfoController', ['AgentService', 'Notifications', function (AgentService, Notifications) {\n  var ctrl = this;\n\n  this.$onInit = function () {\n    AgentService.agents().then(function success(data) {\n      ctrl.agentCount = data.length;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve agent information');\n    });\n  };\n}]);//# sourceURL=webpack-internal:///26419\n");

}),

62135:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./configsDatatable.html */ 80602);\n\nangular.module('portainer.docker').component('configsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///62135\n");

}),

65532:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./containerNetworksDatatable.html */ 49229);\n\nangular.module('portainer.docker').component('containerNetworksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ContainerNetworksDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    container: '<',\n    availableNetworks: '<',\n    joinNetworkAction: '<',\n    joinNetworkActionInProgress: '<',\n    leaveNetworkActionInProgress: '<',\n    leaveNetworkAction: '<',\n    nodeName: '<'\n  }\n});//# sourceURL=webpack-internal:///65532\n");

}),

50015:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.docker').controller('ContainerNetworksDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: true\n  });\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n\n    if (!item.Expanded) {\n      this.state.expandAll = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.GlobalIPv6Address !== '';\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.dataset, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.dataset, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.dataset, item => {\n      item.Expanded = true;\n      item.Highlighted = true;\n    });\n  };\n}]);//# sourceURL=webpack-internal:///50015\n");

}),

67723:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./containerProcessesDatatable.html */ 85566);\n\nangular.module('portainer.docker').component('containerProcessesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '=',\n    headerset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n});//# sourceURL=webpack-internal:///67723\n");

}),

3716:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./eventsDatatable.html */ 2576);\n\nangular.module('portainer.docker').component('eventsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n});//# sourceURL=webpack-internal:///3716\n");

}),

61389:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./imagesDatatable.html */ 33261);\n\nangular.module('portainer.docker').component('imagesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ImagesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    showHostColumn: '<',\n    removeAction: '<',\n    downloadAction: '<',\n    forceRemoveAction: '<',\n    exportInProgress: '<',\n    offlineMode: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///61389\n");

}),

40650:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _imagesDatatable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imagesDatatable.css */ 22997);\n\nangular.module('portainer.docker').controller('ImagesDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  var ctrl = this;\n  this.filters = {\n    state: {\n      open: false,\n      enabled: false,\n      showUsedImages: true,\n      showUnusedImages: true\n    }\n  };\n\n  this.applyFilters = function (value) {\n    var image = value;\n    var filters = ctrl.filters;\n\n    if (image.ContainerCount === 0 && filters.state.showUnusedImages || image.ContainerCount !== 0 && filters.state.showUsedImages) {\n      return true;\n    }\n\n    return false;\n  };\n\n  this.onstateFilterChange = function () {\n    var filters = this.filters.state;\n    var filtered = false;\n\n    if (!filters.showUsedImages || !filters.showUnusedImages) {\n      filtered = true;\n    }\n\n    this.filters.state.enabled = filtered;\n    DatatableService.setDataTableFilters(this.tableKey, this.filters);\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///40650\n");

}),

78570:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./macvlanNodesDatatable.html */ 19618);\n\nangular.module('portainer.docker').component('macvlanNodesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    showIpAddressColumn: '<',\n    accessToNodeDetails: '<',\n    state: '='\n  }\n});//# sourceURL=webpack-internal:///78570\n");

}),

24342:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./networkRowContent.html */ 47967);\n\n\nangular.module('portainer.docker').directive('networkRowContent', [function networkRowContent() {\n  var directive = {\n    templateUrl: autoNgTemplateLoaderTemplate1,\n    restrict: 'A',\n    transclude: true,\n    scope: {\n      item: '<',\n      parentCtrl: '<',\n      allowCheckbox: '<',\n      allowExpand: '<'\n    },\n    controller: [\"$scope\", $scope => {\n      $scope.RCO = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership;\n    }]\n  };\n  return directive;\n}]);//# sourceURL=webpack-internal:///24342\n");

}),

21035:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./networksDatatable.html */ 8755);\n\nangular.module('portainer.docker').component('networksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NetworksDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    showHostColumn: '<',\n    removeAction: '<',\n    offlineMode: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///21035\n");

}),

22821:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.docker').controller('NetworksDatatableController', ['$scope', '$controller', 'NetworkHelper', 'DatatableService', function ($scope, $controller, NetworkHelper, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.disableRemove = function (item) {\n    return NetworkHelper.isSystemNetwork(item);\n  };\n\n  this.state = Object.assign(this.state, {\n    expandedItems: []\n  });\n  /**\n   * Do not allow system networks to be selected\n   */\n\n  this.allowSelection = function (item) {\n    return !this.disableRemove(item);\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n\n  this.expandItem = function (item, expanded) {\n    item.Expanded = expanded;\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.Subs.length > 0;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///22821\n");

}),

90712:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./nodeTasksDatatable.html */ 64255);\n\nangular.module('portainer.docker').component('nodeTasksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n});//# sourceURL=webpack-internal:///90712\n");

}),

66951:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./nodesDatatable.html */ 53379);\n\nangular.module('portainer.docker').component('nodesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    showIpAddressColumn: '<',\n    accessToNodeDetails: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///66951\n");

}),

1087:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./secretsDatatable.html */ 7091);\n\nangular.module('portainer.docker').component('secretsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///1087\n");

}),

30700:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./serviceTasksDatatable.html */ 71483);\n\nangular.module('portainer.docker').component('serviceTasksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ServiceTasksDatatableController',\n  bindings: {\n    dataset: '<',\n    serviceId: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    nodes: '<',\n    agentProxy: '<',\n    textFilter: '=',\n    showTaskLogsButton: '<'\n  }\n});//# sourceURL=webpack-internal:///30700\n");

}),

83076:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('ServiceTasksDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  var ctrl = this;\n  this.state = Object.assign(this.state, {\n    showQuickActionStats: true,\n    showQuickActionLogs: true,\n    showQuickActionConsole: true,\n    showQuickActionInspect: true,\n    showQuickActionExec: true,\n    showQuickActionAttach: false\n  });\n  this.filters = {\n    state: {\n      open: false,\n      enabled: false,\n      values: []\n    }\n  };\n\n  this.applyFilters = function (item) {\n    var filters = ctrl.filters;\n\n    for (var i = 0; i < filters.state.values.length; i++) {\n      var filter = filters.state.values[i];\n\n      if (item.Status.State === filter.label && filter.display) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  this.onStateFilterChange = function () {\n    var filters = this.filters.state.values;\n    var filtered = false;\n\n    for (var i = 0; i < filters.length; i++) {\n      var filter = filters[i];\n\n      if (!filter.display) {\n        filtered = true;\n      }\n    }\n\n    this.filters.state.enabled = filtered;\n  };\n\n  this.prepareTableFromDataset = function () {\n    var availableStateFilters = [];\n\n    for (var i = 0; i < this.dataset.length; i++) {\n      var item = this.dataset[i];\n      availableStateFilters.push({\n        label: item.Status.State,\n        display: true\n      });\n    }\n\n    this.filters.state.values = lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(availableStateFilters, 'label');\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///83076\n");

}),

88840:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./servicesDatatableActions.html */ 62318);\n\nangular.module('portainer.docker').component('servicesDatatableActions', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ServicesDatatableActionsController',\n  bindings: {\n    selectedItems: '=',\n    selectedItemCount: '=',\n    showUpdateAction: '<',\n    showAddAction: '<',\n    endpointId: '<'\n  }\n});//# sourceURL=webpack-internal:///88840\n");

}),

3474:

(function() {

eval("angular.module('portainer.docker').controller('ServicesDatatableActionsController', ['$q', '$state', 'ServiceService', 'ServiceHelper', 'Notifications', 'ModalService', 'ImageHelper', 'WebhookService', function ($q, $state, ServiceService, ServiceHelper, Notifications, ModalService, ImageHelper, WebhookService) {\n  const ctrl = this;\n\n  this.scaleAction = function scaleService(service) {\n    var config = ServiceHelper.serviceToConfig(service.Model);\n    config.Mode.Replicated.Replicas = service.Replicas;\n    ServiceService.update(service, config).then(function success() {\n      Notifications.success('Service successfully scaled', 'New replica count: ' + service.Replicas);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to scale service');\n      service.Scale = false;\n      service.Replicas = service.ReplicaCount;\n    });\n  };\n\n  this.removeAction = function (selectedItems) {\n    ModalService.confirmDeletion('你想删除选中的服务吗？所有与所选服务相关的容器也将被删除。', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      removeServices(selectedItems);\n    });\n  };\n\n  this.updateAction = function (selectedItems) {\n    ModalService.confirmServiceForceUpdate('你想强制更新所选服务吗？所有与所选服务相关的任务将被重新创建。', function (result) {\n      if (!result) {\n        return;\n      }\n\n      var pullImage = false;\n\n      if (result[0]) {\n        pullImage = true;\n      }\n\n      forceUpdateServices(selectedItems, pullImage);\n    });\n  };\n\n  function forceUpdateServices(services, pullImage) {\n    var actionCount = services.length;\n    angular.forEach(services, function (service) {\n      var config = ServiceHelper.serviceToConfig(service.Model);\n\n      if (pullImage) {\n        config.TaskTemplate.ContainerSpec.Image = ImageHelper.removeDigestFromRepository(config.TaskTemplate.ContainerSpec.Image);\n      } // As explained in https://github.com/docker/swarmkit/issues/2364 ForceUpdate can accept a random\n      // value or an increment of the counter value to force an update.\n\n\n      config.TaskTemplate.ForceUpdate++;\n      ServiceService.update(service, config).then(function success() {\n        Notifications.success('Service successfully updated', service.Name);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to force update service' + service.Name);\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  }\n\n  function removeServices(services) {\n    var actionCount = services.length;\n    angular.forEach(services, function (service) {\n      ServiceService.remove(service).then(function success() {\n        return WebhookService.webhooks(service.Id, ctrl.endpointId);\n      }).then(function success(data) {\n        return $q.when(data.length !== 0 && WebhookService.deleteWebhook(data[0].Id));\n      }).then(function success() {\n        Notifications.success('Service successfully removed', service.Name);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to remove service');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  }\n}]);//# sourceURL=webpack-internal:///3474\n");

}),

22601:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./servicesDatatable.html */ 19610);\n\nangular.module('portainer.docker').component('servicesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'ServicesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    nodes: '<',\n    agentProxy: '<',\n    showUpdateAction: '<',\n    showAddAction: '<',\n    showStackColumn: '<',\n    showTaskLogsButton: '<',\n    refreshCallback: '<',\n    notAutoFocus: '<',\n    endpointPublicUrl: '<',\n    endpointId: '<'\n  }\n});//# sourceURL=webpack-internal:///22601\n");

}),

46311:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('ServicesDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  var ctrl = this;\n  this.state = Object.assign(this.state, {\n    expandAll: false,\n    expandedItems: []\n  });\n  this.columnVisibility = {\n    columns: {\n      image: {\n        label: '镜像',\n        display: true\n      },\n      ownership: {\n        label: '所有权',\n        display: true\n      },\n      ports: {\n        label: '已发布端口',\n        display: true\n      },\n      updated: {\n        label: '最后更新',\n        display: true\n      }\n    }\n  };\n  this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);\n\n  function onColumnVisibilityChange(columns) {\n    this.columnVisibility.columns = columns;\n    DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);\n  }\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    for (var i = 0; i < this.state.filteredDataSet.length; i++) {\n      var item = this.state.filteredDataSet[i];\n      this.expandItem(item, this.state.expandAll);\n    }\n  };\n\n  this.expandItem = function (item, expanded) {\n    item.Expanded = expanded;\n\n    if (item.Expanded) {\n      if (this.state.expandedItems.indexOf(item.Id) === -1) {\n        this.state.expandedItems.push(item.Id);\n      }\n    } else {\n      var index = this.state.expandedItems.indexOf(item.Id);\n\n      if (index > -1) {\n        this.state.expandedItems.splice(index, 1);\n      }\n    }\n\n    DatatableService.setDataTableExpandedItems(this.tableKey, this.state.expandedItems);\n  };\n\n  function expandPreviouslyExpandedItem(item, storedExpandedItems) {\n    var expandedItem = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(storedExpandedItems, function (storedId) {\n      return item.Id === storedId;\n    });\n\n    if (expandedItem) {\n      ctrl.expandItem(item, true);\n    }\n  }\n\n  this.expandItems = function (storedExpandedItems) {\n    var expandedItemCount = 0;\n    this.state.expandedItems = storedExpandedItems;\n\n    for (var i = 0; i < this.dataset.length; i++) {\n      var item = this.dataset[i];\n      expandPreviouslyExpandedItem(item, storedExpandedItems);\n\n      if (item.Expanded) {\n        ++expandedItemCount;\n      }\n    }\n\n    if (expandedItemCount === this.dataset.length) {\n      this.state.expandAll = true;\n    }\n  };\n\n  this.onDataRefresh = function () {\n    var storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n\n    if (storedExpandedItems !== null) {\n      this.expandItems(storedExpandedItems);\n    }\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n\n    if (storedExpandedItems !== null) {\n      this.expandItems(storedExpandedItems);\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n    var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n\n    if (storedColumnVisibility !== null) {\n      this.columnVisibility = storedColumnVisibility;\n    }\n  };\n}]);//# sourceURL=webpack-internal:///46311\n");

}),

77886:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./tasksDatatable.html */ 40381);\n\nangular.module('portainer.docker').component('tasksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'TasksDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    nodes: '<',\n    showSlotColumn: '<',\n    showLogsButton: '<',\n    agentProxy: '<'\n  }\n});//# sourceURL=webpack-internal:///77886\n");

}),

33740:

(function() {

eval("angular.module('portainer.docker').controller('TasksDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    showQuickActionStats: true,\n    showQuickActionLogs: true,\n    showQuickActionExec: true,\n    showQuickActionInspect: true,\n    showQuickActionAttach: false\n  });\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///33740\n");

}),

75198:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumesDatatable.html */ 43761);\n\nangular.module('portainer.docker').component('volumesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'VolumesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    showHostColumn: '<',\n    removeAction: '<',\n    showBrowseAction: '<',\n    offlineMode: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///75198\n");

}),

72091:

(function() {

eval("angular.module('portainer.docker').controller('VolumesDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  var ctrl = this;\n  this.filters = {\n    state: {\n      open: false,\n      enabled: false,\n      showUsedVolumes: true,\n      showUnusedVolumes: true\n    }\n  };\n\n  this.applyFilters = function (value) {\n    var volume = value;\n    var filters = ctrl.filters;\n\n    if (volume.dangling && filters.state.showUnusedVolumes || !volume.dangling && filters.state.showUsedVolumes) {\n      return true;\n    }\n\n    return false;\n  };\n\n  this.onstateFilterChange = function () {\n    var filters = this.filters.state;\n    var filtered = false;\n\n    if (!filters.showUsedVolumes || !filters.showUnusedVolumes) {\n      filtered = true;\n    }\n\n    this.filters.state.enabled = filtered;\n    DatatableService.setDataTableFilters(this.tableKey, this.filters);\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///72091\n");

}),

37610:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./host-overview.html */ 9831);\n\nangular.module('portainer.docker').component('hostOverview', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    hostDetails: '<',\n    engineDetails: '<',\n    devices: '<',\n    disks: '<',\n    isAgent: '<',\n    offlineMode: '<',\n    agentApiVersion: '<',\n    refreshUrl: '@',\n    browseUrl: '@',\n    hostFeaturesEnabled: '<'\n  },\n  transclude: true\n});//# sourceURL=webpack-internal:///37610\n");

}),

85943:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./devices-panel.html */ 56797);\n\nangular.module('portainer.docker').component('devicesPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    devices: '<'\n  }\n});//# sourceURL=webpack-internal:///85943\n");

}),

40210:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./disks-panel.html */ 37287);\n\nangular.module('portainer.docker').component('disksPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    disks: '<'\n  }\n});//# sourceURL=webpack-internal:///40210\n");

}),

25203:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./engine-details-panel.html */ 63509);\n\nangular.module('portainer.docker').component('engineDetailsPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    engine: '<'\n  }\n});//# sourceURL=webpack-internal:///25203\n");

}),

68181:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./host-details-panel.html */ 97106);\n\nangular.module('portainer.docker').component('hostDetailsPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    host: '<',\n    isBrowseEnabled: '<',\n    browseUrl: '@'\n  }\n});//# sourceURL=webpack-internal:///68181\n");

}),

44162:

(function() {

eval("angular.module('portainer.docker').controller('NodeAvailabilitySelectController', [function NodeAvailabilitySelectController() {\n  this.onChange = onChange;\n\n  function onChange() {\n    this.onSave({\n      availability: this.availability\n    });\n  }\n}]);//# sourceURL=webpack-internal:///44162\n");

}),

28031:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./node-availability-select.html */ 7762);\n\nangular.module('portainer.docker').component('nodeAvailabilitySelect', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NodeAvailabilitySelectController',\n  bindings: {\n    availability: '<',\n    originalValue: '<',\n    onSave: '&'\n  }\n});//# sourceURL=webpack-internal:///28031\n");

}),

55024:

(function() {

eval("angular.module('portainer.docker').controller('NodeLabelsTableController', [function NodeLabelsTableController() {\n  var ctrl = this;\n  ctrl.removeLabel = removeLabel;\n  ctrl.updateLabel = updateLabel;\n\n  function removeLabel(index) {\n    var label = ctrl.labels.splice(index, 1);\n\n    if (label !== null) {\n      ctrl.onChangedLabels({\n        labels: ctrl.labels\n      });\n    }\n  }\n\n  function updateLabel(label) {\n    if (label.value !== label.originalValue || label.key !== label.originalKey) {\n      ctrl.onChangedLabels({\n        labels: ctrl.labels\n      });\n    }\n  }\n}]);//# sourceURL=webpack-internal:///55024\n");

}),

96399:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./node-labels-table.html */ 642);\n\nangular.module('portainer.docker').component('nodeLabelsTable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NodeLabelsTableController',\n  bindings: {\n    labels: '<',\n    onChangedLabels: '&'\n  }\n});//# sourceURL=webpack-internal:///96399\n");

}),

70395:

(function() {

eval("angular.module('portainer.docker').controller('SwarmNodeDetailsPanelController', ['NodeService', 'LabelHelper', 'Notifications', '$state', function SwarmNodeDetailsPanelController(NodeService, LabelHelper, Notifications, $state) {\n  var ctrl = this;\n  ctrl.state = {\n    managerAddress: '',\n    hasChanges: false\n  };\n  ctrl.$onChanges = $onChanges;\n  ctrl.addLabel = addLabel;\n  ctrl.updateNodeLabels = updateNodeLabels;\n  ctrl.updateNodeAvailability = updateNodeAvailability;\n  ctrl.saveChanges = saveChanges;\n  ctrl.cancelChanges = cancelChanges;\n  var managerRole = 'manager';\n\n  function $onChanges() {\n    if (!ctrl.details) {\n      return;\n    }\n\n    if (ctrl.details.role === managerRole) {\n      ctrl.state.managerAddress = '(' + ctrl.details.managerAddress + ')';\n    }\n  }\n\n  function addLabel() {\n    ctrl.details.nodeLabels.push({\n      key: '',\n      value: '',\n      originalValue: '',\n      originalKey: ''\n    });\n  }\n\n  function updateNodeLabels(labels) {\n    ctrl.details.nodeLabels = labels;\n    ctrl.state.hasChanges = true;\n  }\n\n  function updateNodeAvailability(availability) {\n    ctrl.details.availability = availability;\n    ctrl.state.hasChanges = true;\n  }\n\n  function saveChanges() {\n    var originalNode = ctrl.originalNode;\n    var config = {\n      Name: originalNode.Name,\n      Availability: ctrl.details.availability,\n      Role: originalNode.Role,\n      Labels: LabelHelper.fromKeyValueToLabelHash(ctrl.details.nodeLabels),\n      Id: originalNode.Id,\n      Version: originalNode.Version\n    };\n    NodeService.updateNode(config).then(onUpdateSuccess).catch(notifyOnError);\n\n    function onUpdateSuccess() {\n      Notifications.success('Node successfully updated', 'Node updated');\n      $state.go('docker.nodes.node', {\n        id: originalNode.Id\n      }, {\n        reload: true\n      });\n    }\n\n    function notifyOnError(error) {\n      Notifications.error('失败', error, 'Failed to update node');\n    }\n  }\n\n  function cancelChanges() {\n    cancelLabelChanges();\n    ctrl.details.availability = ctrl.originalNode.Availability;\n    ctrl.state.hasChanges = false;\n  }\n\n  function cancelLabelChanges() {\n    ctrl.details.nodeLabels = ctrl.details.nodeLabels.filter(function (label) {\n      return label.originalValue || label.originalKey;\n    }).map(function (label) {\n      return Object.assign(label, {\n        value: label.originalValue,\n        key: label.originalKey\n      });\n    });\n  }\n}]);//# sourceURL=webpack-internal:///70395\n");

}),

98186:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./swarm-node-details-panel.html */ 92156);\n\nangular.module('portainer.docker').component('swarmNodeDetailsPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'SwarmNodeDetailsPanelController',\n  bindings: {\n    details: '<',\n    originalNode: '<'\n  }\n});//# sourceURL=webpack-internal:///98186\n");

}),

72749:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ porImageRegistryContainerController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n\nclass porImageRegistryContainerController {\n  /* @ngInject */\n  constructor(DockerHubService, Notifications) {\n    this.DockerHubService = DockerHubService;\n    this.Notifications = Notifications;\n    this.pullRateLimits = null;\n  }\n\n  $onChanges({\n    registryId\n  }) {\n    if (registryId) {\n      this.fetchRateLimits();\n    }\n  }\n\n  $onInit() {\n    this.setValidity = this.setValidity || (() => {\n      /* noop */\n    });\n  }\n\n  async fetchRateLimits() {\n    this.pullRateLimits = null;\n\n    if (!_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isAgentEndpoint(this.endpoint) && !_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isLocalEndpoint(this.endpoint)) {\n      this.setValidity(true);\n      return;\n    }\n\n    try {\n      this.pullRateLimits = await this.DockerHubService.checkRateLimits(this.endpoint, this.registryId || 0);\n      this.setValidity(!this.pullRateLimits.limit || this.pullRateLimits.limit && this.pullRateLimits.remaining >= 0);\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error('Failed loading DockerHub pull rate limits', e);\n      this.setValidity(true);\n    }\n  }\n\n}\nporImageRegistryContainerController.$inject = [\"DockerHubService\", \"Notifications\"];//# sourceURL=webpack-internal:///72749\n");

}),

64906:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _por_image_registry_rate_limits_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./por-image-registry-rate-limits.controller */ 72749);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./por-image-registry-rate-limits.html */ 52388);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.docker').component('porImageRegistryRateLimits', {\n  bindings: {\n    endpoint: '<',\n    registry: '<',\n    setValidity: '<',\n    isAdmin: '<',\n    isDockerHubRegistry: '<',\n    isAuthenticated: '<',\n    registryId: '<'\n  },\n  controller: _por_image_registry_rate_limits_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  transclude: {\n    rateLimitExceeded: '?porImageRegistryRateLimitExceeded'\n  },\n  templateUrl: autoNgTemplateLoaderTemplate1\n});//# sourceURL=webpack-internal:///64906\n");

}),

22429:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/difference */ 65491);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/replace */ 30465);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_replace__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Portainer/models/dockerhub */ 74962);\n/* harmony import */ var _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/models/registryTypes */ 56414);\n\n\n\n\n\n\n\n\n\n\n\nclass porImageRegistryController {\n  /* @ngInject */\n  constructor($async, $scope, ImageHelper, RegistryService, EndpointService, ImageService, Notifications) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.ImageHelper = ImageHelper;\n    this.RegistryService = RegistryService;\n    this.EndpointService = EndpointService;\n    this.ImageService = ImageService;\n    this.Notifications = Notifications;\n    this.onRegistryChange = this.onRegistryChange.bind(this);\n    this.onImageChange = this.onImageChange.bind(this);\n    this.registries = [];\n    this.images = [];\n    this.defaultRegistry = new Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__.DockerHubViewModel();\n    this.$scope.$watch(() => this.model.Registry, this.onRegistryChange);\n    this.$scope.$watch(() => this.model.Image, this.onImageChange);\n  }\n\n  isKnownRegistry(registry) {\n    return registry && !(registry instanceof Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__.DockerHubViewModel) && registry.URL;\n  }\n\n  getRegistryURL(registry) {\n    if (!registry) {\n      return;\n    }\n\n    let url = registry.URL;\n\n    if (registry.Type === _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__.RegistryTypes.GITLAB) {\n      url = registry.URL + '/' + registry.Gitlab.ProjectPath;\n    }\n\n    return url;\n  }\n\n  prepareAutocomplete() {\n    let images = [];\n    const registry = this.model.Registry;\n\n    if (this.isKnownRegistry(registry)) {\n      const url = this.getRegistryURL(registry);\n\n      const registryImages = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(this.images, image => lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(image, url));\n\n      images = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(registryImages, image => lodash_es_replace__WEBPACK_IMPORTED_MODULE_3___default()(image, new RegExp(url + '/?'), ''));\n    } else {\n      const registries = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(this.registries, reg => this.isKnownRegistry(reg));\n\n      const registryImages = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2___default()(registries, registry => lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(this.images, image => lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(image, registry.URL)));\n\n      const imagesWithoutKnown = lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default()(this.images, registryImages);\n\n      images = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(imagesWithoutKnown, image => !this.ImageHelper.imageContainsURL(image));\n    }\n\n    this.availableImages = images;\n  }\n\n  isDockerHubRegistry() {\n    return this.model.UseRegistry && this.model.Registry && (this.model.Registry.Type === _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__.RegistryTypes.DOCKERHUB || this.model.Registry.Type === _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__.RegistryTypes.ANONYMOUS);\n  }\n\n  async onRegistryChange() {\n    this.prepareAutocomplete();\n\n    if (this.model.Registry && this.model.Registry.Type === _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__.RegistryTypes.GITLAB && this.model.Image) {\n      this.model.Image = lodash_es_replace__WEBPACK_IMPORTED_MODULE_3___default()(this.model.Image, this.model.Registry.Gitlab.ProjectPath, '');\n    }\n  }\n\n  async onImageChange() {\n    if (!this.isDockerHubRegistry()) {\n      this.setValidity(true);\n    }\n  }\n\n  displayedRegistryURL() {\n    return this.model.Registry && this.getRegistryURL(this.model.Registry) || 'docker.io';\n  }\n\n  async reloadRegistries() {\n    return this.$async(async () => {\n      try {\n        let showDefaultRegistry = false;\n        this.registries = await this.EndpointService.registries(this.endpoint.Id, this.namespace); // Sort the registries by Name\n\n        this.registries.sort((a, b) => a.Name.localeCompare(b.Name)); // hide default(anonymous) dockerhub registry if user has an authenticated one\n\n        if (!this.registries.some(registry => registry.Type === _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_9__.RegistryTypes.DOCKERHUB)) {\n          showDefaultRegistry = true; // Add dockerhub on top\n\n          this.registries.splice(0, 0, this.defaultRegistry);\n        }\n\n        const id = this.model.Registry && this.model.Registry.Id;\n\n        const registry = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.registries, {\n          Id: id\n        });\n\n        if (!registry) {\n          this.model.Registry = showDefaultRegistry ? this.defaultRegistry : this.registries[0];\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registries');\n      }\n    });\n  }\n\n  async loadImages() {\n    return this.$async(async () => {\n      try {\n        if (!this.autoComplete) {\n          this.images = [];\n          return;\n        }\n\n        const images = await this.ImageService.images();\n        this.images = this.ImageService.getUniqueTagListFromImages(images);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve images');\n      }\n    });\n  }\n\n  $onChanges({\n    namespace,\n    endpoint\n  }) {\n    if ((namespace || endpoint) && this.endpoint.Id) {\n      this.reloadRegistries();\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      await this.loadImages();\n    });\n  }\n\n}\n\nporImageRegistryController.$inject = [\"$async\", \"$scope\", \"ImageHelper\", \"RegistryService\", \"EndpointService\", \"ImageService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (porImageRegistryController);\nangular__WEBPACK_IMPORTED_MODULE_7___default().module('portainer.docker').controller('porImageRegistryController', porImageRegistryController);//# sourceURL=webpack-internal:///22429\n");

}),

91653:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./por-image-registry.html */ 50331);\n\nangular.module('portainer.docker').component('porImageRegistry', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'porImageRegistryController',\n  bindings: {\n    model: '=',\n    // must be of type PorImageRegistryModel\n    autoComplete: '<',\n    labelClass: '@',\n    inputClass: '@',\n    endpoint: '<',\n    isAdmin: '<',\n    checkRateLimits: '<',\n    onImageChange: '&',\n    setValidity: '<',\n    namespace: '<'\n  },\n  require: {\n    form: '^form'\n  },\n  transclude: true\n});//# sourceURL=webpack-internal:///91653\n");

}),

69760:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./logViewer.html */ 85759);\n\nangular.module('portainer.docker').component('logViewer', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'LogViewerController',\n  bindings: {\n    data: '=',\n    displayTimestamps: '=',\n    logCollectionChange: '<',\n    sinceTimestamp: '=',\n    lineCount: '=',\n    resourceName: '<'\n  }\n});//# sourceURL=webpack-internal:///69760\n");

}),

89410:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/constants */ 71541);\n/* harmony import */ var _docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/docker/helpers/logHelper */ 17110);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\nangular.module('portainer.docker').controller('LogViewerController', ['$scope', 'clipboard', 'Blob', 'FileSaver', function ($scope, clipboard, Blob, FileSaver) {\n  this.state = {\n    availableSinceDatetime: [{\n      desc: 'Last day',\n      value: moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(1, 'days').format()\n    }, {\n      desc: 'Last 4 hours',\n      value: moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(4, 'hours').format()\n    }, {\n      desc: 'Last hour',\n      value: moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(1, 'hours').format()\n    }, {\n      desc: 'Last 10 minutes',\n      value: moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(10, 'minutes').format()\n    }],\n    copySupported: clipboard.supported,\n    logCollection: true,\n    autoScroll: true,\n    wrapLines: true,\n    search: '',\n    filteredLogs: [],\n    selectedLines: []\n  };\n  this.handleLogsCollectionChange = handleLogsCollectionChange.bind(this);\n  this.handleLogsWrapLinesChange = handleLogsWrapLinesChange.bind(this);\n  this.handleDisplayTimestampsChange = handleDisplayTimestampsChange.bind(this);\n\n  function handleLogsCollectionChange(enabled) {\n    $scope.$evalAsync(() => {\n      this.state.logCollection = enabled;\n      this.state.autoScroll = enabled;\n      this.logCollectionChange(enabled);\n    });\n  }\n\n  function handleLogsWrapLinesChange(enabled) {\n    $scope.$evalAsync(() => {\n      this.state.wrapLines = enabled;\n    });\n  }\n\n  function handleDisplayTimestampsChange(enabled) {\n    $scope.$evalAsync(() => {\n      this.displayTimestamps = enabled;\n    });\n  }\n\n  this.copy = function () {\n    clipboard.copyText(this.state.filteredLogs.map(log => log.line).join(_constants__WEBPACK_IMPORTED_MODULE_1__.NEW_LINE_BREAKER));\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(2000);\n  };\n\n  this.copySelection = function () {\n    clipboard.copyText(this.state.selectedLines.join(_constants__WEBPACK_IMPORTED_MODULE_1__.NEW_LINE_BREAKER));\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(2000);\n  };\n\n  this.clearSelection = function () {\n    this.state.selectedLines = [];\n  };\n\n  this.selectLine = function (line) {\n    var idx = this.state.selectedLines.indexOf(line);\n\n    if (idx === -1) {\n      this.state.selectedLines.push(line);\n    } else {\n      this.state.selectedLines.splice(idx, 1);\n    }\n  };\n\n  this.downloadLogs = function () {\n    const logsAsString = (0,_docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_2__.concatLogsToString)(this.state.filteredLogs);\n    const data = new Blob([logsAsString]);\n    FileSaver.saveAs(data, this.resourceName + '_logs.txt');\n  };\n}]);//# sourceURL=webpack-internal:///89410\n");

}),

22852:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./networkMacvlanForm.html */ 23614);\n\nangular.module('portainer.docker').component('networkMacvlanForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NetworkMacvlanFormController',\n  bindings: {\n    data: '=',\n    applicationState: '<'\n  }\n});//# sourceURL=webpack-internal:///22852\n");

}),

3476:

(function() {

eval("angular.module('portainer.docker').controller('NetworkMacvlanFormController', ['$q', 'NodeService', 'NetworkService', 'Notifications', 'StateManager', 'Authentication', function ($q, NodeService, NetworkService, Notifications, StateManager, Authentication) {\n  var ctrl = this;\n\n  ctrl.requiredNodeSelection = function () {\n    if (ctrl.data.Scope !== 'local' || ctrl.data.DatatableState === undefined) {\n      return false;\n    }\n\n    return ctrl.data.DatatableState.selectedItemCount === 0;\n  };\n\n  ctrl.requiredConfigSelection = function () {\n    if (ctrl.data.Scope !== 'swarm') {\n      return false;\n    }\n\n    return !ctrl.data.SelectedNetworkConfig;\n  };\n\n  this.$onInit = $onInit;\n\n  function $onInit() {\n    var isAdmin = Authentication.isAdmin();\n    ctrl.isAdmin = isAdmin;\n    var provider = ctrl.applicationState.endpoint.mode.provider;\n    var apiVersion = ctrl.applicationState.endpoint.apiVersion;\n    $q.all({\n      nodes: provider !== 'DOCKER_SWARM_MODE' || NodeService.nodes(),\n      networks: NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25)\n    }).then(function success(data) {\n      if (data.nodes !== true) {\n        ctrl.nodes = data.nodes;\n      }\n\n      ctrl.availableNetworks = data.networks.filter(function (item) {\n        return item.ConfigOnly === true;\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve informations for macvlan');\n    });\n  }\n}]);//# sourceURL=webpack-internal:///3476\n");

}),

50373:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MacvlanFormData\": function() { return /* binding */ MacvlanFormData; }\n/* harmony export */ });\nfunction MacvlanFormData() {\n  this.Scope = 'local';\n  this.SelectedNetworkConfig = null;\n  this.DatatableState = {\n    selectedItems: []\n  };\n  this.ParentNetworkCard = '';\n}//# sourceURL=webpack-internal:///50373\n");

}),

8470:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumesCifsForm.html */ 79420);\n\nangular.module('portainer.docker').component('volumesCifsForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    data: '='\n  }\n});//# sourceURL=webpack-internal:///8470\n");

}),

86668:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumesCIFSFormData\": function() { return /* binding */ VolumesCIFSFormData; }\n/* harmony export */ });\nfunction VolumesCIFSFormData() {\n  this.useCIFS = false;\n  this.serverAddress = '';\n  this.share = '';\n  this.version = 'CIFS v2.0 (Used by Windows Vista / Server 2008)';\n  this.versions = ['CIFS v1.0 (Used by Windows XP / Server 2003 and earlier)', 'CIFS v2.0 (Used by Windows Vista / Server 2008)', 'CIFS v2.1 (Used by Windows 7 / Server 2008 R2)', 'CIFS 3.0 (Used by Windows 8 / Server 2012 and newer)'];\n  this.versionsNumber = ['1.0', '2.0', '2.1', '3.0'];\n  this.username = '';\n  this.password = '';\n}//# sourceURL=webpack-internal:///86668\n");

}),

87959:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumesnfsForm.html */ 93886);\n\nangular.module('portainer.docker').component('volumesNfsForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    data: '='\n  }\n});//# sourceURL=webpack-internal:///87959\n");

}),

57629:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumesNFSFormData\": function() { return /* binding */ VolumesNFSFormData; }\n/* harmony export */ });\nfunction VolumesNFSFormData() {\n  this.useNFS = false;\n  this.serverAddress = '';\n  this.mountPoint = '';\n  this.version = 'NFS4';\n  this.options = 'rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14';\n  this.versions = ['NFS4', 'NFS'];\n}//# sourceURL=webpack-internal:///57629\n");

}),

50352:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ 15873);\n\n\n\n\n\n\nfunction includeString(text, values) {\n  return values.some(function (val) {\n    return text.indexOf(val) !== -1;\n  });\n}\n\nfunction strToHash(str) {\n  var hash = 0;\n\n  for (var i = 0; i < str.length; i++) {\n    hash = str.charCodeAt(i) + ((hash << 5) - hash);\n  }\n\n  return hash;\n}\n\nfunction hashToHexColor(hash) {\n  var color = '#';\n\n  for (var i = 0; i < 3;) {\n    color += ('00' + (hash >> i++ * 8 & 0xff).toString(16)).slice(-2);\n  }\n\n  return color;\n}\n\nangular.module('portainer.docker').filter('visualizerTask', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default()(text);\n\n    if (includeString(status, ['new', 'allocated', 'assigned', 'accepted', 'complete', 'preparing'])) {\n      return 'info';\n    } else if (includeString(status, ['pending'])) {\n      return 'warning';\n    } else if (includeString(status, ['shutdown', 'failed', 'rejected'])) {\n      return 'stopped';\n    }\n\n    return 'running';\n  };\n}).filter('visualizerTaskBorderColor', function () {\n  'use strict';\n\n  return function (str) {\n    var hash = strToHash(str);\n    var color = hashToHexColor(hash);\n    return color;\n  };\n}).filter('taskstatusbadge', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default()(text);\n\n    var labelStyle = 'default';\n\n    if (includeString(status, ['new', 'allocated', 'assigned', 'accepted', 'preparing', 'ready', 'starting', 'remove'])) {\n      labelStyle = 'info';\n    } else if (includeString(status, ['pending'])) {\n      labelStyle = 'warning';\n    } else if (includeString(status, ['shutdown', 'failed', 'rejected', 'orphaned'])) {\n      labelStyle = 'danger';\n    } else if (includeString(status, ['complete'])) {\n      labelStyle = 'primary';\n    } else if (includeString(status, ['running'])) {\n      labelStyle = 'success';\n    }\n\n    return labelStyle;\n  };\n}).filter('taskhaslogs', function () {\n  'use strict';\n\n  return function (state) {\n    var validState = ['running', 'complete', 'failed', 'shutdown'];\n\n    if (validState.indexOf(state) > -1) {\n      return true;\n    }\n\n    return false;\n  };\n}).filter('containerstatusbadge', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default()(text);\n\n    if (includeString(status, ['paused', 'starting', 'unhealthy'])) {\n      return 'warning';\n    } else if (includeString(status, ['created'])) {\n      return 'info';\n    } else if (includeString(status, ['stopped', 'dead', 'exited'])) {\n      return 'danger';\n    }\n\n    return 'success';\n  };\n}).filter('nodestatusbadge', function () {\n  'use strict';\n\n  return function (text) {\n    if (text === 'down' || text === 'Unhealthy') {\n      return 'danger';\n    }\n\n    return 'success';\n  };\n}).filter('dockerNodeAvailabilityBadge', function () {\n  'use strict';\n\n  return function (text) {\n    if (text === 'pause') {\n      return 'warning';\n    } else if (text === 'drain') {\n      return 'danger';\n    }\n\n    return 'success';\n  };\n}).filter('trimcontainername', function () {\n  'use strict';\n\n  return function (name) {\n    if (name) {\n      return name.indexOf('/') === 0 ? name.replace('/', '') : name;\n    }\n\n    return '';\n  };\n}).filter('getstatetext', function () {\n  'use strict';\n\n  return function (state) {\n    if (state === undefined) {\n      return '';\n    }\n\n    if (state.Dead) {\n      return 'Dead';\n    }\n\n    if (state.Ghost && state.Running) {\n      return 'Ghost';\n    }\n\n    if (state.Running && state.Paused) {\n      return 'Running (Paused)';\n    }\n\n    if (state.Running) {\n      return 'Running';\n    }\n\n    if (state.Status === 'created') {\n      return 'Created';\n    }\n\n    return 'Stopped';\n  };\n}).filter('getstatelabel', function () {\n  'use strict';\n\n  return function (state) {\n    if (state === undefined) {\n      return 'label-default';\n    }\n\n    if (state.Ghost && state.Running) {\n      return 'label-important';\n    }\n\n    if (state.Running) {\n      return 'label-success';\n    }\n\n    return 'label-default';\n  };\n}).filter('containername', function () {\n  'use strict';\n\n  return function (container) {\n    var name = container.Names[0];\n    return name.substring(1, name.length);\n  };\n}).filter('swarmversion', function () {\n  'use strict';\n\n  return function (text) {\n    return lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default()(text, '/')[1];\n  };\n}).filter('swarmhostname', function () {\n  'use strict';\n\n  return function (container) {\n    return lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default()(container.Names[0], '/')[1];\n  };\n}).filter('repotags', function () {\n  'use strict';\n\n  return function (image) {\n    if (image.RepoTags && image.RepoTags.length > 0) {\n      var tag = image.RepoTags[0];\n\n      if (tag === '<none>:<none>') {\n        return [];\n      }\n\n      return image.RepoTags;\n    }\n\n    return [];\n  };\n}).filter('command', function () {\n  'use strict';\n\n  return function (command) {\n    if (command) {\n      return command.join(' ');\n    }\n  };\n}).filter('hideshasum', function () {\n  'use strict';\n\n  return function (imageName) {\n    if (imageName) {\n      return imageName.split('@sha')[0];\n    }\n\n    return '';\n  };\n}).filter('availablenodecount', ['ConstraintsHelper', function (ConstraintsHelper) {\n  'use strict';\n\n  return function (nodes, service) {\n    var availableNodes = 0;\n\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n\n      if (node.Availability === 'active' && node.Status === 'ready' && ConstraintsHelper.matchesServiceConstraints(service, node)) {\n        availableNodes++;\n      }\n    }\n\n    return availableNodes;\n  };\n}]).filter('runningtaskscount', function () {\n  'use strict';\n\n  return function (tasks) {\n    var runningTasks = 0;\n\n    for (var i = 0; i < tasks.length; i++) {\n      var task = tasks[i];\n\n      if (task.Status.State === 'running' && task.DesiredState === 'running') {\n        runningTasks++;\n      }\n    }\n\n    return runningTasks;\n  };\n}).filter('tasknodename', function () {\n  'use strict';\n\n  return function (nodeId, nodes) {\n    var node = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(nodes, {\n      Id: nodeId\n    });\n\n    if (node) {\n      return node.Hostname;\n    }\n\n    return '';\n  };\n}).filter('imagelayercommand', function () {\n  'use strict';\n\n  return function (createdBy) {\n    return createdBy.replace('/bin/sh -c #(nop) ', '').replace('/bin/sh -c ', 'RUN ');\n  };\n}).filter('trimshasum', function () {\n  'use strict';\n\n  return _utils__WEBPACK_IMPORTED_MODULE_4__.trimSHA;\n}).filter('trimversiontag', function () {\n  'use strict';\n\n  return function trimversiontag(fullName) {\n    if (!fullName) {\n      return fullName;\n    }\n\n    var versionIdx = fullName.lastIndexOf(':');\n\n    if (versionIdx < 0) {\n      return fullName;\n    }\n\n    var hostIdx = fullName.indexOf('/');\n\n    if (hostIdx > versionIdx) {\n      return fullName;\n    }\n\n    return fullName.substring(0, versionIdx);\n  };\n}).filter('unique', function () {\n  return (lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default());\n});//# sourceURL=webpack-internal:///50352\n");

}),

52161:

(function() {

eval("angular.module('portainer.docker').factory('ConfigHelper', [function ConfigHelperFactory() {\n  'use strict';\n\n  return {\n    flattenConfig: function (config) {\n      if (config) {\n        return {\n          Id: config.ConfigID,\n          Name: config.ConfigName,\n          FileName: config.File.Name,\n          Uid: config.File.UID,\n          Gid: config.File.GID,\n          Mode: config.File.Mode\n        };\n      }\n\n      return {};\n    },\n    configConfig: function (config) {\n      if (config) {\n        return {\n          ConfigID: config.Id,\n          ConfigName: config.Name,\n          File: {\n            Name: config.FileName || config.Name,\n            UID: config.Uid || '0',\n            GID: config.Gid || '0',\n            Mode: config.Mode || 292\n          }\n        };\n      }\n\n      return {};\n    }\n  };\n}]);//# sourceURL=webpack-internal:///52161\n");

}),

82556:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction ConstraintModel(op, key, value) {\n  this.op = op;\n  this.value = value;\n  this.key = key;\n}\n\nvar patterns = {\n  id: {\n    nodeId: 'node.id',\n    nodeHostname: 'node.hostname',\n    nodeRole: 'node.role',\n    nodeLabels: 'node.labels.',\n    engineLabels: 'engine.labels.'\n  },\n  op: {\n    eq: '==',\n    neq: '!='\n  }\n};\n\nfunction matchesConstraint(value, constraint) {\n  if (!constraint || constraint.op === patterns.op.eq && value === constraint.value || constraint.op === patterns.op.neq && value !== constraint.value) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction matchesLabel(labels, constraint) {\n  if (!constraint) {\n    return true;\n  }\n\n  var found = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(labels, function (label) {\n    return label.key === constraint.key && label.value === constraint.value;\n  });\n\n  return found !== undefined;\n}\n\nfunction extractValue(constraint, op) {\n  return constraint.split(op).pop().trim();\n}\n\nfunction extractCustomLabelKey(constraint, op, baseLabelKey) {\n  return constraint.split(op).shift().trim().replace(baseLabelKey, '');\n}\n\nangular.module('portainer.docker').factory('ConstraintsHelper', [function ConstraintsHelperFactory() {\n  'use strict';\n\n  return {\n    transformConstraints: function (constraints) {\n      var transform = {};\n\n      for (var i = 0; i < constraints.length; i++) {\n        var constraint = constraints[i];\n        var op;\n\n        if (constraint.includes(patterns.op.eq)) {\n          op = patterns.op.eq;\n        } else if (constraint.includes(patterns.op.neq)) {\n          op = patterns.op.neq;\n        }\n\n        var value = extractValue(constraint, op);\n        var key = '';\n\n        switch (true) {\n          case constraint.includes(patterns.id.nodeId):\n            transform.nodeId = new ConstraintModel(op, key, value);\n            break;\n\n          case constraint.includes(patterns.id.nodeHostname):\n            transform.nodeHostname = new ConstraintModel(op, key, value);\n            break;\n\n          case constraint.includes(patterns.id.nodeRole):\n            transform.nodeRole = new ConstraintModel(op, key, value);\n            break;\n\n          case constraint.includes(patterns.id.nodeLabels):\n            key = extractCustomLabelKey(constraint, op, patterns.id.nodeLabels);\n            transform.nodeLabels = new ConstraintModel(op, key, value);\n            break;\n\n          case constraint.includes(patterns.id.engineLabels):\n            key = extractCustomLabelKey(constraint, op, patterns.id.engineLabels);\n            transform.engineLabels = new ConstraintModel(op, key, value);\n            break;\n\n          default:\n            break;\n        }\n      }\n\n      return transform;\n    },\n    matchesServiceConstraints: function (service, node) {\n      if (service.Constraints === undefined || service.Constraints.length === 0) {\n        return true;\n      }\n\n      var constraints = this.transformConstraints(angular.copy(service.Constraints));\n\n      if (matchesConstraint(node.Id, constraints.nodeId) && matchesConstraint(node.Hostname, constraints.nodeHostname) && matchesConstraint(node.Role, constraints.nodeRole) && matchesLabel(node.Labels, constraints.nodeLabels) && matchesLabel(node.EngineLabels, constraints.engineLabels)) {\n        return true;\n      }\n\n      return false;\n    }\n  };\n}]);//# sourceURL=webpack-internal:///82556\n");

}),

5204:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/trimStart */ 19980);\n/* harmony import */ var lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/keys */ 68260);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_keys__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var splitargs_src_splitargs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! splitargs/src/splitargs */ 54761);\n/* harmony import */ var splitargs_src_splitargs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(splitargs_src_splitargs__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\nconst portPattern = /^([1-9]|[1-5]?[0-9]{2,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/m;\n\nfunction parsePort(port) {\n  if (portPattern.test(port)) {\n    return parseInt(port, 10);\n  } else {\n    return 0;\n  }\n}\n\nfunction parsePortRange(portRange) {\n  if (typeof portRange !== 'string') {\n    portRange = portRange.toString();\n  } // Split the range and convert to integers\n\n\n  const stringPorts = lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(portRange, '-', 2);\n\n  const intPorts = lodash_es_map__WEBPACK_IMPORTED_MODULE_6___default()(stringPorts, parsePort); // If it's not a range, we still make sure that we return two ports (start & end)\n\n\n  if (intPorts.length == 1) {\n    intPorts.push(intPorts[0]);\n  }\n\n  return intPorts;\n}\n\nfunction isValidPortRange(portRange) {\n  if (typeof portRange === 'string') {\n    portRange = parsePortRange();\n  }\n\n  return Array.isArray(portRange) && portRange.length === 2 && portRange[0] > 0 && portRange[1] >= portRange[0];\n}\n\nfunction createPortRange(portRangeText, port) {\n  if (typeof portRangeText !== 'string') {\n    portRangeText = portRangeText.toString();\n  }\n\n  let hostIp = null;\n  const colonIndex = portRangeText.indexOf(':');\n\n  if (colonIndex >= 0) {\n    hostIp = portRangeText.substr(0, colonIndex);\n    portRangeText = portRangeText.substr(colonIndex + 1);\n  }\n\n  port = typeof port === 'number' ? port : parsePort(port);\n  const portRange = parsePortRange(portRangeText);\n  const startPort = Math.min(portRange[0], port);\n  const endPort = Math.max(portRange[1], port);\n\n  if (hostIp) {\n    return hostIp + ':' + startPort + '-' + endPort;\n  } else {\n    return startPort + '-' + endPort;\n  }\n}\n\nangular.module('portainer.docker').factory('ContainerHelper', [function ContainerHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.commandStringToArray = function (command) {\n    return splitargs_src_splitargs__WEBPACK_IMPORTED_MODULE_8___default()(command);\n  };\n\n  helper.commandArrayToString = function (array) {\n    return array.map(function (elem) {\n      return \"'\" + elem + \"'\";\n    }).join(' ');\n  };\n\n  helper.configFromContainer = function (container) {\n    var config = container.Config; // HostConfig\n\n    config.HostConfig = container.HostConfig; // Name\n\n    config.name = container.Name.replace(/^\\//g, ''); // Network\n\n    var mode = config.HostConfig.NetworkMode;\n    config.NetworkingConfig = {\n      EndpointsConfig: {}\n    };\n    config.NetworkingConfig.EndpointsConfig = container.NetworkSettings.Networks;\n\n    if (config.ExposedPorts === undefined) {\n      config.ExposedPorts = {};\n    }\n\n    if (mode.indexOf('container:') !== -1) {\n      delete config.Hostname;\n      delete config.ExposedPorts;\n    } // Set volumes\n\n\n    var binds = [];\n    var volumes = {};\n\n    for (var v in container.Mounts) {\n      if ({}.hasOwnProperty.call(container.Mounts, v)) {\n        var mount = container.Mounts[v];\n        var name = mount.Name || mount.Source;\n        var containerPath = mount.Destination;\n\n        if (name && containerPath) {\n          var bind = name + ':' + containerPath;\n          volumes[containerPath] = {};\n\n          if (mount.RW === false) {\n            bind += ':ro';\n          }\n\n          binds.push(bind);\n        }\n      }\n    }\n\n    config.HostConfig.Binds = binds;\n    config.Volumes = volumes;\n    return config;\n  };\n\n  helper.preparePortBindings = function (portBindings) {\n    const bindings = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5___default()(portBindings, portBinding => {\n      if (!portBinding.containerPort) {\n        return;\n      }\n\n      let hostPort = portBinding.hostPort;\n      const containerPortRange = parsePortRange(portBinding.containerPort);\n\n      if (!isValidPortRange(containerPortRange)) {\n        throw new Error('Invalid port specification: ' + portBinding.containerPort);\n      }\n\n      const startPort = containerPortRange[0];\n      const endPort = containerPortRange[1];\n      let hostIp = undefined;\n      let startHostPort = 0;\n      let endHostPort = 0;\n\n      if (hostPort) {\n        if (hostPort.indexOf('[') > -1) {\n          const hostAndPort = lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(hostPort, ']:');\n\n          if (hostAndPort.length < 2) {\n            throw new Error('Invalid port specification: ' + portBinding.containerPort);\n          }\n\n          hostIp = hostAndPort[0].replace('[', '');\n          hostPort = hostAndPort[1];\n        } else {\n          if (hostPort.indexOf(':') > -1) {\n            const hostAndPort = lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(hostPort, ':');\n\n            hostIp = hostAndPort[0];\n            hostPort = hostAndPort[1];\n          }\n        }\n\n        const hostPortRange = parsePortRange(hostPort);\n\n        if (!isValidPortRange(hostPortRange)) {\n          throw new Error('Invalid port specification: ' + hostPort);\n        }\n\n        startHostPort = hostPortRange[0];\n        endHostPort = hostPortRange[1];\n\n        if (endPort !== startPort && endPort - startPort !== endHostPort - startHostPort) {\n          throw new Error('Invalid port specification: ' + hostPort);\n        }\n      }\n\n      for (let i = 0; i <= endPort - startPort; i++) {\n        const containerPort = (startPort + i).toString();\n\n        if (startHostPort > 0) {\n          hostPort = (startHostPort + i).toString();\n        }\n\n        if (startPort === endPort && startHostPort !== endHostPort) {\n          hostPort += '-' + endHostPort.toString();\n        }\n\n        const bindKey = containerPort + '/' + portBinding.protocol;\n\n        if (bindings[bindKey]) {\n          bindings[bindKey].push({\n            HostIp: hostIp,\n            HostPort: hostPort\n          });\n        } else {\n          bindings[bindKey] = [{\n            HostIp: hostIp,\n            HostPort: hostPort\n          }];\n        }\n      }\n    });\n\n    return bindings;\n  };\n\n  helper.sortAndCombinePorts = function (portBindings) {\n    const bindings = [];\n\n    const portBindingKeys = lodash_es_keys__WEBPACK_IMPORTED_MODULE_4___default()(portBindings); // Group the port bindings by protocol\n\n\n    const portBindingKeysByProtocol = lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3___default()(portBindingKeys, portKey => {\n      return lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(portKey, '/')[1];\n    });\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5___default()(portBindingKeysByProtocol, (portBindingKeys, protocol) => {\n      // Group the port bindings by host IP\n      const portBindingKeysByHostIp = {};\n\n      for (const portKey of portBindingKeys) {\n        for (const portBinding of portBindings[portKey]) {\n          portBindingKeysByHostIp[portBinding.HostIp] = portBindingKeysByHostIp[portBinding.HostIp] || [];\n          portBindingKeysByHostIp[portBinding.HostIp].push(portKey);\n        }\n      }\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5___default()(portBindingKeysByHostIp, (portBindingKeys, ip) => {\n        // Sort by host port\n        const sortedPortBindingKeys = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_2___default()(portBindingKeys, portKey => {\n          return parseInt(lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(portKey, '/')[0], 10);\n        });\n\n        let previousHostPort = -1;\n        let previousContainerPort = -1;\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_5___default()(sortedPortBindingKeys, portKey => {\n          const portKeySplit = lodash_es_split__WEBPACK_IMPORTED_MODULE_7___default()(portKey, '/');\n\n          const containerPort = parseInt(portKeySplit[0], 10);\n          const portBinding = portBindings[portKey][0];\n          portBindings[portKey].shift();\n          const hostPort = parsePort(portBinding.HostPort); // We only combine single ports, and skip the host port ranges on one container port\n\n          if (hostPort > 0) {\n            // If we detect consecutive ports, we create a range of them\n            if (bindings.length > 0 && previousHostPort === hostPort - 1 && previousContainerPort === containerPort - 1) {\n              bindings[bindings.length - 1].hostPort = createPortRange(bindings[bindings.length - 1].hostPort, hostPort);\n              bindings[bindings.length - 1].containerPort = createPortRange(bindings[bindings.length - 1].containerPort, containerPort);\n              previousHostPort = hostPort;\n              previousContainerPort = containerPort;\n              return;\n            }\n\n            previousHostPort = hostPort;\n            previousContainerPort = containerPort;\n          } else {\n            previousHostPort = -1;\n            previousContainerPort = -1;\n          }\n\n          let bindingHostPort = portBinding.HostPort.toString();\n\n          if (ip) {\n            bindingHostPort = `${ip}:${bindingHostPort}`;\n          }\n\n          const binding = {\n            hostPort: bindingHostPort,\n            containerPort: containerPort,\n            protocol: protocol\n          };\n          bindings.push(binding);\n        });\n      });\n    });\n\n    return bindings;\n  };\n\n  helper.getContainerNames = function (containers) {\n    return lodash_es_map__WEBPACK_IMPORTED_MODULE_6___default()(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_6___default()(containers, 'Names')), name => lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_0___default()(name, '/'));\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///5204\n");

}),

20886:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildImageFullURI\": function() { return /* binding */ buildImageFullURI; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/models/registryTypes */ 56414);\n\n\n\nangular.module('portainer.docker').factory('ImageHelper', ImageHelperFactory);\n\nfunction ImageHelperFactory() {\n  return {\n    isValidTag,\n    createImageConfigForContainer,\n    getImagesNamesForDownload,\n    removeDigestFromRepository,\n    imageContainsURL\n  };\n\n  function isValidTag(tag) {\n    return tag.match(/^(?![\\.\\-])([a-zA-Z0-9\\_\\.\\-])+$/g);\n  }\n\n  function getImagesNamesForDownload(images) {\n    var names = images.map(function (image) {\n      return image.RepoTags[0] !== '<none>:<none>' ? image.RepoTags[0] : image.Id;\n    });\n    return {\n      names: names\n    };\n  }\n  /**\n   *\n   * @param {PorImageRegistryModel} registry\n   */\n\n\n  function createImageConfigForContainer(imageModel) {\n    return {\n      fromImage: buildImageFullURI(imageModel)\n    };\n  }\n\n  function imageContainsURL(image) {\n    const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_1___default()(image, '/');\n\n    const url = split[0];\n\n    if (split.length > 1) {\n      return lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '.') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, ':');\n    }\n\n    return false;\n  }\n\n  function removeDigestFromRepository(repository) {\n    return repository.split('@sha')[0];\n  }\n}\n/**\n * builds the complete uri for an image based on its registry\n * @param {PorImageRegistryModel} imageModel\n */\n\n\nfunction buildImageFullURI(imageModel) {\n  if (!imageModel.UseRegistry) {\n    return ensureTag(imageModel.Image);\n  }\n\n  const imageName = buildImageFullURIWithRegistry(imageModel);\n  return ensureTag(imageName);\n\n  function ensureTag(image, defaultTag = 'latest') {\n    return image.includes(':') ? image : `${image}:${defaultTag}`;\n  }\n}\n\nfunction buildImageFullURIWithRegistry(imageModel) {\n  switch (imageModel.Registry.Type) {\n    case Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.GITLAB:\n      return buildImageURIForGitLab(imageModel);\n\n    case Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.QUAY:\n      return buildImageURIForQuay(imageModel);\n\n    case Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.ANONYMOUS:\n      return imageModel.Image;\n\n    default:\n      return buildImageURIForOtherRegistry(imageModel);\n  }\n\n  function buildImageURIForGitLab(imageModel) {\n    const slash = imageModel.Image.startsWith(':') ? '' : '/';\n    return `${imageModel.Registry.URL}/${imageModel.Registry.Gitlab.ProjectPath}${slash}${imageModel.Image}`;\n  }\n\n  function buildImageURIForQuay(imageModel) {\n    const name = imageModel.Registry.Quay.UseOrganisation ? imageModel.Registry.Quay.OrganisationName : imageModel.Registry.Username;\n    const url = imageModel.Registry.URL ? imageModel.Registry.URL + '/' : '';\n    return `${url}${name}/${imageModel.Image}`;\n  }\n\n  function buildImageURIForOtherRegistry(imageModel) {\n    const url = imageModel.Registry.URL ? imageModel.Registry.URL + '/' : '';\n    return url + imageModel.Image;\n  }\n}//# sourceURL=webpack-internal:///20886\n");

}),

46313:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').factory('InfoHelper', [function InfoHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.determineEndpointMode = function (info, type) {\n    var mode = {\n      provider: '',\n      role: '',\n      agentProxy: false\n    };\n\n    if (type === 2 || type === 4) {\n      mode.agentProxy = true;\n    }\n\n    if (!info.Swarm || lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default()(info.Swarm.NodeID)) {\n      mode.provider = 'DOCKER_STANDALONE';\n    } else {\n      mode.provider = 'DOCKER_SWARM_MODE';\n\n      if (info.Swarm.ControlAvailable) {\n        mode.role = 'MANAGER';\n      } else {\n        mode.role = 'WORKER';\n      }\n    }\n\n    return mode;\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///46313\n");

}),

6264:

(function() {

eval("angular.module('portainer.docker').factory('LabelHelper', [function LabelHelperFactory() {\n  'use strict';\n\n  return {\n    fromLabelHashToKeyValue: function (labels) {\n      if (labels) {\n        return Object.keys(labels).map(function (key) {\n          return {\n            key: key,\n            value: labels[key],\n            originalKey: key,\n            originalValue: labels[key],\n            added: true\n          };\n        });\n      }\n\n      return [];\n    },\n    fromKeyValueToLabelHash: function (labelKV) {\n      var labels = {};\n\n      if (labelKV) {\n        labelKV.forEach(function (label) {\n          if (label.key) {\n            labels[label.key] = label.value;\n          }\n        });\n      }\n\n      return labels;\n    }\n  };\n}]);//# sourceURL=webpack-internal:///6264\n");

}),

69452:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass DockerNetworkHelper {\n  static getIPV4Configs(configs) {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(configs, config => /^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$/.test(config.Subnet));\n  }\n\n  static getIPV6Configs(configs) {\n    return lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default()(configs, ...DockerNetworkHelper.getIPV4Configs(configs));\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (DockerNetworkHelper);//# sourceURL=webpack-internal:///69452\n");

}),

80677:

(function() {

eval("angular.module('portainer.docker').factory('NodeHelper', [function NodeHelperFactory() {\n  'use strict';\n\n  return {\n    nodeToConfig: function (node) {\n      return {\n        Name: node.Spec.Name,\n        Role: node.Spec.Role,\n        Labels: node.Spec.Labels,\n        Availability: node.Spec.Availability\n      };\n    }\n  };\n}]);//# sourceURL=webpack-internal:///80677\n");

}),

45665:

(function() {

eval("angular.module('portainer.docker').factory('SecretHelper', [function SecretHelperFactory() {\n  'use strict';\n\n  return {\n    flattenSecret: function (secret) {\n      if (secret) {\n        return {\n          Id: secret.SecretID,\n          Name: secret.SecretName,\n          FileName: secret.File.Name,\n          Uid: secret.File.UID,\n          Gid: secret.File.GID,\n          Mode: secret.File.Mode\n        };\n      }\n\n      return {};\n    },\n    secretConfig: function (secret) {\n      if (secret) {\n        return {\n          SecretID: secret.Id,\n          SecretName: secret.Name,\n          File: {\n            Name: secret.FileName,\n            UID: secret.Uid || '0',\n            GID: secret.Gid || '0',\n            Mode: secret.Mode || 444\n          }\n        };\n      }\n\n      return {};\n    }\n  };\n}]);//# sourceURL=webpack-internal:///45665\n");

}),

18743:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').factory('ServiceHelper', [function ServiceHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.associateTasksToService = function (service, tasks) {\n    service.Tasks = [];\n    var otherServicesTasks = [];\n\n    for (var i = 0; i < tasks.length; i++) {\n      var task = tasks[i];\n\n      if (task.ServiceId === service.Id) {\n        service.Tasks.push(task);\n        task.ServiceName = service.Name;\n      } else {\n        otherServicesTasks.push(task);\n      }\n    }\n\n    tasks = otherServicesTasks;\n  };\n\n  helper.serviceToConfig = function (service) {\n    return {\n      Name: service.Spec.Name,\n      Labels: service.Spec.Labels,\n      TaskTemplate: service.Spec.TaskTemplate,\n      Mode: service.Spec.Mode,\n      UpdateConfig: service.Spec.UpdateConfig,\n      Networks: service.Spec.Networks,\n      EndpointSpec: service.Spec.EndpointSpec\n    };\n  };\n\n  helper.translateKeyValueToPlacementPreferences = function (keyValuePreferences) {\n    if (keyValuePreferences) {\n      var preferences = [];\n      keyValuePreferences.forEach(function (preference) {\n        if (preference.strategy && preference.strategy !== '' && preference.value && preference.value !== '') {\n          switch (preference.strategy.toLowerCase()) {\n            case 'spread':\n              preferences.push({\n                Spread: {\n                  SpreadDescriptor: preference.value\n                }\n              });\n              break;\n          }\n        }\n      });\n      return preferences;\n    }\n\n    return [];\n  };\n\n  helper.translateKeyValueToPlacementConstraints = function (keyValueConstraints) {\n    if (keyValueConstraints) {\n      var constraints = [];\n      keyValueConstraints.forEach(function (constraint) {\n        if (constraint.key && constraint.key !== '' && constraint.value && constraint.value !== '') {\n          constraints.push(constraint.key + constraint.operator + constraint.value);\n        }\n      });\n      return constraints;\n    }\n\n    return [];\n  };\n\n  helper.translatePreferencesToKeyValue = function (preferences) {\n    if (preferences) {\n      var keyValuePreferences = [];\n      preferences.forEach(function (preference) {\n        if (preference.Spread) {\n          keyValuePreferences.push({\n            strategy: 'Spread',\n            value: preference.Spread.SpreadDescriptor\n          });\n        }\n      });\n      return keyValuePreferences;\n    }\n\n    return [];\n  };\n\n  helper.translateConstraintsToKeyValue = function (constraints) {\n    function getOperator(constraint) {\n      var indexEquals = constraint.indexOf('==');\n\n      if (indexEquals >= 0) {\n        return [indexEquals, '=='];\n      }\n\n      return [constraint.indexOf('!='), '!='];\n    }\n\n    if (constraints) {\n      var keyValueConstraints = [];\n      constraints.forEach(function (constraint) {\n        var operatorIndices = getOperator(constraint);\n        var key = constraint.slice(0, operatorIndices[0]);\n        var operator = operatorIndices[1];\n        var value = constraint.slice(operatorIndices[0] + 2);\n        keyValueConstraints.push({\n          key: key,\n          value: value,\n          operator: operator,\n          originalKey: key,\n          originalValue: value\n        });\n      });\n      return keyValueConstraints;\n    }\n  };\n\n  helper.translateHumanDurationToNanos = function (humanDuration) {\n    var nanos;\n    var regex = /^([0-9]+)(h|m|s|ms|us|ns)$/i;\n    var matches = humanDuration.match(regex);\n\n    if (matches !== null && matches.length === 3) {\n      var duration = parseInt(matches[1], 10);\n      var unit = matches[2]; // Moment.js cannot use micro or nanoseconds\n\n      switch (unit) {\n        case 'ns':\n          nanos = duration;\n          break;\n\n        case 'us':\n          nanos = duration * 1000;\n          break;\n\n        default:\n          nanos = moment__WEBPACK_IMPORTED_MODULE_0___default().duration(duration, unit).asMilliseconds() * 1000000;\n      }\n    }\n\n    return nanos;\n  }; // Convert nanoseconds to the higher unit possible\n  // e.g 1840 nanoseconds = 1804ns\n  // e.g 300000000000 nanoseconds = 5m\n  // e.g 3510000000000 nanoseconds = 3510s\n  // e.g 3540000000000 nanoseconds = 59m\n  // e.g 3600000000000 nanoseconds = 1h\n\n\n  helper.translateNanosToHumanDuration = function (nanos) {\n    var humanDuration = '0s';\n    var conversionFromNano = {};\n    conversionFromNano['ns'] = 1;\n    conversionFromNano['us'] = conversionFromNano['ns'] * 1000;\n    conversionFromNano['ms'] = conversionFromNano['us'] * 1000;\n    conversionFromNano['s'] = conversionFromNano['ms'] * 1000;\n    conversionFromNano['m'] = conversionFromNano['s'] * 60;\n    conversionFromNano['h'] = conversionFromNano['m'] * 60;\n    Object.keys(conversionFromNano).forEach(function (unit) {\n      if (nanos % conversionFromNano[unit] === 0 && nanos / conversionFromNano[unit] > 0) {\n        humanDuration = nanos / conversionFromNano[unit] + unit;\n      }\n    });\n    return humanDuration;\n  };\n\n  helper.translateLogDriverOptsToKeyValue = function (logOptions) {\n    var options = [];\n\n    if (logOptions) {\n      Object.keys(logOptions).forEach(function (key) {\n        options.push({\n          key: key,\n          value: logOptions[key],\n          originalKey: key,\n          originalValue: logOptions[key],\n          added: true\n        });\n      });\n    }\n\n    return options;\n  };\n\n  helper.translateKeyValueToLogDriverOpts = function (keyValueLogDriverOpts) {\n    var options = {};\n\n    if (keyValueLogDriverOpts) {\n      keyValueLogDriverOpts.forEach(function (option) {\n        if (option.key && option.key !== '' && option.value && option.value !== '') {\n          options[option.key] = option.value;\n        }\n      });\n    }\n\n    return options;\n  };\n\n  helper.translateHostsEntriesToHostnameIP = function (entries) {\n    var ipHostEntries = [];\n\n    if (entries) {\n      entries.forEach(function (entry) {\n        if (entry.indexOf(' ') && entry.split(' ').length === 2) {\n          var keyValue = entry.split(' ');\n          ipHostEntries.push({\n            hostname: keyValue[1],\n            ip: keyValue[0]\n          });\n        }\n      });\n    }\n\n    return ipHostEntries;\n  };\n\n  helper.translateHostnameIPToHostsEntries = function (entries) {\n    var ipHostEntries = [];\n\n    if (entries) {\n      entries.forEach(function (entry) {\n        if (entry.ip && entry.hostname) {\n          ipHostEntries.push(entry.ip + ' ' + entry.hostname);\n        }\n      });\n    }\n\n    return ipHostEntries;\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///18743\n");

}),

22588:

(function() {

eval("angular.module('portainer.docker').factory('TaskHelper', [function TaskHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.associateContainerToTask = function (task, containers) {\n    for (var i = 0; i < containers.length; i++) {\n      var container = containers[i];\n\n      if (task.ContainerId === container.Id) {\n        task.Container = container;\n        break;\n      }\n    }\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///22588\n");

}),

60069:

(function() {

eval("angular.module('portainer.docker').factory('VolumeHelper', [function VolumeHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.createDriverOptions = function (optionArray) {\n    var options = {};\n    optionArray.forEach(function (option) {\n      options[option.name] = option.value;\n    });\n    return options;\n  };\n\n  helper.isVolumeUsedByAService = function (volume, services) {\n    for (var i = 0; i < services.length; i++) {\n      var service = services[i];\n      var mounts = service.Mounts;\n\n      for (var j = 0; j < mounts.length; j++) {\n        var mount = mounts[j];\n\n        if (mount.Source === volume.Id) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///60069\n");

}),

8691:

(function() {

eval("angular.module('portainer.app').factory('ContainersInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Containers;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///8691\n");

}),

18872:

(function() {

eval("angular.module('portainer.app').factory('ImagesInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Images;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///18872\n");

}),

84395:

(function() {

eval("angular.module('portainer.app').factory('InfoInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined && endpoint.Snapshots.length && endpoint.Snapshots[0].SnapshotRaw) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Info;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///84395\n");

}),

2630:

(function() {

eval("angular.module('portainer.app').factory('NetworksInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Networks;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///2630\n");

}),

73166:

(function() {

eval("angular.module('portainer.app').factory('VersionInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined && endpoint.Snapshots.length && endpoint.Snapshots[0].SnapshotRaw) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Version;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///73166\n");

}),

33022:

(function() {

eval("angular.module('portainer.app').factory('VolumesInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.responseError = responseErrorInterceptor;\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.status === 502 || rejection.status === 503 || rejection.status === -1) {\n      var endpoint = EndpointProvider.currentEndpoint();\n\n      if (endpoint !== undefined) {\n        var data = endpoint.Snapshots[0].SnapshotRaw.Volumes;\n\n        if (data !== undefined) {\n          return data;\n        }\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///33022\n");

}),

66807:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ConfigViewModel\": function() { return /* binding */ ConfigViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\n\nfunction b64DecodeUnicode(str) {\n  try {\n    return decodeURIComponent(atob(str).split('').map(function (c) {\n      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n    }).join(''));\n  } catch (err) {\n    return atob(str);\n  }\n}\n\nfunction ConfigViewModel(data) {\n  this.Id = data.ID;\n  this.CreatedAt = data.CreatedAt;\n  this.UpdatedAt = data.UpdatedAt;\n  this.Version = data.Version.Index;\n  this.Name = data.Spec.Name;\n  this.Labels = data.Spec.Labels;\n  this.Data = b64DecodeUnicode(data.Spec.Data);\n\n  if (data.Portainer && data.Portainer.ResourceControl) {\n    this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.Portainer.ResourceControl);\n  }\n}//# sourceURL=webpack-internal:///66807\n");

}),

12064:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createStatus\": function() { return /* binding */ createStatus; },\n/* harmony export */   \"ContainerViewModel\": function() { return /* binding */ ContainerViewModel; },\n/* harmony export */   \"ContainerStatsViewModel\": function() { return /* binding */ ContainerStatsViewModel; },\n/* harmony export */   \"ContainerDetailsViewModel\": function() { return /* binding */ ContainerDetailsViewModel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/values */ 68582);\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_values__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\n\n\n\nfunction createStatus(statusText) {\n  var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2___default()(statusText);\n\n  if (status.indexOf('paused') > -1) {\n    return 'paused';\n  } else if (status.indexOf('dead') > -1) {\n    return 'dead';\n  } else if (status.indexOf('created') > -1) {\n    return 'created';\n  } else if (status.indexOf('exited') > -1) {\n    return 'stopped';\n  } else if (status.indexOf('(healthy)') > -1) {\n    return 'healthy';\n  } else if (status.indexOf('(unhealthy)') > -1) {\n    return 'unhealthy';\n  } else if (status.indexOf('(health: starting)') > -1) {\n    return 'starting';\n  }\n\n  return 'running';\n}\nfunction ContainerViewModel(data) {\n  this.Id = data.Id;\n  this.Status = createStatus(data.Status);\n  this.State = data.State;\n  this.Created = data.Created;\n  this.Names = data.Names; // Unavailable in Docker < 1.10\n\n  if (data.NetworkSettings && !lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(data.NetworkSettings.Networks)) {\n    this.IP = data.NetworkSettings.Networks[Object.keys(data.NetworkSettings.Networks)[0]].IPAddress;\n  }\n\n  this.NetworkSettings = data.NetworkSettings;\n  this.Image = data.Image;\n  this.ImageID = data.ImageID;\n  this.Command = data.Command;\n  this.Checked = false;\n  this.Labels = data.Labels;\n\n  if (this.Labels && this.Labels['com.docker.compose.project']) {\n    this.StackName = this.Labels['com.docker.compose.project'];\n  } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n    this.StackName = this.Labels['com.docker.stack.namespace'];\n  }\n\n  this.Mounts = data.Mounts;\n  this.IsPortainer = data.IsPortainer;\n  this.Ports = [];\n\n  if (data.Ports) {\n    for (var i = 0; i < data.Ports.length; ++i) {\n      var p = data.Ports[i];\n\n      if (p.PublicPort) {\n        this.Ports.push({\n          host: p.IP,\n          private: p.PrivatePort,\n          public: p.PublicPort\n        });\n      }\n    }\n  }\n\n  if (data.Portainer) {\n    if (data.Portainer.ResourceControl) {\n      this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_3__.ResourceControlViewModel(data.Portainer.ResourceControl);\n    }\n\n    if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n      this.NodeName = data.Portainer.Agent.NodeName;\n    }\n  }\n}\nfunction ContainerStatsViewModel(data) {\n  this.read = data.read;\n  this.preread = data.preread;\n\n  if (data.memory_stats.privateworkingset !== undefined) {\n    // Windows\n    this.MemoryUsage = data.memory_stats.privateworkingset;\n    this.MemoryCache = 0;\n    this.NumProcs = data.num_procs;\n    this.isWindows = true;\n  } else {\n    // Linux\n    if (data.memory_stats.stats === undefined || data.memory_stats.usage === undefined) {\n      this.MemoryUsage = this.MemoryCache = 0;\n    } else {\n      this.MemoryCache = 0;\n\n      if (data.memory_stats.stats.cache !== undefined) {\n        // cgroups v1\n        this.MemoryCache = data.memory_stats.stats.cache;\n      }\n\n      this.MemoryUsage = data.memory_stats.usage - this.MemoryCache;\n    }\n  }\n\n  this.PreviousCPUTotalUsage = data.precpu_stats.cpu_usage.total_usage;\n  this.PreviousCPUSystemUsage = data.precpu_stats.system_cpu_usage;\n  this.CurrentCPUTotalUsage = data.cpu_stats.cpu_usage.total_usage;\n  this.CurrentCPUSystemUsage = data.cpu_stats.system_cpu_usage;\n  this.CPUCores = 1;\n\n  if (data.cpu_stats.cpu_usage.percpu_usage) {\n    this.CPUCores = data.cpu_stats.cpu_usage.percpu_usage.length;\n  } else {\n    if (data.cpu_stats.online_cpus !== undefined) {\n      this.CPUCores = data.cpu_stats.online_cpus;\n    }\n  }\n\n  this.Networks = lodash_es_values__WEBPACK_IMPORTED_MODULE_0___default()(data.networks);\n\n  if (data.blkio_stats !== undefined && data.blkio_stats.io_service_bytes_recursive !== null) {\n    //TODO: take care of multiple block devices\n    var readData = data.blkio_stats.io_service_bytes_recursive.find(d => d.op === 'Read');\n\n    if (readData === undefined) {\n      // try the cgroups v2 version\n      readData = data.blkio_stats.io_service_bytes_recursive.find(d => d.op === 'read');\n    }\n\n    if (readData !== undefined) {\n      this.BytesRead = readData.value;\n    }\n\n    var writeData = data.blkio_stats.io_service_bytes_recursive.find(d => d.op === 'Write');\n\n    if (writeData === undefined) {\n      // try the cgroups v2 version\n      writeData = data.blkio_stats.io_service_bytes_recursive.find(d => d.op === 'write');\n    }\n\n    if (writeData !== undefined) {\n      this.BytesWrite = writeData.value;\n    }\n  } else {\n    //no IO related data is available\n    this.noIOdata = true;\n  }\n}\nfunction ContainerDetailsViewModel(data) {\n  this.Model = data;\n  this.Id = data.Id;\n  this.State = data.State;\n  this.Created = data.Created;\n  this.Name = data.Name;\n  this.NetworkSettings = data.NetworkSettings;\n  this.Args = data.Args;\n  this.Image = data.Image;\n  this.Config = data.Config;\n  this.HostConfig = data.HostConfig;\n  this.Mounts = data.Mounts;\n\n  if (data.Portainer && data.Portainer.ResourceControl) {\n    this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_3__.ResourceControlViewModel(data.Portainer.ResourceControl);\n  }\n\n  this.IsPortainer = data.IsPortainer;\n}//# sourceURL=webpack-internal:///12064\n");

}),

66328:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ContainerCapabilities\": function() { return /* binding */ ContainerCapabilities; },\n/* harmony export */   \"ContainerCapability\": function() { return /* binding */ ContainerCapability; }\n/* harmony export */ });\nvar capDesc = {\n  SETPCAP: '修改流程能力。',\n  MKNOD: '使用 mknod(2) 创建特殊文件。',\n  AUDIT_WRITE: '向内核审计日志写入记录。',\n  CHOWN: '对文件UID和GID进行任意修改（见chown(2)）。',\n  NET_RAW: '使用RAW和PACKET套接字。',\n  DAC_OVERRIDE: '绕过文件读、写和执行权限检查。',\n  FOWNER: '绕过通常要求进程的文件系统UID与文件的UID匹配的操作的权限检查。',\n  FSETID: '当一个文件被修改时，不要清除set-user-ID和set-group-ID权限位。',\n  KILL: '绕过发送信号的权限检查。',\n  SETGID: '对进程GID和补充GID列表进行任意操作。',\n  SETUID: '对进程UID进行任意的操作。',\n  NET_BIND_SERVICE: '将一个套接字绑定到互联网领域的特权端口（端口号小于1024）。',\n  SYS_CHROOT: '使用chroot(2)，改变根目录。',\n  SETFCAP: '设置文件能力。',\n  SYS_MODULE: '加载和卸载内核模块。',\n  SYS_RAWIO: '执行I/O端口操作（iopl(2)和ioperm(2)）。',\n  SYS_PACCT: '使用acct(2)，打开或关闭进程会计。',\n  SYS_ADMIN: '执行一系列的系统管理操作。',\n  SYS_NICE: '提高进程的 nice 值（nice(2), setpriority(2)），改变任意进程的 nice 值。',\n  SYS_RESOURCE: '覆盖资源限制。',\n  SYS_TIME: '设置系统时钟（settimeofday(2), stime(2), adjtimex(2)）；设置实时（硬件）时钟。',\n  SYS_TTY_CONFIG: '使用 vhangup(2) ；在虚拟终端上采用各种特权 ioctl(2) 操作。',\n  AUDIT_CONTROL: '启用和禁用内核审计；改变审计过滤规则；检索审计状态和过滤规则。',\n  MAC_ADMIN: '允许MAC配置或状态改变。已为Smack LSM实施。',\n  MAC_OVERRIDE: '覆盖强制访问控制（MAC）。为Smack Linux安全模块（LSM）实施。',\n  NET_ADMIN: '执行各种与网络有关的操作。',\n  SYSLOG: '执行特权的 syslog(2) 操作。',\n  DAC_READ_SEARCH: '绕过文件读取权限检查和目录读取和执行权限检查。',\n  LINUX_IMMUTABLE: '设置 FS_APPEND_FL 和 FS_IMMUTABLE_FL i-node 标记。',\n  NET_BROADCAST: '进行套接字广播，并收听组播。',\n  IPC_LOCK: '锁定内存（mlock(2), mlockall(2), mmap(2), shmctl(2)）。',\n  IPC_OWNER: '绕过对System V IPC对象操作的权限检查。',\n  SYS_PTRACE: '使用 ptrace(2) 跟踪任意进程。',\n  SYS_BOOT: '使用reboot(2)和kexec_load(2)，重新启动并加载一个新的内核以便以后执行。',\n  LEASE: '在任意文件上建立租约（见 fcntl(2)）。',\n  WAKE_ALARM: '触发一些能唤醒系统的东西。',\n  BLOCK_SUSPEND: '采用可以阻止系统暂停的功能。'\n};\nfunction ContainerCapabilities() {\n  // all capabilities can be found at https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities\n  return [new ContainerCapability('SETPCAP', true), new ContainerCapability('MKNOD', true), new ContainerCapability('AUDIT_WRITE', true), new ContainerCapability('CHOWN', true), new ContainerCapability('NET_RAW', true), new ContainerCapability('DAC_OVERRIDE', true), new ContainerCapability('FOWNER', true), new ContainerCapability('FSETID', true), new ContainerCapability('KILL', true), new ContainerCapability('SETGID', true), new ContainerCapability('SETUID', true), new ContainerCapability('NET_BIND_SERVICE', true), new ContainerCapability('SYS_CHROOT', true), new ContainerCapability('SETFCAP', true), new ContainerCapability('SYS_MODULE', false), new ContainerCapability('SYS_RAWIO', false), new ContainerCapability('SYS_PACCT', false), new ContainerCapability('SYS_ADMIN', false), new ContainerCapability('SYS_NICE', false), new ContainerCapability('SYS_RESOURCE', false), new ContainerCapability('SYS_TIME', false), new ContainerCapability('SYS_TTY_CONFIG', false), new ContainerCapability('AUDIT_CONTROL', false), new ContainerCapability('MAC_ADMIN', false), new ContainerCapability('MAC_OVERRIDE', false), new ContainerCapability('NET_ADMIN', false), new ContainerCapability('SYSLOG', false), new ContainerCapability('DAC_READ_SEARCH', false), new ContainerCapability('LINUX_IMMUTABLE', false), new ContainerCapability('NET_BROADCAST', false), new ContainerCapability('IPC_LOCK', false), new ContainerCapability('IPC_OWNER', false), new ContainerCapability('SYS_PTRACE', false), new ContainerCapability('SYS_BOOT', false), new ContainerCapability('LEASE', false), new ContainerCapability('WAKE_ALARM', false), new ContainerCapability('BLOCK_SUSPEND', false)].sort(function (a, b) {\n    return a.capability < b.capability ? -1 : 1;\n  });\n}\nfunction ContainerCapability(cap, allowed) {\n  this.capability = cap;\n  this.allowed = allowed;\n  this.description = capDesc[cap];\n}//# sourceURL=webpack-internal:///66328\n");

}),

44333:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EventViewModel\": function() { return /* binding */ EventViewModel; }\n/* harmony export */ });\nfunction createEventDetails(event) {\n  var eventAttr = event.Actor.Attributes;\n  var details = '';\n  var action = event.Action;\n  var extra = '';\n  var hasColon = action.indexOf(':');\n\n  if (hasColon != -1) {\n    extra = action.substring(hasColon);\n    action = action.substring(0, hasColon);\n  }\n\n  switch (event.Type) {\n    case 'container':\n      switch (action) {\n        case 'stop':\n          details = '容器 ' + eventAttr.name + ' 已停止';\n          break;\n\n        case 'destroy':\n          details = '容器 ' + eventAttr.name + ' 已删除';\n          break;\n\n        case 'create':\n          details = '容器 ' + eventAttr.name + ' 已创建';\n          break;\n\n        case 'start':\n          details = '容器 ' + eventAttr.name + ' 已启动';\n          break;\n\n        case 'kill':\n          details = '容器 ' + eventAttr.name + ' 已终止';\n          break;\n\n        case 'die':\n          details = '容器 ' + eventAttr.name + ' 已退出，状态代码为 ' + eventAttr.exitCode;\n          break;\n\n        case 'commit':\n          details = 'Container ' + eventAttr.name + ' committed';\n          break;\n\n        case 'restart':\n          details = '容器 ' + eventAttr.name + ' 重新启动';\n          break;\n\n        case 'pause':\n          details = '容器 ' + eventAttr.name + ' 已暂停';\n          break;\n\n        case 'unpause':\n          details = '容器 ' + eventAttr.name + ' 已恢复';\n          break;\n\n        case 'attach':\n          details = 'Container ' + eventAttr.name + ' attached';\n          break;\n\n        case 'detach':\n          details = 'Container ' + eventAttr.name + ' detached';\n          break;\n\n        case 'copy':\n          details = '容器 ' + eventAttr.name + ' 已复制';\n          break;\n\n        case 'export':\n          details = '容器 ' + eventAttr.name + ' 已导出';\n          break;\n\n        case 'health_status':\n          details = '容器 ' + eventAttr.name + ' 被执行健康检查';\n          break;\n\n        case 'oom':\n          details = '容器 ' + eventAttr.name + ' 内存不足';\n          break;\n\n        case 'rename':\n          details = '容器 ' + eventAttr.name + ' 重命名';\n          break;\n\n        case 'resize':\n          details = '容器 ' + eventAttr.name + ' 重置大小';\n          break;\n\n        case 'top':\n          details = '显示容器的运行进程 ' + eventAttr.name;\n          break;\n\n        case 'update':\n          details = '容器 ' + eventAttr.name + ' 已更新';\n          break;\n\n        case 'exec_create':\n          details = '创建的执行实例';\n          break;\n\n        case 'exec_start':\n          details = '开始执行实例';\n          break;\n\n        case 'exec_die':\n          details = '执行实例已退出';\n          break;\n\n        default:\n          details = '不支持的事件';\n      }\n\n      break;\n\n    case 'image':\n      switch (action) {\n        case 'delete':\n          details = 'Image deleted';\n          break;\n\n        case 'import':\n          details = '镜像 ' + event.Actor.ID + ' 导入';\n          break;\n\n        case 'load':\n          details = '镜像 ' + event.Actor.ID + ' 加载';\n          break;\n\n        case 'tag':\n          details = '创建新标记为 ' + eventAttr.name;\n          break;\n\n        case 'untag':\n          details = 'Image untagged';\n          break;\n\n        case 'save':\n          details = '镜像 ' + event.Actor.ID + ' 已保存';\n          break;\n\n        case 'pull':\n          details = '镜像 ' + event.Actor.ID + ' 已拉取';\n          break;\n\n        case 'push':\n          details = '镜像 ' + event.Actor.ID + ' 已推送';\n          break;\n\n        default:\n          details = 'Unsupported event';\n      }\n\n      break;\n\n    case 'network':\n      switch (action) {\n        case 'create':\n          details = '网络 ' + eventAttr.name + ' 已创建';\n          break;\n\n        case 'destroy':\n          details = '网络 ' + eventAttr.name + ' 已删除';\n          break;\n\n        case 'remove':\n          details = '网络 ' + eventAttr.name + ' 重命名';\n          break;\n\n        case 'connect':\n          details = '容器已连接到 ' + eventAttr.name + ' 网络';\n          break;\n\n        case 'disconnect':\n          details = '容器已从 ' + eventAttr.name + ' 网络断开连接';\n          break;\n\n        default:\n          details = 'Unsupported event';\n      }\n\n      break;\n\n    case 'volume':\n      switch (action) {\n        case 'create':\n          details = '存储卷 ' + event.Actor.ID + ' 已创建';\n          break;\n\n        case 'destroy':\n          details = '存储卷 ' + event.Actor.ID + ' 已删除';\n          break;\n\n        case 'mount':\n          details = '存储卷 ' + event.Actor.ID + ' 已挂载';\n          break;\n\n        case 'unmount':\n          details = '存储卷 ' + event.Actor.ID + ' 已卸载';\n          break;\n\n        default:\n          details = 'Unsupported event';\n      }\n\n      break;\n\n    default:\n      details = 'Unsupported event';\n  }\n\n  return details + extra;\n}\n\nfunction EventViewModel(data) {\n  // Type, Action, Actor unavailable in Docker < 1.10\n  this.Time = data.time;\n\n  if (data.Type) {\n    this.Type = data.Type;\n    this.Details = createEventDetails(data);\n  } else {\n    this.Type = data.status;\n    this.Details = data.from;\n  }\n}//# sourceURL=webpack-internal:///44333\n");

}),

84647:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ImageViewModel\": function() { return /* binding */ ImageViewModel; },\n/* harmony export */   \"ImageBuildModel\": function() { return /* binding */ ImageBuildModel; }\n/* harmony export */ });\nfunction ImageViewModel(data) {\n  this.Id = data.Id;\n  this.Tag = data.Tag;\n  this.Repository = data.Repository;\n  this.Created = data.Created;\n  this.Checked = false;\n  this.RepoTags = data.RepoTags;\n\n  if (!this.RepoTags && data.RepoDigests) {\n    this.RepoTags = [];\n\n    for (var i = 0; i < data.RepoDigests.length; i++) {\n      var digest = data.RepoDigests[i];\n      var repository = digest.substring(0, digest.indexOf('@'));\n      this.RepoTags.push(repository + ':<none>');\n    }\n  }\n\n  this.VirtualSize = data.VirtualSize;\n  this.ContainerCount = data.ContainerCount;\n\n  if (data.Portainer && data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n    this.NodeName = data.Portainer.Agent.NodeName;\n  }\n\n  this.Labels = data.Labels;\n}\nfunction ImageBuildModel(data) {\n  this.hasError = false;\n  var buildLogs = [];\n\n  for (var i = 0; i < data.length; i++) {\n    var line = data[i];\n\n    if (line.stream) {\n      line = line.stream.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');\n      buildLogs.push(line);\n    }\n\n    if (line.errorDetail) {\n      buildLogs.push(line.errorDetail.message);\n      this.hasError = true;\n    }\n  }\n\n  this.buildLogs = buildLogs;\n}//# sourceURL=webpack-internal:///84647\n");

}),

56946:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ImageDetailsViewModel\": function() { return /* binding */ ImageDetailsViewModel; }\n/* harmony export */ });\nfunction ImageDetailsViewModel(data) {\n  this.Id = data.Id;\n  this.Tag = data.Tag;\n  this.Parent = data.Parent;\n  this.Repository = data.Repository;\n  this.Created = data.Created;\n  this.Checked = false;\n  this.RepoTags = data.RepoTags;\n  this.VirtualSize = data.VirtualSize;\n  this.DockerVersion = data.DockerVersion;\n  this.Os = data.Os;\n  this.Architecture = data.Architecture;\n  this.Author = data.Author;\n  this.Command = data.Config.Cmd;\n  this.Entrypoint = data.ContainerConfig.Entrypoint ? data.ContainerConfig.Entrypoint : '';\n  this.ExposedPorts = data.ContainerConfig.ExposedPorts ? Object.keys(data.ContainerConfig.ExposedPorts) : [];\n  this.Volumes = data.ContainerConfig.Volumes ? Object.keys(data.ContainerConfig.Volumes) : [];\n  this.Env = data.ContainerConfig.Env ? data.ContainerConfig.Env : [];\n  this.Labels = data.ContainerConfig.Labels;\n}//# sourceURL=webpack-internal:///56946\n");

}),

75208:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ImageLayerViewModel\": function() { return /* binding */ ImageLayerViewModel; }\n/* harmony export */ });\nfunction ImageLayerViewModel(order, data) {\n  this.Order = order;\n  this.Id = data.Id;\n  this.Created = data.Created;\n  this.CreatedBy = data.CreatedBy;\n  this.Size = data.Size;\n  this.Comment = data.Comment;\n  this.Tags = data.Tags;\n}//# sourceURL=webpack-internal:///75208\n");

}),

70983:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NetworkViewModel\": function() { return /* binding */ NetworkViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\nfunction NetworkViewModel(data) {\n  this.Id = data.Id;\n  this.Name = data.Name;\n  this.Scope = data.Scope;\n  this.Driver = data.Driver;\n  this.Attachable = data.Attachable;\n  this.Internal = data.Internal;\n  this.IPAM = data.IPAM;\n  this.Containers = data.Containers;\n  this.Options = data.Options;\n  this.Ingress = data.Ingress;\n  this.Labels = data.Labels;\n\n  if (this.Labels && this.Labels['com.docker.compose.project']) {\n    this.StackName = this.Labels['com.docker.compose.project'];\n  } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n    this.StackName = this.Labels['com.docker.stack.namespace'];\n  }\n\n  if (data.Portainer) {\n    if (data.Portainer.ResourceControl) {\n      this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.Portainer.ResourceControl);\n    }\n\n    if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n      this.NodeName = data.Portainer.Agent.NodeName;\n    }\n  }\n\n  this.ConfigFrom = data.ConfigFrom;\n  this.ConfigOnly = data.ConfigOnly;\n}//# sourceURL=webpack-internal:///70983\n");

}),

11339:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NodeViewModel\": function() { return /* binding */ NodeViewModel; }\n/* harmony export */ });\nfunction NodeViewModel(data) {\n  this.Model = data;\n  this.Id = data.ID;\n  this.Version = data.Version.Index;\n  this.Name = data.Spec.Name;\n  this.Role = data.Spec.Role;\n  this.CreatedAt = data.CreatedAt;\n  this.UpdatedAt = data.UpdatedAt;\n  this.Availability = data.Spec.Availability;\n  var labels = data.Spec.Labels;\n\n  if (labels) {\n    this.Labels = Object.keys(labels).map(function (key) {\n      return {\n        key: key,\n        value: labels[key],\n        originalKey: key,\n        originalValue: labels[key],\n        added: true\n      };\n    });\n  } else {\n    this.Labels = [];\n  }\n\n  var engineLabels = data.Description.Engine.Labels;\n\n  if (engineLabels) {\n    this.EngineLabels = Object.keys(engineLabels).map(function (key) {\n      return {\n        key: key,\n        value: engineLabels[key]\n      };\n    });\n  } else {\n    this.EngineLabels = [];\n  }\n\n  this.Hostname = data.Description.Hostname;\n  this.PlatformArchitecture = data.Description.Platform.Architecture;\n  this.PlatformOS = data.Description.Platform.OS;\n  this.CPUs = data.Description.Resources.NanoCPUs;\n  this.Memory = data.Description.Resources.MemoryBytes;\n  this.EngineVersion = data.Description.Engine.EngineVersion;\n  this.Plugins = data.Description.Engine.Plugins;\n  this.Status = data.Status.State;\n\n  if (data.Status.Addr) {\n    this.Addr = data.Status.Addr;\n  }\n\n  if (data.ManagerStatus) {\n    this.Leader = data.ManagerStatus.Leader;\n    this.Reachability = data.ManagerStatus.Reachability;\n    this.ManagerAddr = data.ManagerStatus.Addr;\n  }\n}//# sourceURL=webpack-internal:///11339\n");

}),

34161:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PluginViewModel\": function() { return /* binding */ PluginViewModel; }\n/* harmony export */ });\n// This model is based on https://github.com/moby/moby/blob/0ac25dfc751fa4304ab45afd5cd8705c2235d101/api/types/plugin.go#L8-L31\n// instead of the official documentation.\n// See: https://github.com/moby/moby/issues/34241\nfunction PluginViewModel(data) {\n  this.Id = data.Id;\n  this.Name = data.Name;\n  this.Enabled = data.Enabled;\n  this.Config = data.Config;\n}//# sourceURL=webpack-internal:///34161\n");

}),

76939:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PorImageRegistryModel\": function() { return /* binding */ PorImageRegistryModel; }\n/* harmony export */ });\n/**\n * This model should be used with por-image-registry component\n * And bound to the 'model' attribute\n *\n * // viewController.js\n *\n * this.imageModel = new PorImageRegistryModel();\n *\n * // view.html\n * <por-image-registry model=\"$ctrl.imageModel\" ... />\n */\nfunction PorImageRegistryModel() {\n  this.UseRegistry = true;\n  this.Registry = {};\n  this.Image = '';\n}//# sourceURL=webpack-internal:///76939\n");

}),

89638:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SecretViewModel\": function() { return /* binding */ SecretViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\nfunction SecretViewModel(data) {\n  this.Id = data.ID;\n  this.CreatedAt = data.CreatedAt;\n  this.UpdatedAt = data.UpdatedAt;\n  this.Version = data.Version.Index;\n  this.Name = data.Spec.Name;\n  this.Labels = data.Spec.Labels;\n\n  if (data.Portainer) {\n    if (data.Portainer.ResourceControl) {\n      this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.Portainer.ResourceControl);\n    }\n  }\n}//# sourceURL=webpack-internal:///89638\n");

}),

7456:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ServiceViewModel\": function() { return /* binding */ ServiceViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\nfunction ServiceViewModel(data, runningTasks, allTasks) {\n  this.Model = data;\n  this.Id = data.ID;\n  this.Tasks = [];\n  this.Name = data.Spec.Name;\n  this.CreatedAt = data.CreatedAt;\n  this.UpdatedAt = data.UpdatedAt;\n  this.Image = data.Spec.TaskTemplate.ContainerSpec.Image;\n  this.Version = data.Version.Index;\n\n  if (data.Spec.Mode.Replicated) {\n    this.Mode = 'replicated';\n    this.Replicas = data.Spec.Mode.Replicated.Replicas;\n  } else {\n    this.Mode = 'global';\n\n    if (allTasks) {\n      this.Replicas = allTasks.length;\n    }\n  }\n\n  if (runningTasks) {\n    this.Running = runningTasks.length;\n  }\n\n  if (data.Spec.TaskTemplate.Resources) {\n    if (data.Spec.TaskTemplate.Resources.Limits) {\n      this.LimitNanoCPUs = data.Spec.TaskTemplate.Resources.Limits.NanoCPUs;\n      this.LimitMemoryBytes = data.Spec.TaskTemplate.Resources.Limits.MemoryBytes;\n    }\n\n    if (data.Spec.TaskTemplate.Resources.Reservations) {\n      this.ReservationNanoCPUs = data.Spec.TaskTemplate.Resources.Reservations.NanoCPUs;\n      this.ReservationMemoryBytes = data.Spec.TaskTemplate.Resources.Reservations.MemoryBytes;\n    }\n  }\n\n  if (data.Spec.TaskTemplate.RestartPolicy) {\n    this.RestartCondition = data.Spec.TaskTemplate.RestartPolicy.Condition || 'any';\n    this.RestartDelay = data.Spec.TaskTemplate.RestartPolicy.Delay || 5000000000;\n    this.RestartMaxAttempts = data.Spec.TaskTemplate.RestartPolicy.MaxAttempts || 0;\n    this.RestartWindow = data.Spec.TaskTemplate.RestartPolicy.Window || 0;\n  } else {\n    this.RestartCondition = 'any';\n    this.RestartDelay = 5000000000;\n    this.RestartMaxAttempts = 0;\n    this.RestartWindow = 0;\n  }\n\n  if (data.Spec.TaskTemplate.LogDriver) {\n    this.LogDriverName = data.Spec.TaskTemplate.LogDriver.Name || '';\n    this.LogDriverOpts = data.Spec.TaskTemplate.LogDriver.Options || [];\n  } else {\n    this.LogDriverName = '';\n    this.LogDriverOpts = [];\n  }\n\n  this.Constraints = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Constraints || [] : [];\n  this.Preferences = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Preferences || [] : [];\n  this.Platforms = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Platforms || [] : [];\n  this.Labels = data.Spec.Labels;\n\n  if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n    this.StackName = this.Labels['com.docker.stack.namespace'];\n  }\n\n  var containerSpec = data.Spec.TaskTemplate.ContainerSpec;\n\n  if (containerSpec) {\n    this.ContainerLabels = containerSpec.Labels;\n    this.Command = containerSpec.Command;\n    this.Arguments = containerSpec.Args;\n    this.Hostname = containerSpec.Hostname;\n    this.Env = containerSpec.Env;\n    this.Dir = containerSpec.Dir;\n    this.User = containerSpec.User;\n    this.Groups = containerSpec.Groups;\n    this.TTY = containerSpec.TTY;\n    this.OpenStdin = containerSpec.OpenStdin;\n    this.ReadOnly = containerSpec.ReadOnly;\n    this.Mounts = containerSpec.Mounts || [];\n    this.StopSignal = containerSpec.StopSignal;\n    this.StopGracePeriod = containerSpec.StopGracePeriod;\n    this.HealthCheck = containerSpec.HealthCheck || {};\n    this.Hosts = containerSpec.Hosts;\n    this.DNSConfig = containerSpec.DNSConfig;\n    this.Secrets = containerSpec.Secrets;\n    this.Configs = containerSpec.Configs;\n  }\n\n  if (data.Endpoint) {\n    this.Ports = data.Endpoint.Ports;\n  }\n\n  this.LogDriver = data.Spec.TaskTemplate.LogDriver;\n  this.Runtime = data.Spec.TaskTemplate.Runtime;\n  this.VirtualIPs = data.Endpoint ? data.Endpoint.VirtualIPs : [];\n\n  if (data.Spec.UpdateConfig) {\n    this.UpdateParallelism = typeof data.Spec.UpdateConfig.Parallelism !== undefined ? data.Spec.UpdateConfig.Parallelism || 0 : 1;\n    this.UpdateDelay = data.Spec.UpdateConfig.Delay || 0;\n    this.UpdateFailureAction = data.Spec.UpdateConfig.FailureAction || 'pause';\n    this.UpdateOrder = data.Spec.UpdateConfig.Order || 'stop-first';\n  } else {\n    this.UpdateParallelism = 1;\n    this.UpdateDelay = 0;\n    this.UpdateFailureAction = 'pause';\n    this.UpdateOrder = 'stop-first';\n  }\n\n  this.RollbackConfig = data.Spec.RollbackConfig;\n  this.Checked = false;\n  this.Scale = false;\n  this.EditName = false;\n\n  if (data.Portainer) {\n    if (data.Portainer.ResourceControl) {\n      this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.Portainer.ResourceControl);\n    }\n  }\n}//# sourceURL=webpack-internal:///7456\n");

}),

90906:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SwarmViewModel\": function() { return /* binding */ SwarmViewModel; }\n/* harmony export */ });\nfunction SwarmViewModel(data) {\n  this.Id = data.ID;\n}//# sourceURL=webpack-internal:///90906\n");

}),

59146:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TaskViewModel\": function() { return /* binding */ TaskViewModel; }\n/* harmony export */ });\nfunction TaskViewModel(data) {\n  this.Id = data.ID;\n  this.Created = data.CreatedAt;\n  this.Updated = data.UpdatedAt;\n  this.Slot = data.Slot;\n  this.Spec = data.Spec;\n  this.Status = data.Status;\n  this.DesiredState = data.DesiredState;\n  this.ServiceId = data.ServiceID;\n  this.NodeId = data.NodeID;\n\n  if (data.Status && data.Status.ContainerStatus && data.Status.ContainerStatus.ContainerID) {\n    this.ContainerId = data.Status.ContainerStatus.ContainerID;\n  }\n}//# sourceURL=webpack-internal:///59146\n");

}),

80682:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumeViewModel\": function() { return /* binding */ VolumeViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\nfunction VolumeViewModel(data) {\n  this.Id = data.Name;\n  this.CreatedAt = data.CreatedAt;\n  this.Driver = data.Driver;\n  this.Options = data.Options;\n  this.Labels = data.Labels;\n\n  if (this.Labels && this.Labels['com.docker.compose.project']) {\n    this.StackName = this.Labels['com.docker.compose.project'];\n  } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n    this.StackName = this.Labels['com.docker.stack.namespace'];\n  }\n\n  this.Mountpoint = data.Mountpoint;\n  this.ResourceId = data.ResourceID;\n\n  if (data.Portainer) {\n    if (data.Portainer.ResourceControl) {\n      this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.Portainer.ResourceControl);\n    }\n\n    if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n      this.NodeName = data.Portainer.Agent.NodeName;\n    }\n  }\n}//# sourceURL=webpack-internal:///80682\n");

}),

27401:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Build', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BuildFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/build', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    buildImage: {\n      method: 'POST',\n      ignoreLoadingBar: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.jsonObjectsToArrayHandler,\n      isArray: true,\n      headers: {\n        'Content-Type': 'application/x-tar'\n      }\n    },\n    buildImageOverride: {\n      method: 'POST',\n      ignoreLoadingBar: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.jsonObjectsToArrayHandler,\n      isArray: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///27401\n");

}),

66055:

(function() {

eval("angular.module('portainer.docker').factory('Commit', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function CommitFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/commit', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    commitContainer: {\n      method: 'POST',\n      params: {\n        container: '@id',\n        repo: '@repo'\n      },\n      ignoreLoadingBar: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///66055\n");

}),

12477:

(function() {

eval("angular.module('portainer.docker').factory('Config', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function ConfigFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/configs/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      ignoreLoadingBar: true\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///12477\n");

}),

82791:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Container', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'ContainersInterceptor', function ContainerFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, ContainersInterceptor) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/containers/:id/:action', {\n    name: '@name',\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      params: {\n        all: 0,\n        action: 'json',\n        filters: '@filters'\n      },\n      isArray: true,\n      interceptor: ContainersInterceptor\n    },\n    get: {\n      method: 'GET',\n      params: {\n        action: 'json'\n      }\n    },\n    logs: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'logs'\n      },\n      ignoreLoadingBar: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.logsHandler\n    },\n    stats: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        stream: false,\n        action: 'stats'\n      },\n      ignoreLoadingBar: true\n    },\n    top: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'top'\n      },\n      ignoreLoadingBar: true\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true\n    },\n    exec: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'exec'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true\n    },\n    inspect: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'json'\n      }\n    },\n    update: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'update'\n      }\n    },\n    prune: {\n      method: 'POST',\n      params: {\n        action: 'prune',\n        filters: '@filters'\n      }\n    },\n    resize: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'resize',\n        h: '@height',\n        w: '@width'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///82791\n");

}),

6396:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Exec', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function ExecFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/exec/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    resize: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'resize',\n        h: '@height',\n        w: '@width'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///6396\n");

}),

10679:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n/* harmony import */ var _response_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./response/image */ 89615);\n\n\nangular.module('portainer.docker').factory('Image', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'HttpRequestHelper', 'ImagesInterceptor', function ImageFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, HttpRequestHelper, ImagesInterceptor) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/images/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      params: {\n        all: 0,\n        action: 'json'\n      },\n      isArray: true,\n      interceptor: ImagesInterceptor\n    },\n    get: {\n      method: 'GET',\n      params: {\n        action: 'json'\n      }\n    },\n    search: {\n      method: 'GET',\n      params: {\n        action: 'search'\n      }\n    },\n    history: {\n      method: 'GET',\n      params: {\n        action: 'history'\n      },\n      isArray: true\n    },\n    insert: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'insert'\n      }\n    },\n    tag: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'tag',\n        force: 0,\n        repo: '@repo'\n      },\n      ignoreLoadingBar: true\n    },\n    inspect: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'json'\n      }\n    },\n    push: {\n      method: 'POST',\n      params: {\n        action: 'push',\n        id: '@imageName'\n      },\n      isArray: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.jsonObjectsToArrayHandler,\n      headers: {\n        'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader\n      },\n      ignoreLoadingBar: true\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create',\n        fromImage: '@fromImage'\n      },\n      isArray: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.jsonObjectsToArrayHandler,\n      headers: {\n        'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader\n      },\n      ignoreLoadingBar: true\n    },\n    download: {\n      method: 'GET',\n      params: {\n        action: 'get',\n        names: '@names'\n      },\n      transformResponse: _response_image__WEBPACK_IMPORTED_MODULE_1__.imageGetResponse,\n      responseType: 'blob',\n      ignoreLoadingBar: true\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        force: '@force'\n      },\n      isArray: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.deleteImageHandler\n    }\n  });\n}]);//# sourceURL=webpack-internal:///10679\n");

}),

96452:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Network', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'NetworksInterceptor', function NetworkFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, NetworksInterceptor) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/networks/:id/:action', {\n    id: '@id',\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      isArray: true,\n      interceptor: NetworksInterceptor\n    },\n    get: {\n      method: 'GET'\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true\n    },\n    remove: {\n      method: 'DELETE',\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler\n    },\n    connect: {\n      method: 'POST',\n      params: {\n        action: 'connect'\n      }\n    },\n    disconnect: {\n      method: 'POST',\n      params: {\n        action: 'disconnect'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///96452\n");

}),

71989:

(function() {

eval("angular.module('portainer.docker').factory('Node', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function NodeFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/nodes/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'update',\n        version: '@version'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///71989\n");

}),

357:

(function() {

eval("angular.module('portainer.docker').factory('Plugin', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function PluginFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/plugins/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      isArray: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///357\n");

}),

12944:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"jsonObjectsToArrayHandler\": function() { return /* binding */ jsonObjectsToArrayHandler; },\n/* harmony export */   \"genericHandler\": function() { return /* binding */ genericHandler; },\n/* harmony export */   \"logsHandler\": function() { return /* binding */ logsHandler; },\n/* harmony export */   \"deleteImageHandler\": function() { return /* binding */ deleteImageHandler; }\n/* harmony export */ });\nfunction isJSONArray(jsonString) {\n  return Object.prototype.toString.call(jsonString) === '[object Array]';\n}\n\nfunction isJSON(jsonString) {\n  try {\n    var o = JSON.parse(jsonString);\n\n    if (o && typeof o === 'object') {\n      return o;\n    }\n  } catch (e) {//empty\n  }\n\n  return false;\n} // The Docker API often returns a list of JSON object.\n// This handler wrap the JSON objects in an array.\n// Used by the API in: Image push, Image create, Events query.\n\n\nfunction jsonObjectsToArrayHandler(data) {\n  // catching empty data helps the function not to fail and prevents unwanted error message to user.\n  if (!data) {\n    return [];\n  }\n\n  var str = '[' + data.replace(/\\n/g, ' ').replace(/\\}\\s*\\{/g, '}, {') + ']';\n  return angular.fromJson(str);\n} // The Docker API often returns an empty string or a valid JSON object on success (Docker 1.9 -> Docker 1.12).\n// On error, it returns either an error message as a string (Docker < 1.12) or a JSON object with the field message\n// container the error (Docker = 1.12)\n// This handler ensure a valid JSON object is returned in any case.\n// Used by the API in: container deletion, network deletion, network creation, volume creation,\n// container exec, exec resize.\n\nfunction genericHandler(data) {\n  var response = {}; // No data is returned when deletion is successful (Docker 1.9 -> 1.12)\n\n  if (!data) {\n    return response;\n  } // A string is returned on failure (Docker < 1.12)\n  else if (!isJSON(data)) {\n    response.message = data;\n  } // Docker 1.12 returns a valid JSON object when an error occurs\n  else {\n    response = angular.fromJson(data);\n  }\n\n  return response;\n} // The Docker API returns the logs as a single string.\n// This handler wraps the data in a JSON object under the \"logs\" property.\n\nfunction logsHandler(data) {\n  return {\n    logs: data\n  };\n} // Image delete API returns an array on success (Docker 1.9 -> Docker 1.12).\n// On error, it returns either an error message as a string (Docker < 1.12) or a JSON object with the field message\n// container the error (Docker = 1.12).\n// This handler returns the original array on success or a newly created array containing\n// only one JSON object with the field message filled with the error message on failure.\n\nfunction deleteImageHandler(data) {\n  // A string is returned on failure (Docker < 1.12)\n  var response = [];\n\n  if (!isJSON(data)) {\n    response.push({\n      message: data\n    });\n  } // A JSON object is returned on failure (Docker = 1.12)\n  else if (!isJSONArray(data)) {\n    var json = angular.fromJson(data);\n    response.push(json);\n  } // An array is returned on success (Docker 1.9 -> 1.12)\n  else {\n    response = angular.fromJson(data);\n  }\n\n  return response;\n}//# sourceURL=webpack-internal:///12944\n");

}),

89615:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"imageGetResponse\": function() { return /* binding */ imageGetResponse; }\n/* harmony export */ });\n// The get action of the Image service returns a file.\n// ngResource will transform it as an array of chars.\n// This functions simply creates a response object and assign\n// the data to a field.\nfunction imageGetResponse(data) {\n  var response = {};\n  response.file = data;\n  return response;\n}//# sourceURL=webpack-internal:///89615\n");

}),

64522:

(function() {

eval("angular.module('portainer.docker').factory('Secret', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function SecretFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/secrets/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      ignoreLoadingBar: true\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///64522\n");

}),

49449:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Service', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'HttpRequestHelper', function ServiceFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, HttpRequestHelper) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/services/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    query: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        filters: '@filters'\n      }\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      headers: {\n        'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader,\n        version: '1.29'\n      },\n      ignoreLoadingBar: true\n    },\n    update: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'update',\n        version: '@version',\n        rollback: '@rollback'\n      },\n      headers: {\n        'X-Registry-Auth': config => btoa(JSON.stringify({\n          registryId: config.data.registryId\n        })),\n        version: '1.29'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    logs: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'logs'\n      },\n      ignoreLoadingBar: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.logsHandler\n    }\n  });\n}]);//# sourceURL=webpack-internal:///49449\n");

}),

52358:

(function() {

eval("angular.module('portainer.docker').factory('Swarm', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function SwarmFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/swarm', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET'\n    }\n  });\n}]);//# sourceURL=webpack-internal:///52358\n");

}),

61489:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('System', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'InfoInterceptor', 'VersionInterceptor', function SystemFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, InfoInterceptor, VersionInterceptor) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/:action/:subAction', {\n    name: '@name',\n    endpointId: EndpointProvider.endpointID\n  }, {\n    info: {\n      method: 'GET',\n      params: {\n        action: 'info'\n      },\n      interceptor: InfoInterceptor\n    },\n    version: {\n      method: 'GET',\n      params: {\n        action: 'version'\n      },\n      interceptor: VersionInterceptor\n    },\n    events: {\n      method: 'GET',\n      params: {\n        action: 'events',\n        since: '@since',\n        until: '@until'\n      },\n      isArray: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.jsonObjectsToArrayHandler\n    },\n    auth: {\n      method: 'POST',\n      params: {\n        action: 'auth'\n      }\n    },\n    dataUsage: {\n      method: 'GET',\n      params: {\n        action: 'system',\n        subAction: 'df'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///61489\n");

}),

86666:

(function() {

eval("angular.module('portainer.docker').factory('SystemEndpoint', ['$resource', 'API_ENDPOINT_ENDPOINTS', function SystemEndpointFactory($resource, API_ENDPOINT_ENDPOINTS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/:action/:subAction', {\n    name: '@name'\n  }, {\n    ping: {\n      method: 'GET',\n      params: {\n        action: '_ping',\n        endpointId: '@endpointId'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///86666\n");

}),

3446:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Task', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function TaskFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/tasks/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    query: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        filters: '@filters'\n      }\n    },\n    logs: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'logs'\n      },\n      ignoreLoadingBar: true,\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.logsHandler\n    }\n  });\n}]);//# sourceURL=webpack-internal:///3446\n");

}),

28192:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _response_handlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response/handlers */ 12944);\n\nangular.module('portainer.docker').factory('Volume', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'VolumesInterceptor', function VolumeFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, VolumesInterceptor) {\n  'use strict';\n\n  function addVolumeNameToHeader(config) {\n    return config.data.Name || '';\n  }\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/volumes/:id/:action', {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    query: {\n      method: 'GET',\n      interceptor: VolumesInterceptor\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    create: {\n      method: 'POST',\n      params: {\n        action: 'create'\n      },\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      ignoreLoadingBar: true,\n      headers: {\n        'X-Portainer-VolumeName': addVolumeNameToHeader\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      transformResponse: _response_handlers__WEBPACK_IMPORTED_MODULE_0__.genericHandler,\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///28192\n");

}),

90544:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_image__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/image */ 84647);\n\nangular.module('portainer.docker').factory('BuildService', ['$q', 'Build', 'FileUploadService', function BuildServiceFactory($q, Build, FileUploadService) {\n  'use strict';\n\n  var service = {};\n\n  service.buildImageFromUpload = function (names, file, path) {\n    var deferred = $q.defer();\n    FileUploadService.buildImage(names, file, path).then(function success(response) {\n      var model = new _models_image__WEBPACK_IMPORTED_MODULE_0__.ImageBuildModel(response.data);\n      deferred.resolve(model);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.buildImageFromURL = function (names, url, path) {\n    var params = {\n      t: names,\n      remote: url,\n      dockerfile: path\n    };\n    var deferred = $q.defer();\n    Build.buildImage(params, {}).$promise.then(function success(data) {\n      var model = new _models_image__WEBPACK_IMPORTED_MODULE_0__.ImageBuildModel(data);\n      deferred.resolve(model);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.buildImageFromDockerfileContent = function (names, content) {\n    var params = {\n      t: names\n    };\n    var payload = {\n      content: content\n    };\n    var deferred = $q.defer();\n    Build.buildImageOverride(params, payload).$promise.then(function success(data) {\n      var model = new _models_image__WEBPACK_IMPORTED_MODULE_0__.ImageBuildModel(data);\n      deferred.resolve(model);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.buildImageFromDockerfileContentAndFiles = function (names, content, files) {\n    var dockerfile = new Blob([content], {\n      type: 'text/plain'\n    });\n    var uploadFiles = [dockerfile].concat(files);\n    var deferred = $q.defer();\n    FileUploadService.buildImageFromFiles(names, uploadFiles).then(function success(response) {\n      var model = new _models_image__WEBPACK_IMPORTED_MODULE_0__.ImageBuildModel(response.data);\n      deferred.resolve(model);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///90544\n");

}),

81287:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/config */ 66807);\n\nangular.module('portainer.docker').factory('ConfigService', ['$q', 'Config', function ConfigServiceFactory($q, Config) {\n  'use strict';\n\n  var service = {};\n\n  service.config = function (configId) {\n    var deferred = $q.defer();\n    Config.get({\n      id: configId\n    }).$promise.then(function success(data) {\n      var config = new _models_config__WEBPACK_IMPORTED_MODULE_0__.ConfigViewModel(data);\n      deferred.resolve(config);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve config details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.configs = function () {\n    var deferred = $q.defer();\n    Config.query({}).$promise.then(function success(data) {\n      var configs = data.map(function (item) {\n        return new _models_config__WEBPACK_IMPORTED_MODULE_0__.ConfigViewModel(item);\n      });\n      deferred.resolve(configs);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve configs',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.remove = function (configId) {\n    var deferred = $q.defer();\n    Config.remove({\n      id: configId\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove config',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.create = function (config) {\n    return Config.create(config).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///81287\n");

}),

40725:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/docker/containers/containers.service */ 61838);\n/* harmony import */ var _models_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../models/container */ 12064);\n/* harmony import */ var _helpers_logHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/logHelper */ 17110);\nContainerServiceFactory.$inject = [\"$q\", \"Container\", \"$timeout\", \"EndpointProvider\"];\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.docker').factory('ContainerService', ContainerServiceFactory);\n/* @ngInject */\n\nfunction ContainerServiceFactory($q, Container, $timeout, EndpointProvider) {\n  const service = {\n    killContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.killContainer),\n    pauseContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.pauseContainer),\n    renameContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.renameContainer),\n    restartContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.restartContainer),\n    resumeContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.resumeContainer),\n    startContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.startContainer),\n    stopContainer: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.stopContainer),\n    remove: withEndpointId(_react_docker_containers_containers_service__WEBPACK_IMPORTED_MODULE_1__.removeContainer),\n    updateRestartPolicy,\n    updateLimits\n  };\n\n  service.container = function (id) {\n    var deferred = $q.defer();\n    Container.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var container = new _models_container__WEBPACK_IMPORTED_MODULE_2__.ContainerDetailsViewModel(data);\n      deferred.resolve(container);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve container information',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.containers = function (all, filters) {\n    var deferred = $q.defer();\n    Container.query({\n      all: all,\n      filters: filters\n    }).$promise.then(function success(data) {\n      var containers = data.map(function (item) {\n        return new _models_container__WEBPACK_IMPORTED_MODULE_2__.ContainerViewModel(item);\n      });\n      deferred.resolve(containers);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve containers',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.resizeTTY = function (id, width, height, timeout) {\n    var deferred = $q.defer();\n    $timeout(function () {\n      Container.resize({}, {\n        id: id,\n        height: height,\n        width: width\n      }).$promise.then(function success(data) {\n        if (data.message) {\n          deferred.reject({\n            msg: 'Unable to resize tty of container ' + id,\n            err: data.message\n          });\n        } else {\n          deferred.resolve(data);\n        }\n      }).catch(function error(err) {\n        deferred.reject({\n          msg: 'Unable to resize tty of container ' + id,\n          err: err\n        });\n      });\n    }, timeout);\n    return deferred.promise;\n  };\n\n  function updateRestartPolicy(id, restartPolicy, maximumRetryCounts) {\n    return Container.update({\n      id: id\n    }, {\n      RestartPolicy: {\n        Name: restartPolicy,\n        MaximumRetryCount: maximumRetryCounts\n      }\n    }).$promise;\n  }\n\n  function updateLimits(id, config) {\n    return Container.update({\n      id: id\n    }, {\n      // MemorySwap: must be set\n      // -1: non limits, 0: treated as unset(cause update error).\n      MemoryReservation: config.HostConfig.MemoryReservation,\n      Memory: config.HostConfig.Memory,\n      MemorySwap: -1,\n      NanoCpus: config.HostConfig.NanoCpus\n    }).$promise;\n  }\n\n  service.createContainer = function (configuration) {\n    var deferred = $q.defer();\n    Container.create(configuration).$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create container',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createAndStartContainer = function (configuration) {\n    var deferred = $q.defer();\n    var container;\n    service.createContainer(configuration).then(function success(data) {\n      container = data;\n      return service.startContainer(container.Id);\n    }).then(function success() {\n      deferred.resolve(container);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.createExec = function (execConfig) {\n    var deferred = $q.defer();\n    Container.exec({}, execConfig).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message,\n          err: data.message\n        });\n      } else {\n        deferred.resolve(data);\n      }\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.logs = function (id, stdout, stderr, timestamps, since, tail, stripHeaders) {\n    var deferred = $q.defer();\n    var parameters = {\n      id: id,\n      stdout: stdout || 0,\n      stderr: stderr || 0,\n      timestamps: timestamps || 0,\n      since: since || 0,\n      tail: tail || 'all'\n    };\n    Container.logs(parameters).$promise.then(function success(data) {\n      var logs = (0,_helpers_logHelper__WEBPACK_IMPORTED_MODULE_3__.formatLogs)(data.logs, {\n        stripHeaders,\n        withTimestamps: !!timestamps\n      });\n      deferred.resolve(logs);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.containerStats = function (id) {\n    var deferred = $q.defer();\n    Container.stats({\n      id: id\n    }).$promise.then(function success(data) {\n      var containerStats = new _models_container__WEBPACK_IMPORTED_MODULE_2__.ContainerStatsViewModel(data);\n      deferred.resolve(containerStats);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  service.containerTop = function (id) {\n    return Container.top({\n      id: id\n    }).$promise;\n  };\n\n  service.inspect = function (id) {\n    return Container.inspect({\n      id: id\n    }).$promise;\n  };\n\n  service.prune = function (filters) {\n    return Container.prune({\n      filters: filters\n    }).$promise;\n  };\n\n  return service;\n\n  function withEndpointId(func) {\n    return function (...args) {\n      const endpointId = EndpointProvider.endpointID();\n      return func(endpointId, ...args);\n    };\n  }\n}//# sourceURL=webpack-internal:///40725\n");

}),

9401:

(function() {

eval("angular.module('portainer.docker').factory('ExecService', ['$q', '$timeout', 'Exec', function ExecServiceFactory($q, $timeout, Exec) {\n  'use strict';\n\n  var service = {};\n\n  service.resizeTTY = function (execId, width, height, timeout) {\n    var deferred = $q.defer();\n    $timeout(function () {\n      Exec.resize({}, {\n        id: execId,\n        height: height,\n        width: width\n      }).$promise.then(function success(data) {\n        if (data.message) {\n          deferred.reject({\n            msg: 'Unable to resize tty of exec',\n            err: data.message\n          });\n        } else {\n          deferred.resolve(data);\n        }\n      }).catch(function error(err) {\n        deferred.reject({\n          msg: 'Unable to resize tty of exec',\n          err: err\n        });\n      });\n    }, timeout);\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///9401\n");

}),

45203:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/uniqWith */ 75345);\n/* harmony import */ var lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _models_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../models/image */ 84647);\n/* harmony import */ var _models_imageDetails__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../models/imageDetails */ 56946);\n/* harmony import */ var _models_imageLayer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../models/imageLayer */ 75208);\n\n\n\n\n\n\n\n\nangular.module('portainer.docker').factory('ImageService', ['$q', 'Image', 'ImageHelper', 'RegistryService', 'HttpRequestHelper', 'ContainerService', 'FileUploadService', function ImageServiceFactory($q, Image, ImageHelper, RegistryService, HttpRequestHelper, ContainerService, FileUploadService) {\n  'use strict';\n\n  var service = {};\n\n  service.image = function (imageId) {\n    var deferred = $q.defer();\n    Image.get({\n      id: imageId\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message\n        });\n      } else {\n        var image = new _models_imageDetails__WEBPACK_IMPORTED_MODULE_6__.ImageDetailsViewModel(data);\n        deferred.resolve(image);\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve image details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.images = function (withUsage) {\n    var deferred = $q.defer();\n    $q.all({\n      containers: withUsage ? ContainerService.containers(1) : [],\n      images: Image.query({}).$promise\n    }).then(function success(data) {\n      var containers = data.containers;\n      var images = data.images.map(function (item) {\n        item.ContainerCount = 0;\n\n        for (var i = 0; i < containers.length; i++) {\n          var container = containers[i];\n\n          if (container.ImageID === item.Id) {\n            item.ContainerCount++;\n          }\n        }\n\n        return new _models_image__WEBPACK_IMPORTED_MODULE_5__.ImageViewModel(item);\n      });\n      deferred.resolve(images);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve images',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.history = function (imageId) {\n    var deferred = $q.defer();\n    Image.history({\n      id: imageId\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message\n        });\n      } else {\n        var layers = [];\n        var order = data.length;\n        angular.forEach(data, function (imageLayer) {\n          layers.push(new _models_imageLayer__WEBPACK_IMPORTED_MODULE_7__.ImageLayerViewModel(order, imageLayer));\n          order--;\n        });\n        deferred.resolve(layers);\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve image details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.pushImage = pushImage;\n  /**\n   *\n   * @param {PorImageRegistryModel} registryModel\n   */\n\n  function pushImage(registryModel) {\n    var deferred = $q.defer();\n    var authenticationDetails = registryModel.Registry.Authentication ? RegistryService.encodedCredentials(registryModel.Registry) : '';\n    HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n    const imageConfiguration = ImageHelper.createImageConfigForContainer(registryModel);\n    Image.push({\n      imageName: imageConfiguration.fromImage\n    }).$promise.then(function success(data) {\n      if (data[data.length - 1].error) {\n        deferred.reject({\n          msg: data[data.length - 1].error\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to push image tag',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n  /**\n   * PULL IMAGE\n   */\n\n\n  function pullImageAndIgnoreErrors(imageConfiguration) {\n    var deferred = $q.defer();\n    Image.create({}, imageConfiguration).$promise.catch(() => {// left empty to ignore errors\n    }).finally(function final() {\n      deferred.resolve();\n    });\n    return deferred.promise;\n  }\n\n  function pullImageAndAcknowledgeErrors(imageConfiguration) {\n    var deferred = $q.defer();\n    Image.create({}, imageConfiguration).$promise.then(function success(data) {\n      var err = data.length > 0 && data[data.length - 1].message;\n\n      if (err) {\n        var detail = data[data.length - 1];\n        deferred.reject({\n          msg: detail.message\n        });\n      } else {\n        deferred.resolve(data);\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to pull image',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  service.pullImage = pullImage;\n  /**\n   *\n   * @param {PorImageRegistryModel} registry\n   * @param {bool} ignoreErrors\n   */\n\n  function pullImage(registry, ignoreErrors) {\n    var authenticationDetails = registry.Registry.Authentication ? RegistryService.encodedCredentials(registry.Registry) : '';\n    HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n    var imageConfiguration = ImageHelper.createImageConfigForContainer(registry);\n\n    if (ignoreErrors) {\n      return pullImageAndIgnoreErrors(imageConfiguration);\n    }\n\n    return pullImageAndAcknowledgeErrors(imageConfiguration);\n  }\n  /**\n   * ! PULL IMAGE\n   */\n\n\n  service.tagImage = function (id, image) {\n    return Image.tag({\n      id: id,\n      repo: image\n    }).$promise;\n  };\n\n  service.downloadImages = function (images) {\n    var names = ImageHelper.getImagesNamesForDownload(images);\n    return Image.download(names).$promise;\n  };\n\n  service.uploadImage = function (file) {\n    return FileUploadService.loadImages(file);\n  };\n\n  service.deleteImage = function (id, forceRemoval) {\n    var deferred = $q.defer();\n    Image.remove({\n      id: id,\n      force: forceRemoval\n    }).$promise.then(function success(data) {\n      if (data[0].message) {\n        deferred.reject({\n          msg: data[0].message\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove image',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.getUniqueTagListFromImages = function (availableImages) {\n    return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default()(availableImages, function (image) {\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_2___default()(image.RepoTags, function (item) {\n        return item.indexOf('<none>') !== -1;\n      });\n\n      return image.RepoTags ? lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1___default()(image.RepoTags, (lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default())) : [];\n    }));\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///45203\n");

}),

23116:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_network__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/network */ 70983);\n\nangular.module('portainer.docker').factory('NetworkService', ['$q', 'Network', function NetworkServiceFactory($q, Network) {\n  'use strict';\n\n  var service = {};\n\n  service.create = function (networkConfiguration) {\n    var deferred = $q.defer();\n    Network.create(networkConfiguration).$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create network',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.network = function (id) {\n    var deferred = $q.defer();\n    Network.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var network = new _models_network__WEBPACK_IMPORTED_MODULE_0__.NetworkViewModel(data);\n      deferred.resolve(network);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve network details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.networks = function (localNetworks, swarmNetworks, swarmAttachableNetworks, filters) {\n    var deferred = $q.defer();\n    Network.query({\n      filters: filters\n    }).$promise.then(function success(data) {\n      var networks = data;\n      var filteredNetworks = networks.filter(function (network) {\n        if (localNetworks && network.Scope === 'local') {\n          return network;\n        }\n\n        if (swarmNetworks && network.Scope === 'swarm') {\n          return network;\n        }\n\n        if (swarmAttachableNetworks && network.Scope === 'swarm' && network.Attachable === true) {\n          return network;\n        }\n      }).map(function (item) {\n        return new _models_network__WEBPACK_IMPORTED_MODULE_0__.NetworkViewModel(item);\n      });\n      deferred.resolve(filteredNetworks);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve networks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.remove = function (id) {\n    return Network.remove({\n      id: id\n    }).$promise;\n  };\n\n  service.disconnectContainer = function (networkId, containerId, force) {\n    return Network.disconnect({\n      id: networkId\n    }, {\n      Container: containerId,\n      Force: force\n    }).$promise;\n  };\n\n  service.connectContainer = function (networkId, containerId, aliases) {\n    var payload = {\n      Container: containerId\n    };\n\n    if (aliases) {\n      payload.EndpointConfig = {\n        Aliases: aliases\n      };\n    }\n\n    return Network.connect({\n      id: networkId\n    }, payload).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///23116\n");

}),

39272:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_node__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/node */ 11339);\n\nangular.module('portainer.docker').factory('NodeService', ['$q', 'Node', function NodeServiceFactory($q, Node) {\n  'use strict';\n\n  var service = {};\n  service.nodes = nodes;\n  service.node = node;\n  service.updateNode = updateNode;\n  service.getActiveManager = getActiveManager;\n\n  function node(id) {\n    var deferred = $q.defer();\n    Node.get({\n      id: id\n    }).$promise.then(function onNodeLoaded(rawNode) {\n      var node = new _models_node__WEBPACK_IMPORTED_MODULE_0__.NodeViewModel(rawNode);\n      return deferred.resolve(node);\n    }).catch(function onFailed(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve node',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  function nodes() {\n    var deferred = $q.defer();\n    Node.query({}).$promise.then(function success(data) {\n      var nodes = data.map(function (item) {\n        return new _models_node__WEBPACK_IMPORTED_MODULE_0__.NodeViewModel(item);\n      });\n      deferred.resolve(nodes);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve nodes',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  function updateNode(node) {\n    return Node.update({\n      id: node.Id,\n      version: node.Version\n    }, node).$promise;\n  }\n\n  function getActiveManager() {\n    var deferred = $q.defer();\n    service.nodes().then(function success(data) {\n      for (var i = 0; i < data.length; ++i) {\n        var node = data[i];\n\n        if (node.Role === 'manager' && node.Availability === 'active' && node.Status === 'ready' && node.Addr !== '0.0.0.0') {\n          deferred.resolve(node);\n          break;\n        }\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve nodes',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  return service;\n}]);//# sourceURL=webpack-internal:///39272\n");

}),

52589:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/plugin */ 34161);\n\n\nangular.module('portainer.docker').factory('PluginService', ['$q', 'Plugin', 'SystemService', function PluginServiceFactory($q, Plugin, SystemService) {\n  'use strict';\n\n  var service = {};\n\n  service.plugins = function () {\n    var deferred = $q.defer();\n    var plugins = [];\n    Plugin.query({}).$promise.then(function success(data) {\n      for (var i = 0; i < data.length; i++) {\n        var plugin = new _models_plugin__WEBPACK_IMPORTED_MODULE_1__.PluginViewModel(data[i]);\n        plugins.push(plugin);\n      }\n    }).finally(function final() {\n      deferred.resolve(plugins);\n    });\n    return deferred.promise;\n  };\n\n  function servicePlugins(systemOnly, pluginType, pluginVersion) {\n    var deferred = $q.defer();\n    $q.all({\n      system: SystemService.plugins(),\n      plugins: systemOnly ? [] : service.plugins()\n    }).then(function success(data) {\n      var aggregatedPlugins = [];\n      var systemPlugins = data.system;\n      var plugins = data.plugins;\n\n      if (systemPlugins[pluginType]) {\n        aggregatedPlugins = aggregatedPlugins.concat(systemPlugins[pluginType]);\n      }\n\n      for (var i = 0; i < plugins.length; i++) {\n        var plugin = plugins[i];\n\n        if (plugin.Enabled && lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(plugin.Config.Interface.Types, pluginVersion)) {\n          aggregatedPlugins.push(plugin.Name);\n        }\n      }\n\n      deferred.resolve(aggregatedPlugins);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: err.msg,\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  service.volumePlugins = function (systemOnly) {\n    return servicePlugins(systemOnly, 'Volume', 'docker.volumedriver/1.0');\n  };\n\n  service.networkPlugins = function (systemOnly) {\n    return servicePlugins(systemOnly, 'Network', 'docker.networkdriver/1.0');\n  };\n\n  service.loggingPlugins = function (systemOnly) {\n    return servicePlugins(systemOnly, 'Log', 'docker.logdriver/1.0');\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///52589\n");

}),

50225:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_secret__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/secret */ 89638);\n\nangular.module('portainer.docker').factory('SecretService', ['$q', 'Secret', function SecretServiceFactory($q, Secret) {\n  'use strict';\n\n  var service = {};\n\n  service.secret = function (secretId) {\n    var deferred = $q.defer();\n    Secret.get({\n      id: secretId\n    }).$promise.then(function success(data) {\n      var secret = new _models_secret__WEBPACK_IMPORTED_MODULE_0__.SecretViewModel(data);\n      deferred.resolve(secret);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve secret details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.secrets = function () {\n    var deferred = $q.defer();\n    Secret.query({}).$promise.then(function success(data) {\n      var secrets = data.map(function (item) {\n        return new _models_secret__WEBPACK_IMPORTED_MODULE_0__.SecretViewModel(item);\n      });\n      deferred.resolve(secrets);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve secrets',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.remove = function (secretId) {\n    var deferred = $q.defer();\n    Secret.remove({\n      id: secretId\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove secret',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.create = function (secretConfig) {\n    return Secret.create(secretConfig).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///50225\n");

}),

52550:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_logHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/logHelper */ 17110);\n/* harmony import */ var _models_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/service */ 7456);\n\n\nangular.module('portainer.docker').factory('ServiceService', ['$q', 'Service', function ServiceServiceFactory($q, Service) {\n  'use strict';\n\n  var service = {};\n\n  service.services = function (filters) {\n    var deferred = $q.defer();\n    Service.query({\n      filters: filters ? filters : {}\n    }).$promise.then(function success(data) {\n      var services = data.map(function (item) {\n        return new _models_service__WEBPACK_IMPORTED_MODULE_1__.ServiceViewModel(item);\n      });\n      deferred.resolve(services);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve services',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.service = function (id) {\n    var deferred = $q.defer();\n    Service.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var service = new _models_service__WEBPACK_IMPORTED_MODULE_1__.ServiceViewModel(data);\n      deferred.resolve(service);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve service details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.remove = function (service) {\n    var deferred = $q.defer();\n    Service.remove({\n      id: service.Id\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message,\n          err: data.message\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove service',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.update = function (serv, config, rollback) {\n    return service.service(serv.Id).then(data => {\n      const params = {\n        id: serv.Id,\n        version: data.Version\n      };\n\n      if (rollback) {\n        params.rollback = rollback;\n      }\n\n      return Service.update(params, config).$promise;\n    });\n  };\n\n  service.logs = function (id, stdout, stderr, timestamps, since, tail) {\n    var deferred = $q.defer();\n    var parameters = {\n      id: id,\n      stdout: stdout || 0,\n      stderr: stderr || 0,\n      timestamps: timestamps || 0,\n      since: since || 0,\n      tail: tail || 'all'\n    };\n    Service.logs(parameters).$promise.then(function success(data) {\n      var logs = (0,_helpers_logHelper__WEBPACK_IMPORTED_MODULE_0__.formatLogs)(data.logs, {\n        stripHeaders: true,\n        withTimestamps: !!timestamps\n      });\n      deferred.resolve(logs);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///52550\n");

}),

15268:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_swarm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/swarm */ 90906);\n\nangular.module('portainer.docker').factory('SwarmService', ['$q', 'Swarm', function SwarmServiceFactory($q, Swarm) {\n  'use strict';\n\n  var service = {};\n\n  service.swarm = function () {\n    var deferred = $q.defer();\n    Swarm.get().$promise.then(function success(data) {\n      var swarm = new _models_swarm__WEBPACK_IMPORTED_MODULE_0__.SwarmViewModel(data);\n      deferred.resolve(swarm);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve Swarm details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///15268\n");

}),

39983:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/event */ 44333);\n\nangular.module('portainer.docker').factory('SystemService', ['$q', 'System', 'SystemEndpoint', function SystemServiceFactory($q, System, SystemEndpoint) {\n  'use strict';\n\n  var service = {};\n\n  service.plugins = function () {\n    var deferred = $q.defer();\n    System.info({}).$promise.then(function success(data) {\n      var plugins = data.Plugins;\n      deferred.resolve(plugins);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve plugins information from system',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.info = function () {\n    return System.info({}).$promise;\n  };\n\n  service.ping = function (endpointId) {\n    return SystemEndpoint.ping({\n      endpointId: endpointId\n    }).$promise;\n  };\n\n  service.version = function () {\n    return System.version({}).$promise;\n  };\n\n  service.events = function (from, to) {\n    var deferred = $q.defer();\n    System.events({\n      since: from,\n      until: to\n    }).$promise.then(function success(data) {\n      var events = data.map(function (item) {\n        return new _models_event__WEBPACK_IMPORTED_MODULE_0__.EventViewModel(item);\n      });\n      deferred.resolve(events);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve engine events',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.dataUsage = function () {\n    return System.dataUsage().$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///39983\n");

}),

98585:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_logHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/logHelper */ 17110);\n/* harmony import */ var _models_task__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/task */ 59146);\n\n\nangular.module('portainer.docker').factory('TaskService', ['$q', 'Task', function TaskServiceFactory($q, Task) {\n  'use strict';\n\n  var service = {};\n\n  service.task = function (id) {\n    var deferred = $q.defer();\n    Task.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var task = new _models_task__WEBPACK_IMPORTED_MODULE_1__.TaskViewModel(data);\n      deferred.resolve(task);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve task details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.tasks = function (filters) {\n    var deferred = $q.defer();\n    Task.query({\n      filters: filters ? filters : {}\n    }).$promise.then(function success(data) {\n      var tasks = data.map(function (item) {\n        return new _models_task__WEBPACK_IMPORTED_MODULE_1__.TaskViewModel(item);\n      });\n      deferred.resolve(tasks);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve tasks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.logs = function (id, stdout, stderr, timestamps, since, tail) {\n    var deferred = $q.defer();\n    var parameters = {\n      id: id,\n      stdout: stdout || 0,\n      stderr: stderr || 0,\n      timestamps: timestamps || 0,\n      since: since || 0,\n      tail: tail || 'all'\n    };\n    Task.logs(parameters).$promise.then(function success(data) {\n      var logs = (0,_helpers_logHelper__WEBPACK_IMPORTED_MODULE_0__.formatLogs)(data.logs, {\n        stripHeaders: true,\n        withTimestamps: !!timestamps\n      });\n      deferred.resolve(logs);\n    }).catch(function error(err) {\n      deferred.reject(err);\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///98585\n");

}),

31746:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_volume__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/volume */ 80682);\n\nangular.module('portainer.docker').factory('VolumeService', ['$q', 'Volume', 'VolumeHelper', function VolumeServiceFactory($q, Volume, VolumeHelper) {\n  'use strict';\n\n  var service = {};\n\n  service.volumes = function (params) {\n    var deferred = $q.defer();\n    Volume.query(params).$promise.then(function success(data) {\n      var volumes = data.Volumes || [];\n      volumes = volumes.map(function (item) {\n        return new _models_volume__WEBPACK_IMPORTED_MODULE_0__.VolumeViewModel(item);\n      });\n      deferred.resolve(volumes);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve volumes',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.volume = function (id) {\n    var deferred = $q.defer();\n    Volume.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var volume = new _models_volume__WEBPACK_IMPORTED_MODULE_0__.VolumeViewModel(data);\n      deferred.resolve(volume);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve volume details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.getVolumes = function () {\n    return Volume.query({}).$promise;\n  };\n\n  service.remove = function (volume) {\n    var deferred = $q.defer();\n    Volume.remove({\n      id: volume.Id\n    }).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message,\n          err: data.message\n        });\n      } else {\n        deferred.resolve();\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove volume',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createVolumeConfiguration = function (name, driver, driverOptions) {\n    var volumeConfiguration = {\n      Name: name,\n      Driver: driver,\n      DriverOpts: VolumeHelper.createDriverOptions(driverOptions)\n    };\n    return volumeConfiguration;\n  };\n\n  service.createVolume = function (volumeConfiguration) {\n    var deferred = $q.defer();\n    Volume.create(volumeConfiguration).$promise.then(function success(data) {\n      if (data.message) {\n        deferred.reject({\n          msg: data.message\n        });\n      } else {\n        var volume = new _models_volume__WEBPACK_IMPORTED_MODULE_0__.VolumeViewModel(data);\n        deferred.resolve(volume);\n      }\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create volume',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createVolumes = function (volumeConfigurations) {\n    var createVolumeQueries = volumeConfigurations.map(function (volumeConfiguration) {\n      return service.createVolume(volumeConfiguration);\n    });\n    return $q.all(createVolumeQueries);\n  };\n\n  service.createXAutoGeneratedLocalVolumes = function (x) {\n    var createVolumeQueries = [];\n\n    for (var i = 0; i < x; i++) {\n      createVolumeQueries.push(service.createVolume({\n        Driver: 'local'\n      }));\n    }\n\n    return $q.all(createVolumeQueries);\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///31746\n");

}),

42177:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass ConfigsController {\n  /* @ngInject */\n  constructor($state, ConfigService, Notifications, $async) {\n    this.$state = $state;\n    this.ConfigService = ConfigService;\n    this.Notifications = Notifications;\n    this.$async = $async;\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n    this.getConfigs = this.getConfigs.bind(this);\n    this.getConfigsAsync = this.getConfigsAsync.bind(this);\n  }\n\n  getConfigs() {\n    return this.$async(this.getConfigsAsync);\n  }\n\n  async getConfigsAsync() {\n    try {\n      this.configs = await this.ConfigService.configs();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve configs');\n    }\n  }\n\n  async $onInit() {\n    this.configs = [];\n    this.getConfigs();\n  }\n\n  removeAction(selectedItems) {\n    return this.$async(this.removeActionAsync, selectedItems);\n  }\n\n  async removeActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const config of selectedItems) {\n      try {\n        await this.ConfigService.remove(config.Id);\n        this.Notifications.success('Config successfully removed', config.Name);\n        const index = this.configs.indexOf(config);\n        this.configs.splice(index, 1);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to remove config');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload();\n        }\n      }\n    }\n  }\n\n}\n\nConfigsController.$inject = [\"$state\", \"ConfigService\", \"Notifications\", \"$async\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (ConfigsController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.docker').controller('ConfigsController', ConfigsController);//# sourceURL=webpack-internal:///42177\n");

}),

96068:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/keys */ 68260);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_keys__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n\n\n\n\nclass CreateConfigController {\n  /* @ngInject */\n  constructor($async, $state, $transition$, $window, ModalService, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) {\n    this.$state = $state;\n    this.$transition$ = $transition$;\n    this.$window = $window;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.ConfigService = ConfigService;\n    this.Authentication = Authentication;\n    this.FormValidator = FormValidator;\n    this.ResourceControlService = ResourceControlService;\n    this.$async = $async;\n    this.formValues = {\n      Name: '',\n      Labels: [],\n      AccessControlData: new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__.AccessControlFormData(),\n      ConfigContent: ''\n    };\n    this.state = {\n      formValidationError: '',\n      isEditorDirty: false\n    };\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n  }\n\n  async $onInit() {\n    this.$window.onbeforeunload = () => {\n      if (this.formValues.displayCodeEditor && this.formValues.ConfigContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n\n    if (!this.$transition$.params().id) {\n      this.formValues.displayCodeEditor = true;\n      return;\n    }\n\n    try {\n      let data = await this.ConfigService.config(this.$transition$.params().id);\n      this.formValues.Name = data.Name + '_copy';\n      this.formValues.Data = data.Data;\n\n      let labels = lodash_es_keys__WEBPACK_IMPORTED_MODULE_0___default()(data.Labels);\n\n      for (let i = 0; i < labels.length; i++) {\n        let labelName = labels[i];\n        let labelValue = data.Labels[labelName];\n        this.formValues.Labels.push({\n          name: labelName,\n          value: labelValue\n        });\n      }\n\n      this.formValues.displayCodeEditor = true;\n    } catch (err) {\n      this.formValues.displayCodeEditor = true;\n      this.Notifications.error('失败', err, 'Unable to clone config');\n    }\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n  async uiCanExit() {\n    if (this.formValues.displayCodeEditor && this.formValues.ConfigContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  addLabel() {\n    this.formValues.Labels.push({\n      name: '',\n      value: ''\n    });\n  }\n\n  removeLabel(index) {\n    this.formValues.Labels.splice(index, 1);\n  }\n\n  prepareLabelsConfig(config) {\n    let labels = {};\n    this.formValues.Labels.forEach(function (label) {\n      if (label.name && label.value) {\n        labels[label.name] = label.value;\n      }\n    });\n    config.Labels = labels;\n  }\n\n  prepareConfigData(config) {\n    let configData = this.formValues.ConfigContent;\n    config.Data = btoa(unescape(encodeURIComponent(configData)));\n  }\n\n  prepareConfiguration() {\n    let config = {};\n    config.Name = this.formValues.Name;\n    this.prepareConfigData(config);\n    this.prepareLabelsConfig(config);\n    return config;\n  }\n\n  validateForm(accessControlData, isAdmin) {\n    this.state.formValidationError = '';\n    let error = '';\n    error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  create() {\n    return this.$async(this.createAsync);\n  }\n\n  async createAsync() {\n    const accessControlData = this.formValues.AccessControlData;\n    const userDetails = this.Authentication.getUserDetails();\n    const isAdmin = this.Authentication.isAdmin();\n\n    if (this.formValues.ConfigContent === '') {\n      this.state.formValidationError = 'Config content must not be empty';\n      return;\n    }\n\n    if (!this.validateForm(accessControlData, isAdmin)) {\n      return;\n    }\n\n    const config = this.prepareConfiguration();\n\n    try {\n      const data = await this.ConfigService.create(config);\n      const resourceControl = data.Portainer.ResourceControl;\n      const userId = userDetails.ID;\n      await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n      this.Notifications.success('Success', 'Configuration successfully created');\n      this.state.isEditorDirty = false;\n      this.$state.go('docker.configs', {}, {\n        reload: true\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create config');\n    }\n  }\n\n  editorUpdate(value) {\n    this.formValues.ConfigContent = value;\n    this.state.isEditorDirty = true;\n  }\n\n}\n\nCreateConfigController.$inject = [\"$async\", \"$state\", \"$transition$\", \"$window\", \"ModalService\", \"Notifications\", \"ConfigService\", \"Authentication\", \"FormValidator\", \"ResourceControlService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CreateConfigController);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.docker').controller('CreateConfigController', CreateConfigController);//# sourceURL=webpack-internal:///96068\n");

}),

63301:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\nangular.module('portainer.docker').controller('ConfigController', ['$scope', '$transition$', '$state', 'ConfigService', 'Notifications', function ($scope, $transition$, $state, ConfigService, Notifications) {\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlType.Config;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.removeConfig = function removeConfig(configId) {\n    ConfigService.remove(configId).then(function success() {\n      Notifications.success('Success', 'Configuration successfully removed');\n      $state.go('docker.configs', {});\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to remove config');\n    });\n  };\n\n  function initView() {\n    ConfigService.config($transition$.params().id).then(function success(data) {\n      $scope.config = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve config details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///63301\n");

}),

85196:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xterm */ 96049);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n\n\nangular.module('portainer.docker').controller('ContainerConsoleController', ['$scope', '$state', '$transition$', 'ContainerService', 'ImageService', 'Notifications', 'ContainerHelper', 'ExecService', 'HttpRequestHelper', 'LocalStorage', 'CONSOLE_COMMANDS_LABEL_PREFIX', 'SidebarService', function ($scope, $state, $transition$, ContainerService, ImageService, Notifications, ContainerHelper, ExecService, HttpRequestHelper, LocalStorage, CONSOLE_COMMANDS_LABEL_PREFIX, SidebarService) {\n  var socket, term;\n  let states = Object.freeze({\n    disconnected: 0,\n    connecting: 1,\n    connected: 2\n  });\n  $scope.loaded = false;\n  $scope.states = states;\n  $scope.state = states.disconnected;\n  $scope.formValues = {};\n  $scope.containerCommands = []; // Ensure the socket is closed before leaving the view\n\n  $scope.$on('$stateChangeStart', function () {\n    $scope.disconnect();\n  });\n\n  $scope.connectAttach = function () {\n    if ($scope.state > states.disconnected) {\n      return;\n    }\n\n    $scope.state = states.connecting;\n    let attachId = $transition$.params().id;\n    ContainerService.container(attachId).then(details => {\n      if (!details.State.Running) {\n        Notifications.error('失败', details, '容器 ' + attachId + ' 没有运行!');\n        $scope.disconnect();\n        return;\n      }\n\n      const params = {\n        token: LocalStorage.getJWT(),\n        endpointId: $state.params.endpointId,\n        id: attachId\n      };\n      const base = window.location.origin.startsWith('http') ? `${window.location.origin}${(0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_1__.baseHref)()}` : (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_1__.baseHref)();\n      var url = base + 'api/websocket/attach?' + Object.keys(params).map(k => k + '=' + params[k]).join('&');\n      initTerm(url, ContainerService.resizeTTY.bind(this, attachId));\n    }).catch(function error(err) {\n      Notifications.error('Error', err, '无法检索到容器的详细信息');\n      $scope.disconnect();\n    });\n  };\n\n  $scope.connectExec = function () {\n    if ($scope.state > states.disconnected) {\n      return;\n    }\n\n    $scope.state = states.connecting;\n    var command = $scope.formValues.isCustomCommand ? $scope.formValues.customCommand : $scope.formValues.command;\n    var execConfig = {\n      id: $transition$.params().id,\n      AttachStdin: true,\n      AttachStdout: true,\n      AttachStderr: true,\n      Tty: true,\n      User: $scope.formValues.user,\n      Cmd: ContainerHelper.commandStringToArray(command)\n    };\n    ContainerService.createExec(execConfig).then(function success(data) {\n      const params = {\n        token: LocalStorage.getJWT(),\n        endpointId: $state.params.endpointId,\n        id: data.Id\n      };\n      const base = window.location.origin.startsWith('http') ? `${window.location.origin}${(0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_1__.baseHref)()}` : (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_1__.baseHref)();\n      var url = base + 'api/websocket/exec?' + Object.keys(params).map(k => k + '=' + params[k]).join('&');\n      initTerm(url, ExecService.resizeTTY.bind(this, params.id));\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法执行到容器中');\n      $scope.disconnect();\n    });\n  };\n\n  $scope.disconnect = function () {\n    if (socket) {\n      socket.close();\n    }\n\n    if ($scope.state > states.disconnected) {\n      $scope.state = states.disconnected;\n\n      if (term) {\n        term.write('\\n\\r(connection closed)');\n        term.dispose();\n      }\n    }\n  };\n\n  $scope.autoconnectAttachView = function () {\n    return $scope.initView().then(function success() {\n      if ($scope.container.State.Running) {\n        $scope.connectAttach();\n      }\n    });\n  };\n\n  function resize(restcall, add) {\n    add = add || 0;\n    term.fit();\n    var termWidth = term.cols;\n    var termHeight = 30;\n    term.resize(termWidth, termHeight);\n    restcall(termWidth + add, termHeight + add, 1);\n  }\n\n  function initTerm(url, resizeRestCall) {\n    let resizefun = resize.bind(this, resizeRestCall);\n\n    if ($transition$.params().nodeName) {\n      url += '&nodeName=' + $transition$.params().nodeName;\n    }\n\n    if (url.indexOf('https') > -1) {\n      url = url.replace('https://', 'wss://');\n    } else {\n      url = url.replace('http://', 'ws://');\n    }\n\n    socket = new WebSocket(url);\n\n    socket.onopen = function () {\n      $scope.state = states.connected;\n      term = new xterm__WEBPACK_IMPORTED_MODULE_0__.Terminal();\n      term.on('data', function (data) {\n        socket.send(data);\n      });\n      var terminal_container = document.getElementById('terminal-container');\n      term.open(terminal_container);\n      term.focus();\n      term.setOption('cursorBlink', true);\n\n      window.onresize = function () {\n        resizefun();\n        $scope.$apply();\n      };\n\n      $scope.$watch(SidebarService.isSidebarOpen, function () {\n        setTimeout(resizefun, 400);\n      });\n\n      socket.onmessage = function (e) {\n        term.write(e.data);\n      };\n\n      socket.onerror = function (err) {\n        $scope.disconnect();\n        $scope.$apply();\n        Notifications.error('失败', err, '连接错误');\n      };\n\n      socket.onclose = function () {\n        $scope.disconnect();\n        $scope.$apply();\n      };\n\n      resizefun(1);\n      $scope.$apply();\n    };\n  }\n\n  $scope.initView = function () {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n    return ContainerService.container($transition$.params().id).then(function success(data) {\n      var container = data;\n      $scope.container = container;\n      return ImageService.image(container.Image);\n    }).then(function success(data) {\n      var image = data;\n      var containerLabels = $scope.container.Config.Labels;\n      $scope.imageOS = image.Os;\n      $scope.formValues.command = image.Os === 'windows' ? 'powershell' : 'bash';\n      $scope.containerCommands = Object.keys(containerLabels).filter(function (label) {\n        return label.indexOf(CONSOLE_COMMANDS_LABEL_PREFIX) === 0;\n      }).map(function (label) {\n        return {\n          title: label.replace(CONSOLE_COMMANDS_LABEL_PREFIX, ''),\n          command: containerLabels[label]\n        };\n      });\n      $scope.loaded = true;\n    }).catch(function error(err) {\n      Notifications.error('Error', err, '无法检索到容器的详细信息');\n    });\n  };\n\n  $scope.handleIsCustomCommandChange = function (enabled) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.isCustomCommand = enabled;\n    });\n  };\n}]);//# sourceURL=webpack-internal:///85196\n");

}),

51079:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forOwn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forOwn */ 98484);\n/* harmony import */ var lodash_es_forOwn__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forOwn__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_has__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/has */ 39576);\n/* harmony import */ var lodash_es_has__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_has__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_pullAllBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/pullAllBy */ 75569);\n/* harmony import */ var lodash_es_pullAllBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_pullAllBy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/get */ 6632);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/portainer/helpers/env-vars */ 93994);\n/* harmony import */ var Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _models_containerCapabilities__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../models/containerCapabilities */ 66328);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _models_container__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../models/container */ 12064);\n/* harmony import */ var _createcontainer_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./createcontainer.css */ 73353);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nangular.module('portainer.docker').controller('CreateContainerController', ['$q', '$scope', '$async', '$state', '$timeout', '$transition$', '$filter', 'Container', 'ContainerHelper', 'Image', 'ImageHelper', 'Volume', 'NetworkService', 'ResourceControlService', 'Authentication', 'Notifications', 'ContainerService', 'ImageService', 'FormValidator', 'ModalService', 'RegistryService', 'SystemService', 'PluginService', 'HttpRequestHelper', 'endpoint', function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container, ContainerHelper, Image, ImageHelper, Volume, NetworkService, ResourceControlService, Authentication, Notifications, ContainerService, ImageService, FormValidator, ModalService, RegistryService, SystemService, PluginService, HttpRequestHelper, endpoint) {\n  $scope.create = create;\n  $scope.update = update;\n  $scope.endpoint = endpoint;\n  $scope.containerWebhookFeature = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_12__.FeatureId.CONTAINER_WEBHOOK;\n  $scope.formValues = {\n    alwaysPull: true,\n    GPU: {\n      enabled: false,\n      useSpecific: false,\n      selectedGPUs: ['all'],\n      capabilities: ['compute', 'utility']\n    },\n    Console: 'none',\n    Volumes: [],\n    NetworkContainer: null,\n    Labels: [],\n    ExtraHosts: [],\n    MacAddress: '',\n    IPv4: '',\n    IPv6: '',\n    DnsPrimary: '',\n    DnsSecondary: '',\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_14__.AccessControlFormData(),\n    CpuLimit: 0,\n    MemoryLimit: 0,\n    MemoryReservation: 0,\n    ShmSize: 64,\n    CmdMode: 'default',\n    EntrypointMode: 'default',\n    Env: [],\n    NodeName: null,\n    capabilities: [],\n    Sysctls: [],\n    LogDriverName: '',\n    LogDriverOpts: [],\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_10__.PorImageRegistryModel()\n  };\n  $scope.extraNetworks = {};\n  $scope.state = {\n    formValidationError: '',\n    actionInProgress: false,\n    mode: '',\n    pullImageValidity: true,\n    settingUnlimitedResources: false\n  };\n  $scope.onAlwaysPullChange = onAlwaysPullChange;\n  $scope.handlePublishAllPortsChange = handlePublishAllPortsChange;\n  $scope.handleAutoRemoveChange = handleAutoRemoveChange;\n  $scope.handlePrivilegedChange = handlePrivilegedChange;\n  $scope.handleInitChange = handleInitChange;\n\n  function onAlwaysPullChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.alwaysPull = checked;\n    });\n  }\n\n  function handlePublishAllPortsChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.config.HostConfig.PublishAllPorts = checked;\n    });\n  }\n\n  function handleAutoRemoveChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.config.HostConfig.AutoRemove = checked;\n    });\n  }\n\n  function handlePrivilegedChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.config.HostConfig.Privileged = checked;\n    });\n  }\n\n  function handleInitChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.config.HostConfig.Init = checked;\n    });\n  }\n\n  $scope.handleEnvVarChange = handleEnvVarChange;\n\n  function handleEnvVarChange(value) {\n    $scope.formValues.Env = value;\n  }\n\n  $scope.refreshSlider = function () {\n    $timeout(function () {\n      $scope.$broadcast('rzSliderForceRender');\n    });\n  };\n\n  $scope.onImageNameChange = function () {\n    $scope.formValues.CmdMode = 'default';\n    $scope.formValues.EntrypointMode = 'default';\n  };\n\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    if (!validity) {\n      $scope.formValues.alwaysPull = false;\n    }\n\n    $scope.state.pullImageValidity = validity;\n  }\n\n  $scope.config = {\n    Image: '',\n    Env: [],\n    Cmd: '',\n    MacAddress: '',\n    ExposedPorts: {},\n    Entrypoint: '',\n    HostConfig: {\n      RestartPolicy: {\n        Name: 'no'\n      },\n      PortBindings: [],\n      PublishAllPorts: false,\n      Binds: [],\n      AutoRemove: false,\n      NetworkMode: 'bridge',\n      Privileged: false,\n      Init: false,\n      Runtime: null,\n      ExtraHosts: [],\n      Devices: [],\n      DeviceRequests: [],\n      CapAdd: [],\n      CapDrop: [],\n      Sysctls: {}\n    },\n    NetworkingConfig: {\n      EndpointsConfig: {}\n    },\n    Labels: {}\n  };\n\n  $scope.addVolume = function () {\n    $scope.formValues.Volumes.push({\n      name: '',\n      containerPath: '',\n      readOnly: false,\n      type: 'volume'\n    });\n  };\n\n  $scope.removeVolume = function (index) {\n    $scope.formValues.Volumes.splice(index, 1);\n  };\n\n  $scope.addPortBinding = function () {\n    $scope.config.HostConfig.PortBindings.push({\n      hostPort: '',\n      containerPort: '',\n      protocol: 'tcp'\n    });\n  };\n\n  $scope.removePortBinding = function (index) {\n    $scope.config.HostConfig.PortBindings.splice(index, 1);\n  };\n\n  $scope.addLabel = function () {\n    $scope.formValues.Labels.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLabel = function (index) {\n    $scope.formValues.Labels.splice(index, 1);\n  };\n\n  $scope.addExtraHost = function () {\n    $scope.formValues.ExtraHosts.push({\n      value: ''\n    });\n  };\n\n  $scope.removeExtraHost = function (index) {\n    $scope.formValues.ExtraHosts.splice(index, 1);\n  };\n\n  $scope.addDevice = function () {\n    $scope.config.HostConfig.Devices.push({\n      pathOnHost: '',\n      pathInContainer: ''\n    });\n  };\n\n  $scope.removeDevice = function (index) {\n    $scope.config.HostConfig.Devices.splice(index, 1);\n  };\n\n  $scope.onGpuChange = function (values) {\n    return $async(async () => {\n      $scope.formValues.GPU = values;\n    });\n  };\n\n  $scope.addSysctl = function () {\n    $scope.formValues.Sysctls.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeSysctl = function (index) {\n    $scope.formValues.Sysctls.splice(index, 1);\n  };\n\n  $scope.addLogDriverOpt = function () {\n    $scope.formValues.LogDriverOpts.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLogDriverOpt = function (index) {\n    $scope.formValues.LogDriverOpts.splice(index, 1);\n  };\n\n  $scope.fromContainerMultipleNetworks = false;\n\n  function prepareImageConfig(config) {\n    const imageConfig = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel);\n    config.Image = imageConfig.fromImage;\n  }\n\n  function preparePortBindings(config) {\n    const bindings = ContainerHelper.preparePortBindings(config.HostConfig.PortBindings);\n    config.ExposedPorts = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_9___default()(bindings, (_, key) => config.ExposedPorts[key] = {});\n\n    config.HostConfig.PortBindings = bindings;\n  }\n\n  function prepareConsole(config) {\n    var value = $scope.formValues.Console;\n    var openStdin = true;\n    var tty = true;\n\n    if (value === 'tty') {\n      openStdin = false;\n    } else if (value === 'interactive') {\n      tty = false;\n    } else if (value === 'none') {\n      openStdin = false;\n      tty = false;\n    }\n\n    config.OpenStdin = openStdin;\n    config.Tty = tty;\n  }\n\n  function prepareCmd(config) {\n    if (lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8___default()(config.Cmd) || $scope.formValues.CmdMode == 'default') {\n      delete config.Cmd;\n    } else {\n      config.Cmd = ContainerHelper.commandStringToArray(config.Cmd);\n    }\n  }\n\n  function prepareEntrypoint(config) {\n    if ($scope.formValues.EntrypointMode == 'default' || lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8___default()(config.Cmd) && lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_8___default()(config.Entrypoint)) {\n      config.Entrypoint = null;\n    }\n  }\n\n  function prepareEnvironmentVariables(config) {\n    config.Env = _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_11__.convertToArrayOfStrings($scope.formValues.Env);\n  }\n\n  function prepareVolumes(config) {\n    var binds = [];\n    var volumes = {};\n    $scope.formValues.Volumes.forEach(function (volume) {\n      var name = volume.name;\n      var containerPath = volume.containerPath;\n\n      if (name && containerPath) {\n        var bind = name + ':' + containerPath;\n        volumes[containerPath] = {};\n\n        if (volume.readOnly) {\n          bind += ':ro';\n        }\n\n        binds.push(bind);\n      }\n    });\n    config.HostConfig.Binds = binds;\n    config.Volumes = volumes;\n  }\n\n  function prepareNetworkConfig(config) {\n    var mode = config.HostConfig.NetworkMode;\n    var container = $scope.formValues.NetworkContainer;\n    var containerName = container;\n\n    if (container && typeof container === 'object') {\n      containerName = $filter('trimcontainername')(container.Names[0]);\n    }\n\n    var networkMode = mode;\n\n    if (containerName) {\n      networkMode += ':' + containerName;\n      config.Hostname = '';\n    }\n\n    config.HostConfig.NetworkMode = networkMode;\n    config.MacAddress = $scope.formValues.MacAddress;\n    config.NetworkingConfig.EndpointsConfig[networkMode] = {\n      IPAMConfig: {\n        IPv4Address: $scope.formValues.IPv4,\n        IPv6Address: $scope.formValues.IPv6\n      }\n    };\n\n    if (networkMode && lodash_es_get__WEBPACK_IMPORTED_MODULE_7___default()($scope.config.NetworkingConfig.EndpointsConfig[networkMode], 'Aliases')) {\n      var aliases = $scope.config.NetworkingConfig.EndpointsConfig[networkMode].Aliases;\n      config.NetworkingConfig.EndpointsConfig[networkMode].Aliases = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(aliases, o => {\n        return !lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default()($scope.fromContainer.Id, o);\n      });\n    }\n\n    var dnsServers = [];\n\n    if ($scope.formValues.DnsPrimary) {\n      dnsServers.push($scope.formValues.DnsPrimary);\n    }\n\n    if ($scope.formValues.DnsSecondary) {\n      dnsServers.push($scope.formValues.DnsSecondary);\n    }\n\n    config.HostConfig.Dns = dnsServers;\n    config.HostConfig.ExtraHosts = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()($scope.formValues.ExtraHosts, v => v.value), 'value');\n  }\n\n  function prepareLabels(config) {\n    var labels = {};\n    $scope.formValues.Labels.forEach(function (label) {\n      if (label.name) {\n        if (label.value) {\n          labels[label.name] = label.value;\n        } else {\n          labels[label.name] = '';\n        }\n      }\n    });\n    config.Labels = labels;\n  }\n\n  function prepareDevices(config) {\n    var path = [];\n    config.HostConfig.Devices.forEach(function (p) {\n      if (p.pathOnHost) {\n        if (p.pathInContainer === '') {\n          p.pathInContainer = p.pathOnHost;\n        }\n\n        path.push({\n          PathOnHost: p.pathOnHost,\n          PathInContainer: p.pathInContainer,\n          CgroupPermissions: 'rwm'\n        });\n      }\n    });\n    config.HostConfig.Devices = path;\n  }\n\n  function prepareSysctls(config) {\n    var sysctls = {};\n    $scope.formValues.Sysctls.forEach(function (sysctl) {\n      if (sysctl.name && sysctl.value) {\n        sysctls[sysctl.name] = sysctl.value;\n      }\n    });\n    config.HostConfig.Sysctls = sysctls;\n  }\n\n  function prepareResources(config) {\n    // Shared Memory Size - Round to 0.125\n    if ($scope.formValues.ShmSize >= 0) {\n      var shmSize = (Math.round($scope.formValues.ShmSize * 8) / 8).toFixed(3);\n      shmSize *= 1024 * 1024;\n      config.HostConfig.ShmSize = shmSize;\n    } // Memory Limit - Round to 0.125\n\n\n    if ($scope.formValues.MemoryLimit >= 0) {\n      var memoryLimit = (Math.round($scope.formValues.MemoryLimit * 8) / 8).toFixed(3);\n      memoryLimit *= 1024 * 1024;\n      config.HostConfig.Memory = memoryLimit;\n    } // Memory Resevation - Round to 0.125\n\n\n    if ($scope.formValues.MemoryReservation >= 0) {\n      var memoryReservation = (Math.round($scope.formValues.MemoryReservation * 8) / 8).toFixed(3);\n      memoryReservation *= 1024 * 1024;\n      config.HostConfig.MemoryReservation = memoryReservation;\n    } // CPU Limit\n\n\n    if ($scope.formValues.CpuLimit >= 0) {\n      config.HostConfig.NanoCpus = $scope.formValues.CpuLimit * 1000000000;\n    }\n  }\n\n  function prepareLogDriver(config) {\n    var logOpts = {};\n\n    if ($scope.formValues.LogDriverName) {\n      config.HostConfig.LogConfig = {\n        Type: $scope.formValues.LogDriverName\n      };\n\n      if ($scope.formValues.LogDriverName !== 'none') {\n        $scope.formValues.LogDriverOpts.forEach(function (opt) {\n          if (opt.name) {\n            logOpts[opt.name] = opt.value;\n          }\n        });\n\n        if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n          config.HostConfig.LogConfig.Config = logOpts;\n        }\n      }\n    }\n  }\n\n  function prepareCapabilities(config) {\n    var allowed = $scope.formValues.capabilities.filter(function (item) {\n      return item.allowed === true;\n    });\n    var notAllowed = $scope.formValues.capabilities.filter(function (item) {\n      return item.allowed === false;\n    });\n\n    var getCapName = function (item) {\n      return item.capability;\n    };\n\n    config.HostConfig.CapAdd = allowed.map(getCapName);\n    config.HostConfig.CapDrop = notAllowed.map(getCapName);\n  }\n\n  function prepareGPUOptions(config) {\n    const driver = 'nvidia';\n    const gpuOptions = $scope.formValues.GPU;\n\n    const existingDeviceRequest = lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()($scope.config.HostConfig.DeviceRequests, {\n      Driver: driver\n    });\n\n    if (existingDeviceRequest) {\n      lodash_es_pullAllBy__WEBPACK_IMPORTED_MODULE_2___default()(config.HostConfig.DeviceRequests, [existingDeviceRequest], 'Driver');\n    }\n\n    if (!gpuOptions.enabled) {\n      return;\n    }\n\n    const deviceRequest = {\n      Driver: driver,\n      Count: -1,\n      DeviceIDs: [],\n      // must be empty if Count != 0 https://github.com/moby/moby/blob/master/daemon/nvidia_linux.go#L50\n      Capabilities: [] // array of ORed arrays of ANDed capabilites = [ [c1 AND c2] OR [c1 AND c3] ] : https://github.com/moby/moby/blob/master/api/types/container/host_config.go#L272\n      // Options: { property1: \"string\", property2: \"string\" }, // seems to never be evaluated/used in docker API ?\n\n    };\n\n    if (gpuOptions.useSpecific) {\n      deviceRequest.DeviceIDs = gpuOptions.selectedGPUs;\n      deviceRequest.Count = 0;\n    }\n\n    deviceRequest.Capabilities = [gpuOptions.capabilities];\n    config.HostConfig.DeviceRequests.push(deviceRequest);\n  }\n\n  function prepareConfiguration() {\n    var config = angular.copy($scope.config);\n    prepareCmd(config);\n    prepareEntrypoint(config);\n    prepareNetworkConfig(config);\n    prepareImageConfig(config);\n    preparePortBindings(config);\n    prepareConsole(config);\n    prepareEnvironmentVariables(config);\n    prepareVolumes(config);\n    prepareLabels(config);\n    prepareDevices(config);\n    prepareResources(config);\n    prepareLogDriver(config);\n    prepareCapabilities(config);\n    prepareSysctls(config);\n    prepareGPUOptions(config);\n    return config;\n  }\n\n  function loadFromContainerCmd() {\n    if ($scope.config.Cmd) {\n      $scope.config.Cmd = ContainerHelper.commandArrayToString($scope.config.Cmd);\n      $scope.formValues.CmdMode = 'override';\n    }\n  }\n\n  function loadFromContainerEntrypoint() {\n    if (lodash_es_has__WEBPACK_IMPORTED_MODULE_1___default()($scope.config, 'Entrypoint')) {\n      if ($scope.config.Entrypoint == null) {\n        $scope.config.Entrypoint = '';\n      }\n\n      $scope.formValues.EntrypointMode = 'override';\n    }\n  }\n\n  function loadFromContainerPortBindings() {\n    const bindings = ContainerHelper.sortAndCombinePorts($scope.config.HostConfig.PortBindings);\n    $scope.config.HostConfig.PortBindings = bindings;\n  }\n\n  function loadFromContainerVolumes(d) {\n    for (var v in d.Mounts) {\n      if ({}.hasOwnProperty.call(d.Mounts, v)) {\n        var mount = d.Mounts[v];\n        var volume = {\n          type: mount.Type,\n          name: mount.Name || mount.Source,\n          containerPath: mount.Destination,\n          readOnly: mount.RW === false\n        };\n        $scope.formValues.Volumes.push(volume);\n      }\n    }\n  }\n\n  $scope.resetNetworkConfig = function () {\n    $scope.config.NetworkingConfig = {\n      EndpointsConfig: {}\n    };\n  };\n\n  function loadFromContainerNetworkConfig(d) {\n    $scope.config.NetworkingConfig = {\n      EndpointsConfig: {}\n    };\n    var networkMode = d.HostConfig.NetworkMode;\n\n    if (networkMode === 'default') {\n      $scope.config.HostConfig.NetworkMode = 'bridge';\n\n      if (!lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()($scope.availableNetworks, {\n        Name: 'bridge'\n      })) {\n        $scope.config.HostConfig.NetworkMode = 'nat';\n      }\n    }\n\n    if ($scope.config.HostConfig.NetworkMode.indexOf('container:') === 0) {\n      var netContainer = $scope.config.HostConfig.NetworkMode.split(/^container:/)[1];\n      $scope.config.HostConfig.NetworkMode = 'container';\n\n      for (var c in $scope.runningContainers) {\n        if ($scope.runningContainers[c].Id == netContainer) {\n          $scope.formValues.NetworkContainer = $scope.runningContainers[c];\n        }\n      }\n    }\n\n    $scope.fromContainerMultipleNetworks = Object.keys(d.NetworkSettings.Networks).length >= 2;\n\n    if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode]) {\n      if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig) {\n        if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv4Address) {\n          $scope.formValues.IPv4 = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv4Address;\n        }\n\n        if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv6Address) {\n          $scope.formValues.IPv6 = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv6Address;\n        }\n      }\n    }\n\n    $scope.config.NetworkingConfig.EndpointsConfig[$scope.config.HostConfig.NetworkMode] = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode];\n\n    if (Object.keys(d.NetworkSettings.Networks).length > 1) {\n      var firstNetwork = d.NetworkSettings.Networks[Object.keys(d.NetworkSettings.Networks)[0]];\n      $scope.config.NetworkingConfig.EndpointsConfig[$scope.config.HostConfig.NetworkMode] = firstNetwork;\n      $scope.extraNetworks = angular.copy(d.NetworkSettings.Networks);\n      delete $scope.extraNetworks[Object.keys(d.NetworkSettings.Networks)[0]];\n    }\n\n    $scope.formValues.MacAddress = d.Config.MacAddress;\n\n    if (d.HostConfig.Dns && d.HostConfig.Dns[0]) {\n      $scope.formValues.DnsPrimary = d.HostConfig.Dns[0];\n\n      if (d.HostConfig.Dns[1]) {\n        $scope.formValues.DnsSecondary = d.HostConfig.Dns[1];\n      }\n    } // ExtraHosts\n\n\n    if ($scope.config.HostConfig.ExtraHosts) {\n      var extraHosts = $scope.config.HostConfig.ExtraHosts;\n\n      for (var i = 0; i < extraHosts.length; i++) {\n        var host = extraHosts[i];\n        $scope.formValues.ExtraHosts.push({\n          value: host\n        });\n      }\n\n      $scope.config.HostConfig.ExtraHosts = [];\n    }\n  }\n\n  function loadFromContainerEnvironmentVariables() {\n    $scope.formValues.Env = _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_11__.parseArrayOfStrings($scope.config.Env);\n  }\n\n  function loadFromContainerLabels() {\n    for (var l in $scope.config.Labels) {\n      if ({}.hasOwnProperty.call($scope.config.Labels, l)) {\n        $scope.formValues.Labels.push({\n          name: l,\n          value: $scope.config.Labels[l]\n        });\n      }\n    }\n  }\n\n  function loadFromContainerConsole() {\n    if ($scope.config.OpenStdin && $scope.config.Tty) {\n      $scope.formValues.Console = 'both';\n    } else if (!$scope.config.OpenStdin && $scope.config.Tty) {\n      $scope.formValues.Console = 'tty';\n    } else if ($scope.config.OpenStdin && !$scope.config.Tty) {\n      $scope.formValues.Console = 'interactive';\n    } else if (!$scope.config.OpenStdin && !$scope.config.Tty) {\n      $scope.formValues.Console = 'none';\n    }\n  }\n\n  function loadFromContainerDevices() {\n    var path = [];\n\n    for (var dev in $scope.config.HostConfig.Devices) {\n      if ({}.hasOwnProperty.call($scope.config.HostConfig.Devices, dev)) {\n        var device = $scope.config.HostConfig.Devices[dev];\n        path.push({\n          pathOnHost: device.PathOnHost,\n          pathInContainer: device.PathInContainer\n        });\n      }\n    }\n\n    $scope.config.HostConfig.Devices = path;\n  }\n\n  function loadFromContainerDeviceRequests() {\n    const deviceRequest = lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()($scope.config.HostConfig.DeviceRequests, function (o) {\n      return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';\n    });\n\n    if (deviceRequest) {\n      $scope.formValues.GPU.enabled = true;\n      $scope.formValues.GPU.useSpecific = deviceRequest.Count !== -1;\n      $scope.formValues.GPU.selectedGPUs = deviceRequest.DeviceIDs || [];\n\n      if ($scope.formValues.GPU.useSpecific) {\n        $scope.formValues.GPU.selectedGPUs = deviceRequest.DeviceIDs;\n      } else {\n        $scope.formValues.GPU.selectedGPUs = ['all'];\n      } // we only support a single set of capabilities for now\n      // UI needs to be reworked in order to support OR combinations of AND capabilities\n\n\n      $scope.formValues.GPU.capabilities = deviceRequest.Capabilities[0];\n      $scope.formValues.GPU = { ...$scope.formValues.GPU\n      };\n    }\n  }\n\n  function loadFromContainerSysctls() {\n    for (var s in $scope.config.HostConfig.Sysctls) {\n      if ({}.hasOwnProperty.call($scope.config.HostConfig.Sysctls, s)) {\n        $scope.formValues.Sysctls.push({\n          name: s,\n          value: $scope.config.HostConfig.Sysctls[s]\n        });\n      }\n    }\n  }\n\n  function loadFromContainerImageConfig() {\n    RegistryService.retrievePorRegistryModelFromRepository($scope.config.Image, endpoint.Id).then(model => {\n      $scope.formValues.RegistryModel = model;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到注册表');\n    });\n  }\n\n  function loadFromContainerResources(d) {\n    if (d.HostConfig.NanoCpus) {\n      $scope.formValues.CpuLimit = d.HostConfig.NanoCpus / 1000000000;\n    }\n\n    if (d.HostConfig.Memory) {\n      $scope.formValues.MemoryLimit = d.HostConfig.Memory / 1024 / 1024;\n    }\n\n    if (d.HostConfig.MemoryReservation) {\n      $scope.formValues.MemoryReservation = d.HostConfig.MemoryReservation / 1024 / 1024;\n    }\n\n    if (d.HostConfig.ShmSize) {\n      $scope.formValues.ShmSize = d.HostConfig.ShmSize / 1024 / 1024;\n    }\n  }\n\n  function loadFromContainerCapabilities(d) {\n    if (d.HostConfig.CapAdd) {\n      d.HostConfig.CapAdd.forEach(function (cap) {\n        $scope.formValues.capabilities.push(new _models_containerCapabilities__WEBPACK_IMPORTED_MODULE_13__.ContainerCapability(cap, true));\n      });\n    }\n\n    if (d.HostConfig.CapDrop) {\n      d.HostConfig.CapDrop.forEach(function (cap) {\n        $scope.formValues.capabilities.push(new _models_containerCapabilities__WEBPACK_IMPORTED_MODULE_13__.ContainerCapability(cap, false));\n      });\n    }\n\n    function hasCapability(item) {\n      return item.capability === cap.capability;\n    }\n\n    var capabilities = new _models_containerCapabilities__WEBPACK_IMPORTED_MODULE_13__.ContainerCapabilities();\n\n    for (var i = 0; i < capabilities.length; i++) {\n      var cap = capabilities[i];\n\n      if (!lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()($scope.formValues.capabilities, hasCapability)) {\n        $scope.formValues.capabilities.push(cap);\n      }\n    }\n\n    $scope.formValues.capabilities.sort(function (a, b) {\n      return a.capability < b.capability ? -1 : 1;\n    });\n  }\n\n  function loadFromContainerSpec() {\n    // Get container\n    Container.get({\n      id: $transition$.params().from\n    }).$promise.then(function success(d) {\n      var fromContainer = new _models_container__WEBPACK_IMPORTED_MODULE_15__.ContainerDetailsViewModel(d);\n\n      if (fromContainer.ResourceControl && fromContainer.ResourceControl.Public) {\n        $scope.formValues.AccessControlData.AccessControlEnabled = false;\n      }\n\n      $scope.fromContainer = fromContainer;\n      $scope.state.mode = 'duplicate';\n      $scope.config = ContainerHelper.configFromContainer(fromContainer.Model);\n      loadFromContainerCmd(d);\n      loadFromContainerEntrypoint(d);\n      loadFromContainerLogging(d);\n      loadFromContainerPortBindings(d);\n      loadFromContainerVolumes(d);\n      loadFromContainerNetworkConfig(d);\n      loadFromContainerEnvironmentVariables(d);\n      loadFromContainerLabels(d);\n      loadFromContainerConsole(d);\n      loadFromContainerDevices(d);\n      loadFromContainerDeviceRequests(d);\n      loadFromContainerImageConfig(d);\n      loadFromContainerResources(d);\n      loadFromContainerCapabilities(d);\n      loadFromContainerSysctls(d);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索容器');\n    });\n  }\n\n  function loadFromContainerLogging(config) {\n    var logConfig = config.HostConfig.LogConfig;\n    $scope.formValues.LogDriverName = logConfig.Type;\n    $scope.formValues.LogDriverOpts = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(logConfig.Config, function (value, name) {\n      return {\n        name: name,\n        value: value\n      };\n    });\n  }\n\n  async function initView() {\n    var nodeName = $transition$.params().nodeName;\n    $scope.formValues.NodeName = nodeName;\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    $scope.isAdmin = Authentication.isAdmin();\n    $scope.showDeviceMapping = await shouldShowDevices();\n    $scope.showSysctls = await shouldShowSysctls();\n    $scope.areContainerCapabilitiesEnabled = await checkIfContainerCapabilitiesEnabled();\n    $scope.isAdminOrEndpointAdmin = Authentication.isAdmin();\n    Volume.query({}, function (d) {\n      $scope.availableVolumes = d.Volumes.sort((vol1, vol2) => {\n        return vol1.Name.localeCompare(vol2.Name);\n      });\n    }, function (e) {\n      Notifications.error('失败', e, '无法检索存储卷');\n    });\n    var provider = $scope.applicationState.endpoint.mode.provider;\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25).then(function success(networks) {\n      networks.push({\n        Name: 'container'\n      });\n      $scope.availableNetworks = networks.sort((a, b) => a.Name.localeCompare(b.Name));\n\n      if (lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()(networks, {\n        Name: 'nat'\n      })) {\n        $scope.config.HostConfig.NetworkMode = 'nat';\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到网络');\n    });\n    Container.query({}, function (d) {\n      var containers = d;\n      $scope.runningContainers = containers;\n      $scope.gpuUseAll = lodash_es_get__WEBPACK_IMPORTED_MODULE_7___default()($scope, 'endpoint.Snapshots[0].GpuUseAll', false);\n      $scope.gpuUseList = lodash_es_get__WEBPACK_IMPORTED_MODULE_7___default()($scope, 'endpoint.Snapshots[0].GpuUseList', []);\n\n      if ($transition$.params().from) {\n        loadFromContainerSpec();\n      } else {\n        $scope.fromContainer = {};\n        $scope.formValues.capabilities = $scope.areContainerCapabilitiesEnabled ? new _models_containerCapabilities__WEBPACK_IMPORTED_MODULE_13__.ContainerCapabilities() : [];\n      }\n    }, function (e) {\n      Notifications.error('失败', e, '无法检索到正在运行的容器');\n    });\n    SystemService.info().then(function success(data) {\n      $scope.availableRuntimes = data.Runtimes ? Object.keys(data.Runtimes) : [];\n      $scope.state.sliderMaxCpu = 32;\n\n      if (data.NCPU) {\n        $scope.state.sliderMaxCpu = data.NCPU;\n      }\n\n      $scope.state.sliderMaxMemory = 32768;\n\n      if (data.MemTotal) {\n        $scope.state.sliderMaxMemory = Math.floor(data.MemTotal / 1000 / 1000);\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到引擎的详细信息');\n    });\n    $scope.allowBindMounts = $scope.isAdminOrEndpointAdmin || endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n    $scope.allowPrivilegedMode = endpoint.SecuritySettings.allowPrivilegedModeForRegularUsers;\n    PluginService.loggingPlugins(apiVersion < 1.25).then(function success(loggingDrivers) {\n      $scope.availableLoggingDrivers = loggingDrivers;\n    });\n  }\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  $scope.handleResourceChange = handleResourceChange;\n\n  function handleResourceChange() {\n    $scope.state.settingUnlimitedResources = false;\n\n    if ($scope.config.HostConfig.Memory > 0 && $scope.formValues.MemoryLimit === 0 || $scope.config.HostConfig.MemoryReservation > 0 && $scope.formValues.MemoryReservation === 0 || $scope.config.HostConfig.NanoCpus > 0 && $scope.formValues.CpuLimit === 0) {\n      $scope.state.settingUnlimitedResources = true;\n    }\n  }\n\n  async function updateLimits(config) {\n    try {\n      if ($scope.state.settingUnlimitedResources) {\n        create();\n      } else {\n        await ContainerService.updateLimits($transition$.params().from, config);\n        $scope.config = config;\n        Notifications.success('Success', '限制已更新');\n      }\n    } catch (err) {\n      Notifications.error('失败', err, '更新限制失败');\n    }\n  }\n\n  async function update() {\n    $scope.state.actionInProgress = true;\n    var config = angular.copy($scope.config);\n    prepareResources(config);\n    await updateLimits(config);\n    $scope.state.actionInProgress = false;\n  }\n\n  function create() {\n    var oldContainer = null;\n    HttpRequestHelper.setPortainerAgentTargetHeader($scope.formValues.NodeName);\n    return findCurrentContainer().then(setOldContainer).then(confirmCreateContainer).then(startCreationProcess).catch(notifyOnError).finally(final);\n\n    function final() {\n      $scope.state.actionInProgress = false;\n    }\n\n    function setOldContainer(container) {\n      oldContainer = container;\n      return container;\n    }\n\n    function findCurrentContainer() {\n      return Container.query({\n        all: 1,\n        filters: {\n          name: ['^/' + $scope.config.name + '$']\n        }\n      }).$promise.then(function onQuerySuccess(containers) {\n        if (!containers.length) {\n          return;\n        }\n\n        return containers[0];\n      }).catch(notifyOnError);\n\n      function notifyOnError(err) {\n        Notifications.error('失败', err, '无法检索容器');\n      }\n    }\n\n    function startCreationProcess(confirmed) {\n      if (!confirmed) {\n        return $q.when();\n      }\n\n      if (!validateAccessControl()) {\n        return $q.when();\n      }\n\n      $scope.state.actionInProgress = true;\n      return pullImageIfNeeded().then(stopAndRenameContainer).then(createNewContainer).then(applyResourceControl).then(connectToExtraNetworks).then(removeOldContainer).then(onSuccess).catch(onCreationProcessFail);\n    }\n\n    function onCreationProcessFail(error) {\n      var deferred = $q.defer();\n      removeNewContainer().then(restoreOldContainerName).then(function () {\n        deferred.reject(error);\n      }).catch(function (restoreError) {\n        deferred.reject(restoreError);\n      });\n      return deferred.promise;\n    }\n\n    function removeNewContainer() {\n      return findCurrentContainer().then(function onContainerLoaded(container) {\n        if (container && (!oldContainer || container.Id !== oldContainer.Id)) {\n          return ContainerService.remove(container, true);\n        }\n      });\n    }\n\n    function restoreOldContainerName() {\n      if (!oldContainer) {\n        return;\n      }\n\n      return ContainerService.renameContainer(oldContainer.Id, oldContainer.Names[0].substring(1));\n    }\n\n    function confirmCreateContainer(container) {\n      if (!container) {\n        return $q.when(true);\n      }\n\n      return showConfirmationModal();\n\n      function showConfirmationModal() {\n        var deferred = $q.defer();\n        ModalService.confirmDestructive({\n          title: '你确定吗？',\n          message: '一个同名的容器已经存在。Portainer可以自动删除它并重新创建一个。你想替换它吗？',\n          buttons: {\n            confirm: {\n              label: '替换',\n              className: 'btn-danger'\n            }\n          },\n          callback: function onConfirm(confirmed) {\n            deferred.resolve(confirmed);\n          }\n        });\n        return deferred.promise;\n      }\n    }\n\n    function stopAndRenameContainer() {\n      if (!oldContainer) {\n        return $q.when();\n      }\n\n      return stopContainerIfNeeded(oldContainer).then(renameContainer);\n    }\n\n    function stopContainerIfNeeded(oldContainer) {\n      if (oldContainer.State !== 'running') {\n        return $q.when();\n      }\n\n      return ContainerService.stopContainer(oldContainer.Id);\n    }\n\n    function renameContainer() {\n      return ContainerService.renameContainer(oldContainer.Id, oldContainer.Names[0].substring(1) + '-old');\n    }\n\n    function pullImageIfNeeded() {\n      return $q.when($scope.formValues.alwaysPull && ImageService.pullImage($scope.formValues.RegistryModel, true));\n    }\n\n    function createNewContainer() {\n      return $async(async () => {\n        const config = prepareConfiguration();\n        return await ContainerService.createAndStartContainer(config);\n      });\n    }\n\n    function applyResourceControl(newContainer) {\n      const userId = Authentication.getUserDetails().ID;\n      const resourceControl = newContainer.Portainer.ResourceControl;\n      const containerId = newContainer.Id;\n      const accessControlData = $scope.formValues.AccessControlData;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl).then(function onApplyResourceControlSuccess() {\n        return containerId;\n      });\n    }\n\n    function connectToExtraNetworks(newContainerId) {\n      if (!$scope.extraNetworks) {\n        return $q.when();\n      }\n\n      var connectionPromises = lodash_es_forOwn__WEBPACK_IMPORTED_MODULE_0___default()($scope.extraNetworks, function (network, networkName) {\n        if (lodash_es_has__WEBPACK_IMPORTED_MODULE_1___default()(network, 'Aliases')) {\n          var aliases = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(network.Aliases, o => {\n            return !lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default()($scope.fromContainer.Id, o);\n          });\n        }\n\n        return NetworkService.connectContainer(networkName, newContainerId, aliases);\n      });\n\n      return $q.all(connectionPromises);\n    }\n\n    function removeOldContainer() {\n      var deferred = $q.defer();\n\n      if (!oldContainer) {\n        deferred.resolve();\n        return;\n      }\n\n      ContainerService.remove(oldContainer, true).then(notifyOnRemoval).catch(notifyOnRemoveError);\n      return deferred.promise;\n\n      function notifyOnRemoval() {\n        Notifications.success('容器已删除', oldContainer.Id);\n        deferred.resolve();\n      }\n\n      function notifyOnRemoveError(err) {\n        deferred.reject({\n          msg: '无法删除容器',\n          err: err\n        });\n      }\n    }\n\n    function notifyOnError(err) {\n      Notifications.error('失败', err, '无法创建容器');\n    }\n\n    function validateAccessControl() {\n      var accessControlData = $scope.formValues.AccessControlData;\n      return validateForm(accessControlData, $scope.isAdmin);\n    }\n\n    function onSuccess() {\n      Notifications.success('Success', '已成功创建容器');\n      $state.go('docker.containers', {}, {\n        reload: true\n      });\n    }\n  }\n\n  async function shouldShowDevices() {\n    return endpoint.SecuritySettings.allowDeviceMappingForRegularUsers || Authentication.isAdmin();\n  }\n\n  async function shouldShowSysctls() {\n    return endpoint.SecuritySettings.allowSysctlSettingForRegularUsers || Authentication.isAdmin();\n  }\n\n  async function checkIfContainerCapabilitiesEnabled() {\n    return endpoint.SecuritySettings.allowContainerCapabilitiesForRegularUsers || Authentication.isAdmin();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///51079\n");

}),

94518:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/services/modal.service/prompt */ 77918);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\n\n\n\n\n\n\n\n\n\nangular.module('portainer.docker').controller('ContainerController', ['$q', '$scope', '$state', '$transition$', '$filter', '$async', 'Commit', 'ContainerHelper', 'ContainerService', 'ImageHelper', 'NetworkService', 'Notifications', 'ModalService', 'ResourceControlService', 'RegistryService', 'ImageService', 'HttpRequestHelper', 'Authentication', 'endpoint', function ($q, $scope, $state, $transition$, $filter, $async, Commit, ContainerHelper, ContainerService, ImageHelper, NetworkService, Notifications, ModalService, ResourceControlService, RegistryService, ImageService, HttpRequestHelper, Authentication, endpoint) {\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_9__.ResourceControlType.Container;\n  $scope.endpoint = endpoint;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.activityTime = 0;\n  $scope.portBindings = [];\n  $scope.displayRecreateButton = false;\n  $scope.displayCreateWebhookButton = false;\n  $scope.containerWebhookFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_8__.FeatureId.CONTAINER_WEBHOOK;\n  $scope.config = {\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_6__.PorImageRegistryModel(),\n    commitInProgress: false\n  };\n  $scope.state = {\n    recreateContainerInProgress: false,\n    joinNetworkInProgress: false,\n    leaveNetworkInProgress: false,\n    pullImageValidity: false\n  };\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullImageValidity = validity;\n  }\n\n  $scope.updateRestartPolicy = updateRestartPolicy;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.computeDockerGPUCommand = () => {\n    const gpuOptions = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()($scope.container.HostConfig.DeviceRequests, function (o) {\n      return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';\n    });\n\n    if (!gpuOptions) {\n      return 'No GPU config found';\n    }\n\n    let gpuStr = 'all';\n\n    if (gpuOptions.Count !== -1) {\n      gpuStr = `\"device=${lodash_es_join__WEBPACK_IMPORTED_MODULE_3___default()(gpuOptions.DeviceIDs, ',')}\"`;\n    } // we only support a single set of capabilities for now\n    // creation UI needs to be reworked in order to support OR combinations of AND capabilities\n\n\n    const capStr = `\"capabilities=${lodash_es_join__WEBPACK_IMPORTED_MODULE_3___default()(gpuOptions.Capabilities[0], ',')}\"`;\n    return `${gpuStr},${capStr}`;\n  };\n\n  var update = function () {\n    var nodeName = $transition$.params().nodeName;\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    $scope.nodeName = nodeName;\n    ContainerService.container($transition$.params().id).then(function success(data) {\n      var container = data;\n      $scope.container = container;\n      $scope.container.edit = false;\n      $scope.container.newContainerName = $filter('trimcontainername')(container.Name);\n\n      if (container.State.Running) {\n        $scope.activityTime = moment__WEBPACK_IMPORTED_MODULE_5___default().duration(moment__WEBPACK_IMPORTED_MODULE_5___default()(container.State.StartedAt).utc().diff(moment__WEBPACK_IMPORTED_MODULE_5___default()().utc())).humanize();\n      } else if (container.State.Status === 'created') {\n        $scope.activityTime = moment__WEBPACK_IMPORTED_MODULE_5___default().duration(moment__WEBPACK_IMPORTED_MODULE_5___default()(container.Created).utc().diff(moment__WEBPACK_IMPORTED_MODULE_5___default()().utc())).humanize();\n      } else {\n        $scope.activityTime = moment__WEBPACK_IMPORTED_MODULE_5___default().duration(moment__WEBPACK_IMPORTED_MODULE_5___default()().utc().diff(moment__WEBPACK_IMPORTED_MODULE_5___default()(container.State.FinishedAt).utc())).humanize();\n      }\n\n      $scope.portBindings = [];\n\n      if (container.NetworkSettings.Ports) {\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(Object.keys(container.NetworkSettings.Ports), function (key) {\n          if (container.NetworkSettings.Ports[key]) {\n            lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(container.NetworkSettings.Ports[key], portMapping => {\n              const mapping = {};\n              mapping.container = key;\n              mapping.host = `${portMapping.HostIp}:${portMapping.HostPort}`;\n              $scope.portBindings.push(mapping);\n            });\n          }\n        });\n      }\n\n      $scope.container.Config.Env = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default()($scope.container.Config.Env, (lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default()));\n      const inSwarm = $scope.container.Config.Labels['com.docker.swarm.service.id'];\n      const autoRemove = $scope.container.HostConfig.AutoRemove;\n      const admin = Authentication.isAdmin();\n      const {\n        allowContainerCapabilitiesForRegularUsers,\n        allowHostNamespaceForRegularUsers,\n        allowDeviceMappingForRegularUsers,\n        allowSysctlSettingForRegularUsers,\n        allowBindMountsForRegularUsers,\n        allowPrivilegedModeForRegularUsers\n      } = endpoint.SecuritySettings;\n      const settingRestrictsRegularUsers = !allowContainerCapabilitiesForRegularUsers || !allowBindMountsForRegularUsers || !allowDeviceMappingForRegularUsers || !allowSysctlSettingForRegularUsers || !allowHostNamespaceForRegularUsers || !allowPrivilegedModeForRegularUsers;\n      $scope.displayRecreateButton = !inSwarm && !autoRemove && (admin || !settingRestrictsRegularUsers);\n      $scope.displayCreateWebhookButton = $scope.displayRecreateButton;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索容器信息');\n    });\n  };\n\n  function executeContainerAction(id, action, successMessage, errorMessage) {\n    action(id).then(function success() {\n      Notifications.success(successMessage, id);\n      update();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, errorMessage);\n    });\n  }\n\n  $scope.start = function () {\n    var successMessage = '容器成功启动';\n    var errorMessage = '无法启动容器';\n    executeContainerAction($transition$.params().id, ContainerService.startContainer, successMessage, errorMessage);\n  };\n\n  $scope.stop = function () {\n    var successMessage = '容器成功停止';\n    var errorMessage = '无法停止容器';\n    executeContainerAction($transition$.params().id, ContainerService.stopContainer, successMessage, errorMessage);\n  };\n\n  $scope.kill = function () {\n    var successMessage = '容器被成功终止';\n    var errorMessage = '无法终止容器';\n    executeContainerAction($transition$.params().id, ContainerService.killContainer, successMessage, errorMessage);\n  };\n\n  $scope.pause = function () {\n    var successMessage = '容器成功暂停使用';\n    var errorMessage = '无法暂停容器';\n    executeContainerAction($transition$.params().id, ContainerService.pauseContainer, successMessage, errorMessage);\n  };\n\n  $scope.unpause = function () {\n    var successMessage = '容器成功恢复';\n    var errorMessage = '无法恢复容器';\n    executeContainerAction($transition$.params().id, ContainerService.resumeContainer, successMessage, errorMessage);\n  };\n\n  $scope.restart = function () {\n    var successMessage = '容器成功重启';\n    var errorMessage = '无法重新启动容器';\n    executeContainerAction($transition$.params().id, ContainerService.restartContainer, successMessage, errorMessage);\n  };\n\n  $scope.renameContainer = function () {\n    var container = $scope.container;\n\n    if (container.newContainerName === $filter('trimcontainername')(container.Name)) {\n      $scope.container.edit = false;\n      return;\n    }\n\n    ContainerService.renameContainer($transition$.params().id, container.newContainerName).then(function success() {\n      container.Name = container.newContainerName;\n      Notifications.success('容器成功重命名', container.Name);\n    }).catch(function error(err) {\n      container.newContainerName = $filter('trimcontainername')(container.Name);\n      Notifications.error('失败', err, '无法重命名容器');\n    }).finally(function final() {\n      $scope.container.edit = false;\n      $scope.$apply();\n    });\n  };\n\n  $scope.containerLeaveNetwork = function containerLeaveNetwork(container, networkId) {\n    $scope.state.leaveNetworkInProgress = true;\n    NetworkService.disconnectContainer(networkId, container.Id, false).then(function success() {\n      Notifications.success('Container left network', container.Id);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法从网络上断开容器的连接');\n    }).finally(function final() {\n      $scope.state.leaveNetworkInProgress = false;\n    });\n  };\n\n  $scope.containerJoinNetwork = function containerJoinNetwork(container, networkId) {\n    $scope.state.joinNetworkInProgress = true;\n    NetworkService.connectContainer(networkId, container.Id).then(function success() {\n      Notifications.success('容器加入网络', container.Id);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法将容器连接到网络');\n    }).finally(function final() {\n      $scope.state.joinNetworkInProgress = false;\n    });\n  };\n\n  async function commitContainerAsync() {\n    $scope.config.commitInProgress = true;\n    const registryModel = $scope.config.RegistryModel;\n    const imageConfig = ImageHelper.createImageConfigForContainer(registryModel);\n\n    try {\n      await Commit.commitContainer({\n        id: $transition$.params().id,\n        repo: imageConfig.fromImage\n      }).$promise;\n      Notifications.success('镜像创建成功', $transition$.params().id);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, '无法创建镜像');\n      $scope.config.commitInProgress = false;\n    }\n  }\n\n  $scope.commit = function () {\n    return $async(commitContainerAsync);\n  };\n\n  $scope.confirmRemove = function () {\n    var title = '你即将移除一个容器。';\n\n    if ($scope.container.State.Running) {\n      title = '你将要移除一个正在运行的容器。';\n    }\n\n    (0,_portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_7__.confirmContainerDeletion)(title, function (result) {\n      if (!result) {\n        return;\n      }\n\n      var cleanAssociatedVolumes = false;\n\n      if (result[0]) {\n        cleanAssociatedVolumes = true;\n      }\n\n      removeContainer(cleanAssociatedVolumes);\n    });\n  };\n\n  function removeContainer(cleanAssociatedVolumes) {\n    ContainerService.remove($scope.container, cleanAssociatedVolumes).then(function success() {\n      Notifications.success('Success', '容器成功移除');\n      $state.go('docker.containers', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法移除容器');\n    });\n  }\n\n  function recreateContainer(pullImage) {\n    var container = $scope.container;\n    var config = ContainerHelper.configFromContainer(container.Model);\n    $scope.state.recreateContainerInProgress = true;\n    var isRunning = container.State.Running;\n    return pullImageIfNeeded().then(stopContainerIfNeeded).then(renameContainer).then(setMainNetworkAndCreateContainer).then(connectContainerToOtherNetworks).then(startContainerIfNeeded).then(createResourceControl).then(deleteOldContainer).then(notifyAndChangeView).catch(notifyOnError);\n\n    function stopContainerIfNeeded() {\n      if (!isRunning) {\n        return $q.when();\n      }\n\n      return ContainerService.stopContainer(container.Id);\n    }\n\n    function renameContainer() {\n      return ContainerService.renameContainer(container.Id, container.Name + '-old');\n    }\n\n    function pullImageIfNeeded() {\n      if (!pullImage) {\n        return $q.when();\n      }\n\n      return RegistryService.retrievePorRegistryModelFromRepository(container.Config.Image, endpoint.Id).then(registryModel => {\n        return ImageService.pullImage(registryModel, false);\n      });\n    }\n\n    function setMainNetworkAndCreateContainer() {\n      var networks = config.NetworkingConfig.EndpointsConfig;\n      var networksNames = Object.keys(networks);\n\n      if (networksNames.length > 1) {\n        config.NetworkingConfig.EndpointsConfig = {};\n        config.NetworkingConfig.EndpointsConfig[networksNames[0]] = networks[0];\n      }\n\n      return $q.all([ContainerService.createContainer(config), networks]);\n    }\n\n    function connectContainerToOtherNetworks(createContainerData) {\n      var newContainer = createContainerData[0];\n      var networks = createContainerData[1];\n      var networksNames = Object.keys(networks);\n      var connectionPromises = networksNames.map(function connectToNetwork(name) {\n        NetworkService.connectContainer(name, newContainer.Id);\n      });\n      return $q.all(connectionPromises).then(function onConnectToNetworkSuccess() {\n        return newContainer;\n      });\n    }\n\n    function deleteOldContainer(newContainer) {\n      return ContainerService.remove(container, true).then(function onRemoveSuccess() {\n        return newContainer;\n      });\n    }\n\n    function startContainerIfNeeded(newContainer) {\n      if (!isRunning) {\n        return $q.when(newContainer);\n      }\n\n      return ContainerService.startContainer(newContainer.Id).then(function onStartSuccess() {\n        return newContainer;\n      });\n    }\n\n    function createResourceControl(newContainer) {\n      const userId = Authentication.getUserDetails().ID;\n      const oldResourceControl = container.ResourceControl;\n      const newResourceControl = newContainer.Portainer.ResourceControl;\n      return ResourceControlService.duplicateResourceControl(userId, oldResourceControl, newResourceControl);\n    }\n\n    function notifyAndChangeView() {\n      Notifications.success('Success', '容器重新创建成功');\n      $state.go('docker.containers', {}, {\n        reload: true\n      });\n    }\n\n    function notifyOnError(err) {\n      Notifications.error('失败', err, '无法重新创建容器');\n      $scope.state.recreateContainerInProgress = false;\n    }\n  }\n\n  $scope.recreate = function () {\n    const cannotPullImage = !$scope.container.Config.Image || $scope.container.Config.Image.toLowerCase().startsWith('sha256');\n    ModalService.confirmContainerRecreation(cannotPullImage, function (result) {\n      if (!result) {\n        return;\n      }\n\n      var pullImage = false;\n\n      if (result[0]) {\n        pullImage = true;\n      }\n\n      recreateContainer(pullImage);\n    });\n  };\n\n  function updateRestartPolicy(restartPolicy, maximumRetryCount) {\n    maximumRetryCount = restartPolicy === 'on-failure' ? maximumRetryCount : undefined;\n    return ContainerService.updateRestartPolicy($scope.container.Id, restartPolicy, maximumRetryCount).then(onUpdateSuccess).catch(notifyOnError);\n\n    function onUpdateSuccess() {\n      $scope.container.HostConfig.RestartPolicy = {\n        Name: restartPolicy,\n        MaximumRetryCount: maximumRetryCount\n      };\n      Notifications.success('Success', '更新了重启策略');\n    }\n\n    function notifyOnError(err) {\n      Notifications.error('失败', err, '无法更新重启策略');\n      return $q.reject(err);\n    }\n  }\n\n  var provider = $scope.applicationState.endpoint.mode.provider;\n  var apiVersion = $scope.applicationState.endpoint.apiVersion;\n  NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25).then(function success(data) {\n    var networks = data;\n    $scope.availableNetworks = networks;\n  }).catch(function error(err) {\n    Notifications.error('失败', err, '无法检索到网络');\n  });\n  update();\n}]);//# sourceURL=webpack-internal:///94518\n");

}),

62897:

(function() {

eval("angular.module('portainer.docker').controller('ContainerInspectController', ['$scope', '$transition$', 'Notifications', 'ContainerService', 'HttpRequestHelper', function ($scope, $transition$, Notifications, ContainerService, HttpRequestHelper) {\n  $scope.state = {\n    DisplayTextView: false\n  };\n  $scope.containerInfo = {};\n\n  function initView() {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n    ContainerService.inspect($transition$.params().id).then(function success(d) {\n      $scope.containerInfo = d;\n    }).catch(function error(e) {\n      Notifications.error('失败', e, '无法检查容器');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///62897\n");

}),

47381:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('ContainerLogsController', ['$scope', '$transition$', '$interval', 'ContainerService', 'Notifications', 'HttpRequestHelper', function ($scope, $transition$, $interval, ContainerService, Notifications, HttpRequestHelper) {\n  $scope.state = {\n    refreshRate: 3,\n    lineCount: 100,\n    sinceTimestamp: '',\n    displayTimestamps: false\n  };\n\n  $scope.changeLogCollection = function (logCollectionStatus) {\n    if (!logCollectionStatus) {\n      stopRepeater();\n    } else {\n      setUpdateRepeater(!$scope.container.Config.Tty);\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    stopRepeater();\n  });\n\n  function stopRepeater() {\n    var repeater = $scope.repeater;\n\n    if (angular.isDefined(repeater)) {\n      $interval.cancel(repeater);\n      repeater = null;\n    }\n  }\n\n  function setUpdateRepeater(skipHeaders) {\n    var refreshRate = $scope.state.refreshRate;\n    $scope.repeater = $interval(function () {\n      ContainerService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount, skipHeaders).then(function success(data) {\n        $scope.logs = data;\n      }).catch(function error(err) {\n        stopRepeater();\n        Notifications.error('失败', err, '无法检索容器日志');\n      });\n    }, refreshRate * 1000);\n  }\n\n  function startLogPolling(skipHeaders) {\n    ContainerService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount, skipHeaders).then(function success(data) {\n      $scope.logs = data;\n      setUpdateRepeater(skipHeaders);\n    }).catch(function error(err) {\n      stopRepeater();\n      Notifications.error('失败', err, '无法检索容器日志');\n    });\n  }\n\n  function initView() {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n    ContainerService.container($transition$.params().id).then(function success(data) {\n      var container = data;\n      $scope.container = container;\n      startLogPolling(!container.Config.Tty);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索容器信息');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///47381\n");

}),

19393:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\nangular.module('portainer.docker').controller('ContainerStatsController', ['$q', '$scope', '$transition$', '$document', '$interval', 'ContainerService', 'ChartService', 'Notifications', 'HttpRequestHelper', function ($q, $scope, $transition$, $document, $interval, ContainerService, ChartService, Notifications, HttpRequestHelper) {\n  $scope.state = {\n    refreshRate: '5',\n    networkStatsUnavailable: false,\n    ioStatsUnavailable: false\n  };\n  $scope.$on('$destroy', function () {\n    stopRepeater();\n  });\n\n  function stopRepeater() {\n    var repeater = $scope.repeater;\n\n    if (angular.isDefined(repeater)) {\n      $interval.cancel(repeater);\n      repeater = null;\n    }\n  }\n\n  function updateNetworkChart(stats, chart) {\n    if (stats.Networks.length > 0) {\n      var rx = stats.Networks[0].rx_bytes;\n      var tx = stats.Networks[0].tx_bytes;\n      var label = moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.read).format('HH:mm:ss');\n      ChartService.UpdateNetworkChart(label, rx, tx, chart);\n    }\n  }\n\n  function updateMemoryChart(stats, chart) {\n    var label = moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.read).format('HH:mm:ss');\n    ChartService.UpdateMemoryChart(label, stats.MemoryUsage, stats.MemoryCache, chart);\n  }\n\n  function updateIOChart(stats, chart) {\n    var label = moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.read).format('HH:mm:ss');\n\n    if (stats.noIOData !== true) {\n      ChartService.UpdateIOChart(label, stats.BytesRead, stats.BytesWrite, chart);\n    }\n  }\n\n  function updateCPUChart(stats, chart) {\n    var label = moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.read).format('HH:mm:ss');\n    var value = stats.isWindows ? calculateCPUPercentWindows(stats) : calculateCPUPercentUnix(stats);\n    ChartService.UpdateCPUChart(label, value, chart);\n  }\n\n  function calculateCPUPercentUnix(stats) {\n    var cpuPercent = 0.0;\n    var cpuDelta = stats.CurrentCPUTotalUsage - stats.PreviousCPUTotalUsage;\n    var systemDelta = stats.CurrentCPUSystemUsage - stats.PreviousCPUSystemUsage;\n\n    if (systemDelta > 0.0 && cpuDelta > 0.0) {\n      cpuPercent = cpuDelta / systemDelta * stats.CPUCores * 100.0;\n    }\n\n    return cpuPercent;\n  }\n\n  function calculateCPUPercentWindows(stats) {\n    var possIntervals = stats.NumProcs * parseFloat(moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.read, 'YYYY-MM-DDTHH:mm:ss.SSSSSSSSSZ').valueOf() - moment__WEBPACK_IMPORTED_MODULE_0___default()(stats.preread, 'YYYY-MM-DDTHH:mm:ss.SSSSSSSSSZ').valueOf());\n    var windowsCpuUsage = 0.0;\n\n    if (possIntervals > 0) {\n      windowsCpuUsage = parseFloat(stats.CurrentCPUTotalUsage - stats.PreviousCPUTotalUsage) / parseFloat(possIntervals * 100);\n    }\n\n    return windowsCpuUsage;\n  }\n\n  $scope.changeUpdateRepeater = function () {\n    var networkChart = $scope.networkChart;\n    var cpuChart = $scope.cpuChart;\n    var memoryChart = $scope.memoryChart;\n    var ioChart = $scope.ioChart;\n    stopRepeater();\n    setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart);\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(1500);\n  };\n\n  function startChartUpdate(networkChart, cpuChart, memoryChart, ioChart) {\n    $q.all({\n      stats: ContainerService.containerStats($transition$.params().id),\n      top: ContainerService.containerTop($transition$.params().id)\n    }).then(function success(data) {\n      var stats = data.stats;\n      $scope.processInfo = data.top;\n\n      if (stats.Networks.length === 0) {\n        $scope.state.networkStatsUnavailable = true;\n      }\n\n      if (stats.noIOData === true) {\n        $scope.state.ioStatsUnavailable = true;\n      }\n\n      updateNetworkChart(stats, networkChart);\n      updateMemoryChart(stats, memoryChart);\n      updateCPUChart(stats, cpuChart);\n      updateIOChart(stats, ioChart);\n      setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart);\n    }).catch(function error(err) {\n      stopRepeater();\n      Notifications.error('失败', err, '无法检索容器统计数据');\n    });\n  }\n\n  function setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart) {\n    var refreshRate = $scope.state.refreshRate;\n    $scope.repeater = $interval(function () {\n      $q.all({\n        stats: ContainerService.containerStats($transition$.params().id),\n        top: ContainerService.containerTop($transition$.params().id)\n      }).then(function success(data) {\n        var stats = data.stats;\n        $scope.processInfo = data.top;\n        updateNetworkChart(stats, networkChart);\n        updateMemoryChart(stats, memoryChart);\n        updateCPUChart(stats, cpuChart);\n        updateIOChart(stats, ioChart);\n      }).catch(function error(err) {\n        stopRepeater();\n        Notifications.error('失败', err, '无法检索容器统计数据');\n      });\n    }, refreshRate * 1000);\n  }\n\n  function initCharts() {\n    var networkChartCtx = $('#networkChart');\n    var networkChart = ChartService.CreateNetworkChart(networkChartCtx);\n    $scope.networkChart = networkChart;\n    var cpuChartCtx = $('#cpuChart');\n    var cpuChart = ChartService.CreateCPUChart(cpuChartCtx);\n    $scope.cpuChart = cpuChart;\n    var memoryChartCtx = $('#memoryChart');\n    var memoryChart = ChartService.CreateMemoryChart(memoryChartCtx);\n    $scope.memoryChart = memoryChart;\n    var ioChartCtx = $('#ioChart');\n    var ioChart = ChartService.CreateIOChart(ioChartCtx);\n    $scope.ioChart = ioChart;\n    startChartUpdate(networkChart, cpuChart, memoryChart, ioChart);\n  }\n\n  function initView() {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n    ContainerService.container($transition$.params().id).then(function success(data) {\n      $scope.container = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到容器信息');\n    });\n    $document.ready(function () {\n      initCharts();\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///19393\n");

}),

88444:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/filter */ 83432);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/get */ 6632);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_join__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/join */ 89858);\n/* harmony import */ var lodash_join__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_join__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n/* harmony import */ var _react_docker_DashboardView_ContainerStatus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/docker/DashboardView/ContainerStatus */ 33960);\n/* harmony import */ var _react_docker_DashboardView_ImagesTotalSize__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/react/docker/DashboardView/ImagesTotalSize */ 76981);\n\n\n\n\n\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_4___default().module('portainer.docker').controller('DashboardController', ['$scope', '$q', 'Authentication', 'ContainerService', 'ImageService', 'NetworkService', 'VolumeService', 'SystemService', 'ServiceService', 'StackService', 'Notifications', 'StateManager', 'TagService', 'endpoint', function ($scope, $q, Authentication, ContainerService, ImageService, NetworkService, VolumeService, SystemService, ServiceService, StackService, Notifications, StateManager, TagService, endpoint) {\n  $scope.dismissInformationPanel = function (id) {\n    StateManager.dismissInformationPanel(id);\n  };\n\n  $scope.offlineMode = false;\n  $scope.showStacks = false;\n\n  $scope.buildGpusStr = function (gpuUseSet) {\n    var gpusAvailable = new Object();\n\n    for (let i = 0; i < ($scope.endpoint.Gpus || []).length; i++) {\n      if (!gpuUseSet.has($scope.endpoint.Gpus[i].name)) {\n        var exist = false;\n\n        for (let gpuAvailable in gpusAvailable) {\n          if ($scope.endpoint.Gpus[i].value == gpuAvailable) {\n            gpusAvailable[gpuAvailable] += 1;\n            exist = true;\n          }\n        }\n\n        if (exist === false) {\n          gpusAvailable[$scope.endpoint.Gpus[i].value] = 1;\n        }\n      }\n    }\n\n    var retStr = Object.keys(gpusAvailable).length ? lodash_join__WEBPACK_IMPORTED_MODULE_3___default()(lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(Object.keys(gpusAvailable), gpuAvailable => {\n      var _str = gpusAvailable[gpuAvailable];\n      _str += ' x ';\n      _str += gpuAvailable;\n      return _str;\n    }), ' + ') : 'none';\n    return retStr;\n  };\n\n  async function initView() {\n    const endpointMode = $scope.applicationState.endpoint.mode;\n    $scope.endpoint = endpoint;\n    $scope.showStacks = await shouldShowStacks();\n    $scope.showEnvUrl = endpoint.Type !== Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment && endpoint.Type !== Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment;\n    $q.all({\n      containers: ContainerService.containers(1),\n      images: ImageService.images(false),\n      volumes: VolumeService.volumes(),\n      networks: NetworkService.networks(true, true, true),\n      services: endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER' ? ServiceService.services() : [],\n      stacks: StackService.stacks(true, endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER', endpoint.Id),\n      info: SystemService.info(),\n      tags: TagService.tags()\n    }).then(function success(data) {\n      $scope.containers = data.containers;\n      $scope.containerStatusComponent = (0,_react_docker_DashboardView_ContainerStatus__WEBPACK_IMPORTED_MODULE_7__.useContainerStatusComponent)(data.containers);\n      $scope.images = data.images;\n      $scope.imagesTotalSizeComponent = (0,_react_docker_DashboardView_ImagesTotalSize__WEBPACK_IMPORTED_MODULE_8__.useImagesTotalSizeComponent)(imagesTotalSize(data.images));\n      $scope.volumeCount = data.volumes.length;\n      $scope.networkCount = data.networks.length;\n      $scope.serviceCount = data.services.length;\n      $scope.stackCount = data.stacks.length;\n      $scope.info = data.info;\n      $scope.gpuInfoStr = $scope.buildGpusStr(new Set());\n      $scope.gpuUseAll = lodash_get__WEBPACK_IMPORTED_MODULE_1___default()($scope, 'endpoint.Snapshots[0].GpuUseAll', false);\n      $scope.gpuUseList = lodash_get__WEBPACK_IMPORTED_MODULE_1___default()($scope, 'endpoint.Snapshots[0].GpuUseList', []);\n      $scope.gpuFreeStr = 'all';\n      if ($scope.gpuUseAll == true) $scope.gpuFreeStr = 'none';else $scope.gpuFreeStr = $scope.buildGpusStr(new Set($scope.gpuUseList));\n      $scope.endpointTags = endpoint.TagIds.length ? lodash_join__WEBPACK_IMPORTED_MODULE_3___default()(lodash_filter__WEBPACK_IMPORTED_MODULE_0___default()(lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(endpoint.TagIds, id => {\n        const tag = data.tags.find(tag => tag.Id === id);\n        return tag ? tag.Name : '';\n      }), Boolean), ', ') : '-';\n      $scope.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_5__.isOfflineEndpoint)(endpoint);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法加载仪表板数据');\n    });\n  }\n\n  async function shouldShowStacks() {\n    const isAdmin = Authentication.isAdmin();\n    return isAdmin || endpoint.SecuritySettings.allowStackManagementForRegularUsers;\n  }\n\n  initView();\n}]);\n\nfunction imagesTotalSize(images) {\n  return images.reduce((acc, image) => acc + image.VirtualSize, 0);\n}//# sourceURL=webpack-internal:///88444\n");

}),

25006:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DockerFeaturesConfigurationController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\nclass DockerFeaturesConfigurationController {\n  /* @ngInject */\n  constructor($async, $scope, EndpointService, Notifications, StateManager) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.EndpointService = EndpointService;\n    this.Notifications = Notifications;\n    this.StateManager = StateManager;\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.HIDE_AUTO_UPDATE_WINDOW;\n    this.formValues = {\n      enableHostManagementFeatures: false,\n      allowVolumeBrowserForRegularUsers: false,\n      disableBindMountsForRegularUsers: false,\n      disablePrivilegedModeForRegularUsers: false,\n      disableHostNamespaceForRegularUsers: false,\n      disableStackManagementForRegularUsers: false,\n      disableDeviceMappingForRegularUsers: false,\n      disableContainerCapabilitiesForRegularUsers: false,\n      disableSysctlSettingForRegularUsers: false\n    };\n    this.isAgent = false;\n    this.state = {\n      actionInProgress: false,\n      autoUpdateSettings: {\n        Enabled: false\n      },\n      timeZone: ''\n    };\n    this.save = this.save.bind(this);\n    this.onChangeField = this.onChangeField.bind(this);\n    this.onToggleAutoUpdate = this.onToggleAutoUpdate.bind(this);\n    this.onChangeEnableHostManagementFeatures = this.onChangeField('enableHostManagementFeatures');\n    this.onChangeAllowVolumeBrowserForRegularUsers = this.onChangeField('allowVolumeBrowserForRegularUsers');\n    this.onChangeDisableBindMountsForRegularUsers = this.onChangeField('disableBindMountsForRegularUsers');\n    this.onChangeDisablePrivilegedModeForRegularUsers = this.onChangeField('disablePrivilegedModeForRegularUsers');\n    this.onChangeDisableHostNamespaceForRegularUsers = this.onChangeField('disableHostNamespaceForRegularUsers');\n    this.onChangeDisableStackManagementForRegularUsers = this.onChangeField('disableStackManagementForRegularUsers');\n    this.onChangeDisableDeviceMappingForRegularUsers = this.onChangeField('disableDeviceMappingForRegularUsers');\n    this.onChangeDisableContainerCapabilitiesForRegularUsers = this.onChangeField('disableContainerCapabilitiesForRegularUsers');\n    this.onChangeDisableSysctlSettingForRegularUsers = this.onChangeField('disableSysctlSettingForRegularUsers');\n  }\n\n  onToggleAutoUpdate(value) {\n    return this.$scope.$evalAsync(() => {\n      this.state.autoUpdateSettings.Enabled = value;\n    });\n  }\n\n  onChange(values) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues = { ...this.formValues,\n        ...values\n      };\n    });\n  }\n\n  onChangeField(field) {\n    return value => {\n      this.onChange({\n        [field]: value\n      });\n    };\n  }\n\n  isContainerEditDisabled() {\n    const {\n      disableBindMountsForRegularUsers,\n      disableHostNamespaceForRegularUsers,\n      disablePrivilegedModeForRegularUsers,\n      disableDeviceMappingForRegularUsers,\n      disableContainerCapabilitiesForRegularUsers,\n      disableSysctlSettingForRegularUsers\n    } = this.formValues;\n    return disableBindMountsForRegularUsers || disableHostNamespaceForRegularUsers || disablePrivilegedModeForRegularUsers || disableDeviceMappingForRegularUsers || disableContainerCapabilitiesForRegularUsers || disableSysctlSettingForRegularUsers;\n  }\n\n  async save() {\n    return this.$async(async () => {\n      try {\n        this.state.actionInProgress = true;\n        const securitySettings = {\n          enableHostManagementFeatures: this.formValues.enableHostManagementFeatures,\n          allowBindMountsForRegularUsers: !this.formValues.disableBindMountsForRegularUsers,\n          allowPrivilegedModeForRegularUsers: !this.formValues.disablePrivilegedModeForRegularUsers,\n          allowVolumeBrowserForRegularUsers: this.formValues.allowVolumeBrowserForRegularUsers,\n          allowHostNamespaceForRegularUsers: !this.formValues.disableHostNamespaceForRegularUsers,\n          allowDeviceMappingForRegularUsers: !this.formValues.disableDeviceMappingForRegularUsers,\n          allowStackManagementForRegularUsers: !this.formValues.disableStackManagementForRegularUsers,\n          allowContainerCapabilitiesForRegularUsers: !this.formValues.disableContainerCapabilitiesForRegularUsers,\n          allowSysctlSettingForRegularUsers: !this.formValues.disableSysctlSettingForRegularUsers\n        };\n        await this.EndpointService.updateSecuritySettings(this.endpoint.Id, securitySettings);\n        this.endpoint.SecuritySettings = securitySettings;\n        this.Notifications.success('Success', 'Saved settings successfully');\n      } catch (e) {\n        this.Notifications.error('失败', e, 'Failed saving settings');\n      }\n\n      this.state.actionInProgress = false;\n    });\n  }\n\n  checkAgent() {\n    const applicationState = this.StateManager.getState();\n    return applicationState.endpoint.mode.agentProxy;\n  }\n\n  $onInit() {\n    const securitySettings = this.endpoint.SecuritySettings;\n    const isAgent = this.checkAgent();\n    this.isAgent = isAgent;\n    this.formValues = {\n      enableHostManagementFeatures: isAgent && securitySettings.enableHostManagementFeatures,\n      allowVolumeBrowserForRegularUsers: isAgent && securitySettings.allowVolumeBrowserForRegularUsers,\n      disableBindMountsForRegularUsers: !securitySettings.allowBindMountsForRegularUsers,\n      disablePrivilegedModeForRegularUsers: !securitySettings.allowPrivilegedModeForRegularUsers,\n      disableHostNamespaceForRegularUsers: !securitySettings.allowHostNamespaceForRegularUsers,\n      disableDeviceMappingForRegularUsers: !securitySettings.allowDeviceMappingForRegularUsers,\n      disableStackManagementForRegularUsers: !securitySettings.allowStackManagementForRegularUsers,\n      disableContainerCapabilitiesForRegularUsers: !securitySettings.allowContainerCapabilitiesForRegularUsers,\n      disableSysctlSettingForRegularUsers: !securitySettings.allowSysctlSettingForRegularUsers\n    };\n  }\n\n}\nDockerFeaturesConfigurationController.$inject = [\"$async\", \"$scope\", \"EndpointService\", \"Notifications\", \"StateManager\"];//# sourceURL=webpack-internal:///25006\n");

}),

68958:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _docker_features_configuration_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./docker-features-configuration.controller */ 25006);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./docker-features-configuration.html */ 97582);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.docker').component('dockerFeaturesConfigurationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _docker_features_configuration_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///68958\n");

}),

63181:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('EventsController', ['$scope', 'Notifications', 'SystemService', function ($scope, Notifications, SystemService) {\n  function initView() {\n    var from = moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(24, 'hour').unix();\n    var to = moment__WEBPACK_IMPORTED_MODULE_0___default()().unix();\n    SystemService.events(from, to).then(function success(data) {\n      $scope.events = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法加载事件');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///63181\n");

}),

34776:

(function() {

eval("angular.module('portainer.docker').controller('HostBrowserViewController', ['SystemService', 'Notifications', function HostBrowserViewController(SystemService, Notifications) {\n  var ctrl = this;\n  ctrl.$onInit = $onInit;\n\n  function $onInit() {\n    SystemService.info().then(function onInfoLoaded(host) {\n      ctrl.host = host;\n    }).catch(function onError(err) {\n      Notifications.error('无法检索到主机信息', err);\n    });\n  }\n}]);//# sourceURL=webpack-internal:///34776\n");

}),

24233:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./host-browser-view.html */ 18659);\n\nangular.module('portainer.docker').component('hostBrowserView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'HostBrowserViewController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///24233\n");

}),

43279:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n\nangular.module('portainer.docker').controller('HostViewController', ['$q', 'SystemService', 'Notifications', 'StateManager', 'AgentService', 'ContainerService', 'Authentication', function HostViewController($q, SystemService, Notifications, StateManager, AgentService, ContainerService, Authentication) {\n  var ctrl = this;\n  this.$onInit = initView;\n  ctrl.state = {\n    isAgent: false,\n    isAdmin: false,\n    offlineMode: false\n  };\n  this.engineDetails = {};\n  this.hostDetails = {};\n  this.devices = null;\n  this.disks = null;\n\n  function initView() {\n    var applicationState = StateManager.getState();\n    ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy;\n    ctrl.state.isAdmin = Authentication.isAdmin();\n    var agentApiVersion = applicationState.endpoint.agentApiVersion;\n    ctrl.state.agentApiVersion = agentApiVersion;\n    ctrl.state.enableHostManagementFeatures = ctrl.endpoint.SecuritySettings.enableHostManagementFeatures;\n    $q.all({\n      version: SystemService.version(),\n      info: SystemService.info(),\n      jobs: ctrl.state.isAdmin ? ContainerService.containers(true, {\n        label: ['io.portainer.job.endpoint']\n      }) : []\n    }).then(function success(data) {\n      ctrl.engineDetails = buildEngineDetails(data);\n      ctrl.hostDetails = buildHostDetails(data.info);\n      ctrl.state.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__.isOfflineEndpoint)(ctrl.endpoint);\n      ctrl.jobs = data.jobs;\n\n      if (ctrl.state.isAgent && agentApiVersion > 1 && ctrl.state.enableHostManagementFeatures) {\n        return AgentService.hostInfo(data.info.Hostname).then(function onHostInfoLoad(agentHostInfo) {\n          ctrl.devices = agentHostInfo.PCIDevices;\n          ctrl.disks = agentHostInfo.PhysicalDisks;\n        });\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到引擎的详细信息');\n    });\n  }\n\n  function buildEngineDetails(data) {\n    var versionDetails = data.version;\n    var info = data.info;\n    return {\n      releaseVersion: versionDetails.Version,\n      apiVersion: versionDetails.ApiVersion,\n      rootDirectory: info.DockerRootDir,\n      storageDriver: info.Driver,\n      loggingDriver: info.LoggingDriver,\n      volumePlugins: info.Plugins.Volume,\n      networkPlugins: info.Plugins.Network\n    };\n  }\n\n  function buildHostDetails(info) {\n    return {\n      os: {\n        arch: info.Architecture,\n        type: info.OSType,\n        name: info.OperatingSystem\n      },\n      name: info.Name,\n      kernelVersion: info.KernelVersion,\n      totalCPU: info.NCPU,\n      totalMemory: info.MemTotal\n    };\n  }\n}]);//# sourceURL=webpack-internal:///43279\n");

}),

15906:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./host-view.html */ 20927);\n\nangular.module('portainer.docker').component('hostView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'HostViewController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///15906\n");

}),

88741:

(function() {

eval("BuildImageController.$inject = [\"$scope\", \"$async\", \"$window\", \"ModalService\", \"BuildService\", \"Notifications\", \"HttpRequestHelper\"];\nangular.module('portainer.docker').controller('BuildImageController', BuildImageController);\n/* @ngInject */\n\nfunction BuildImageController($scope, $async, $window, ModalService, BuildService, Notifications, HttpRequestHelper) {\n  $scope.state = {\n    BuildType: 'editor',\n    actionInProgress: false,\n    activeTab: 0,\n    isEditorDirty: false\n  };\n  $scope.formValues = {\n    ImageNames: [{\n      Name: '',\n      Valid: false,\n      Unique: true\n    }],\n    UploadFile: null,\n    DockerFileContent: '',\n    AdditionalFiles: [],\n    URL: '',\n    Path: 'Dockerfile',\n    NodeName: null\n  };\n\n  $window.onbeforeunload = () => {\n    if ($scope.state.BuildType === 'editor' && $scope.formValues.DockerFileContent && $scope.state.isEditorDirty) {\n      return '';\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    $scope.state.isEditorDirty = false;\n  });\n\n  $scope.checkName = function (index) {\n    var item = $scope.formValues.ImageNames[index];\n    item.Valid = true;\n    item.Unique = true;\n\n    if (item.Name !== '') {\n      // Check unique\n      $scope.formValues.ImageNames.forEach((element, idx) => {\n        if (idx != index && element.Name == item.Name) {\n          item.Valid = false;\n          item.Unique = false;\n        }\n      });\n\n      if (!item.Valid) {\n        return;\n      }\n    } // Validation\n\n\n    const parts = item.Name.split('/');\n    const repository = parts[parts.length - 1];\n    const repositoryRegExp = RegExp('^[a-z0-9-_]{2,255}(:[A-Za-z0-9-_.]{1,128})?$');\n    item.Valid = repositoryRegExp.test(repository);\n  };\n\n  $scope.addImageName = function () {\n    $scope.formValues.ImageNames.push({\n      Name: '',\n      Valid: false,\n      Unique: true\n    });\n  };\n\n  $scope.removeImageName = function (index) {\n    $scope.formValues.ImageNames.splice(index, 1);\n\n    for (var i = 0; i < $scope.formValues.ImageNames.length; i++) {\n      $scope.checkName(i);\n    }\n  };\n\n  function buildImageBasedOnBuildType(method, names) {\n    var buildType = $scope.state.BuildType;\n    var dockerfilePath = $scope.formValues.Path;\n\n    if (buildType === 'upload') {\n      var file = $scope.formValues.UploadFile;\n      return BuildService.buildImageFromUpload(names, file, dockerfilePath);\n    } else if (buildType === 'url') {\n      var URL = $scope.formValues.URL;\n      return BuildService.buildImageFromURL(names, URL, dockerfilePath);\n    } else {\n      var dockerfileContent = $scope.formValues.DockerFileContent;\n\n      if ($scope.formValues.AdditionalFiles.length === 0) {\n        return BuildService.buildImageFromDockerfileContent(names, dockerfileContent);\n      } else {\n        var additionalFiles = $scope.formValues.AdditionalFiles;\n        return BuildService.buildImageFromDockerfileContentAndFiles(names, dockerfileContent, additionalFiles);\n      }\n    }\n  }\n\n  $scope.buildImage = buildImage;\n\n  async function buildImage() {\n    return $async(async () => {\n      var buildType = $scope.state.BuildType;\n\n      if (buildType === 'editor' && $scope.formValues.DockerFileContent === '') {\n        $scope.state.formValidationError = 'Dockerfile内容不能为空';\n        return;\n      }\n\n      $scope.state.actionInProgress = true;\n      var imageNames = $scope.formValues.ImageNames.filter(function filterNull(x) {\n        return x.Name;\n      }).map(function getNames(x) {\n        return x.Name;\n      });\n      var nodeName = $scope.formValues.NodeName;\n      HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n\n      try {\n        const data = await buildImageBasedOnBuildType(buildType, imageNames);\n        $scope.buildLogs = data.buildLogs;\n        $scope.state.activeTab = 1;\n\n        if (data.hasError) {\n          Notifications.error('在构建过程中发生了一个错误', {\n            msg: '请检查构建日志输出'\n          });\n        } else {\n          Notifications.success('已成功构建镜像');\n          $scope.state.isEditorDirty = false;\n        }\n      } catch (err) {\n        Notifications.error('失败', err, '无法构建镜像');\n      } finally {\n        $scope.state.actionInProgress = false;\n      }\n    });\n  }\n\n  $scope.validImageNames = function () {\n    if ($scope.formValues.ImageNames.length == 0) {\n      return false;\n    }\n\n    for (var i = 0; i < $scope.formValues.ImageNames.length; i++) {\n      if (!$scope.formValues.ImageNames[i].Valid) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  $scope.editorUpdate = function (cm) {\n    $scope.formValues.DockerFileContent = cm.getValue();\n    $scope.state.isEditorDirty = true;\n  };\n\n  this.uiCanExit = async function () {\n    if ($scope.state.BuildType === 'editor' && $scope.formValues.DockerFileContent && $scope.state.isEditorDirty) {\n      return ModalService.confirmWebEditorDiscard();\n    }\n  };\n\n  $scope.selectAdditionalFiles = function (files) {\n    $scope.formValues.AdditionalFiles = files;\n  };\n}//# sourceURL=webpack-internal:///88741\n");

}),

37391:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\nangular.module('portainer.docker').controller('ImageController', ['$async', '$q', '$scope', '$transition$', '$state', 'Authentication', 'ImageService', 'ImageHelper', 'RegistryService', 'Notifications', 'HttpRequestHelper', 'ModalService', 'FileSaver', 'Blob', 'endpoint', 'EndpointService', 'RegistryModalService', function ($async, $q, $scope, $transition$, $state, Authentication, ImageService, ImageHelper, RegistryService, Notifications, HttpRequestHelper, ModalService, FileSaver, Blob, endpoint, EndpointService, RegistryModalService) {\n  $scope.endpoint = endpoint;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.formValues = {\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_3__.PorImageRegistryModel()\n  };\n  $scope.state = {\n    exportInProgress: false,\n    pullImageValidity: false\n  };\n  $scope.sortType = 'Order';\n  $scope.sortReverse = false;\n\n  $scope.order = function (sortType) {\n    $scope.sortReverse = $scope.sortType === sortType ? !$scope.sortReverse : false;\n    $scope.sortType = sortType;\n  };\n\n  $scope.toggleLayerCommand = function (layerId) {\n    $('#layer-command-expander' + layerId + ' span').toggleClass('glyphicon-plus-sign glyphicon-minus-sign');\n    $('#layer-command-' + layerId + '-short').toggle();\n    $('#layer-command-' + layerId + '-full').toggle();\n  };\n\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullImageValidity = validity;\n  }\n\n  $scope.tagImage = function () {\n    const registryModel = $scope.formValues.RegistryModel;\n    const image = ImageHelper.createImageConfigForContainer(registryModel);\n    ImageService.tagImage($transition$.params().id, image.fromImage).then(function success() {\n      Notifications.success('成功', '已成功标记镜像');\n      $state.go('docker.images.image', {\n        id: $transition$.params().id\n      }, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法标记镜像');\n    });\n  };\n\n  $scope.pushTag = pushTag;\n\n  async function pushTag(repository) {\n    return $async(async () => {\n      try {\n        const registryModel = await RegistryModalService.registryModal(repository, $scope.registries);\n\n        if (registryModel) {\n          $('#uploadResourceHint').show();\n          await ImageService.pushImage(registryModel);\n          Notifications.success('镜像已成功推送', repository);\n        }\n      } catch (err) {\n        Notifications.error('失败', err, '无法将镜像推送到仓库');\n      } finally {\n        $('#uploadResourceHint').hide();\n      }\n    });\n  }\n\n  $scope.pullTag = pullTag;\n\n  async function pullTag(repository) {\n    return $async(async () => {\n      try {\n        const registryModel = await RegistryModalService.registryModal(repository, $scope.registries);\n\n        if (registryModel) {\n          $('#downloadResourceHint').show();\n          await ImageService.pullImage(registryModel);\n          Notifications.success('已成功拉取镜像', repository);\n        }\n      } catch (err) {\n        Notifications.error('失败', err, '无法从仓库中拉取镜像');\n      } finally {\n        $('#downloadResourceHint').hide();\n      }\n    });\n  }\n\n  $scope.removeTag = function (repository) {\n    ImageService.deleteImage(repository, false).then(function success() {\n      if ($scope.image.RepoTags.length === 1) {\n        Notifications.success('已成功删除镜像', repository);\n        $state.go('docker.images', {}, {\n          reload: true\n        });\n      } else {\n        Notifications.success('标记已成功删除', repository);\n        $state.go('docker.images.image', {\n          id: $transition$.params().id\n        }, {\n          reload: true\n        });\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法删除镜像');\n    });\n  };\n\n  $scope.removeImage = function (id) {\n    ImageService.deleteImage(id, false).then(function success() {\n      Notifications.success('已成功删除镜像', id);\n      $state.go('docker.images', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法删除镜像');\n    });\n  };\n\n  function exportImage(image) {\n    HttpRequestHelper.setPortainerAgentTargetHeader(image.NodeName);\n    $scope.state.exportInProgress = true;\n    ImageService.downloadImages([image]).then(function success(data) {\n      var downloadData = new Blob([data.file], {\n        type: 'application/x-tar'\n      });\n      FileSaver.saveAs(downloadData, 'images.tar');\n      Notifications.success('成功', '已成功下载镜像');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法下载镜像');\n    }).finally(function final() {\n      $scope.state.exportInProgress = false;\n    });\n  }\n\n  $scope.exportImage = function (image) {\n    if (image.RepoTags.length === 0 || lodash_es_includes__WEBPACK_IMPORTED_MODULE_2___default()(image.RepoTags, '<none>')) {\n      Notifications.warning('', '无法下载未标记的镜像');\n      return;\n    }\n\n    ModalService.confirmImageExport(function (confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      exportImage(image);\n    });\n  };\n\n  async function initView() {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n\n    try {\n      $scope.registries = await RegistryService.loadRegistriesForDropdown(endpoint.Id);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法加载注册表');\n    }\n\n    $q.all({\n      image: ImageService.image($transition$.params().id),\n      history: ImageService.history($transition$.params().id)\n    }).then(function success(data) {\n      $scope.image = data.image;\n      $scope.history = data.history;\n      $scope.image.Env = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default()($scope.image.Env, (lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default()));\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索镜像详细信息');\n      $state.go('docker.images');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///37391\n");

}),

12107:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n\n\n\n\nangular.module('portainer.docker').controller('ImagesController', ['$scope', '$state', 'Authentication', 'ImageService', 'Notifications', 'ModalService', 'HttpRequestHelper', 'FileSaver', 'Blob', 'endpoint', function ($scope, $state, Authentication, ImageService, Notifications, ModalService, HttpRequestHelper, FileSaver, Blob, endpoint) {\n  $scope.endpoint = endpoint;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.state = {\n    actionInProgress: false,\n    exportInProgress: false,\n    pullRateValid: false\n  };\n  $scope.formValues = {\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_2__.PorImageRegistryModel(),\n    NodeName: null\n  };\n\n  $scope.pullImage = function () {\n    const registryModel = $scope.formValues.RegistryModel;\n    var nodeName = $scope.formValues.NodeName;\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    $scope.state.actionInProgress = true;\n    ImageService.pullImage(registryModel, false).then(function success(data) {\n      var err = data[data.length - 1].errorDetail;\n\n      if (err) {\n        return Notifications.error('失败', err, '无法拉取镜像');\n      }\n\n      Notifications.success('已成功提取镜像', registryModel.Image);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法拉取镜像');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  $scope.confirmRemovalAction = function (selectedItems, force) {\n    ModalService.confirmImageForceRemoval(function (confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      $scope.removeAction(selectedItems, force);\n    });\n  };\n\n  function isAuthorizedToDownload(selectedItems) {\n    for (var i = 0; i < selectedItems.length; i++) {\n      var image = selectedItems[i];\n\n      var untagged = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(image.RepoTags, function (item) {\n        return item.indexOf('<none>') > -1;\n      });\n\n      if (untagged) {\n        Notifications.warning('', '无法下载未标记的镜像');\n        return false;\n      }\n    }\n\n    if (lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(selectedItems, 'NodeName').length > 1) {\n      Notifications.warning('', '不能同时从不同的节点下载镜像');\n      return false;\n    }\n\n    return true;\n  }\n\n  function exportImages(images) {\n    HttpRequestHelper.setPortainerAgentTargetHeader(images[0].NodeName);\n    $scope.state.exportInProgress = true;\n    ImageService.downloadImages(images).then(function success(data) {\n      var downloadData = new Blob([data.file], {\n        type: 'application/x-tar'\n      });\n      FileSaver.saveAs(downloadData, 'images.tar');\n      Notifications.success('成功', '已成功下载镜像');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法下载镜像');\n    }).finally(function final() {\n      $scope.state.exportInProgress = false;\n    });\n  }\n\n  $scope.downloadAction = function (selectedItems) {\n    if (!isAuthorizedToDownload(selectedItems)) {\n      return;\n    }\n\n    ModalService.confirmImageExport(function (confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      exportImages(selectedItems);\n    });\n  };\n\n  $scope.removeAction = function (selectedItems, force) {\n    var actionCount = selectedItems.length;\n    angular.forEach(selectedItems, function (image) {\n      HttpRequestHelper.setPortainerAgentTargetHeader(image.NodeName);\n      ImageService.deleteImage(image.Id, force).then(function success() {\n        Notifications.success('已成功删除镜像', image.Id);\n        var index = $scope.images.indexOf(image);\n        $scope.images.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, '无法删除镜像');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  };\n\n  $scope.offlineMode = false;\n  $scope.getImages = getImages;\n\n  function getImages() {\n    ImageService.images(true).then(function success(data) {\n      $scope.images = data;\n      $scope.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_3__.isOfflineEndpoint)(endpoint);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索镜像');\n      $scope.images = [];\n    });\n  }\n\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullRateValid = validity;\n  }\n\n  function initView() {\n    getImages();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///12107\n");

}),

14521:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n\nangular.module('portainer.docker').controller('ImportImageController', ['$scope', '$state', 'ImageService', 'Notifications', 'HttpRequestHelper', 'Authentication', 'ImageHelper', 'endpoint', function ($scope, $state, ImageService, Notifications, HttpRequestHelper, Authentication, ImageHelper, endpoint) {\n  $scope.state = {\n    actionInProgress: false\n  };\n  $scope.endpoint = endpoint;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.formValues = {\n    UploadFile: null,\n    NodeName: null,\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_0__.PorImageRegistryModel()\n  };\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullImageValidity = validity;\n  }\n\n  async function tagImage(id) {\n    const registryModel = $scope.formValues.RegistryModel;\n\n    if (registryModel.Image) {\n      const image = ImageHelper.createImageConfigForContainer(registryModel);\n\n      try {\n        await ImageService.tagImage(id, image.fromImage);\n      } catch (err) {\n        Notifications.error('失败', err, '无法标记镜像');\n      }\n    }\n  }\n\n  $scope.uploadImage = async function () {\n    $scope.state.actionInProgress = true;\n    var nodeName = $scope.formValues.NodeName;\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    var file = $scope.formValues.UploadFile;\n\n    try {\n      const {\n        data\n      } = await ImageService.uploadImage(file);\n\n      if (data.error) {\n        Notifications.error('失败', data.error, '无法上传镜像');\n      } else if (data.stream) {\n        var regex = /Loaded.*?: (.*?)\\n$/g;\n        var imageIds = regex.exec(data.stream);\n\n        if (imageIds && imageIds.length == 2) {\n          await tagImage(imageIds[1]);\n          $state.go('docker.images.image', {\n            id: imageIds[1]\n          }, {\n            reload: true\n          });\n        }\n\n        Notifications.success('成功', '镜像成功上传');\n      } else {\n        Notifications.success('成功', '上传的tar文件包含多个镜像。因此，提供的标记已被忽略。');\n      }\n    } catch (err) {\n      Notifications.error('失败', err, '无法上传镜像');\n    } finally {\n      $scope.state.actionInProgress = false;\n    }\n  };\n}]);//# sourceURL=webpack-internal:///14521\n");

}),

543:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _components_network_macvlan_form_networkMacvlanFormModel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../components/network-macvlan-form/networkMacvlanFormModel */ 50373);\n\n\n\n\n\n\nangular.module('portainer.docker').controller('CreateNetworkController', ['$q', '$scope', '$state', 'PluginService', 'Notifications', 'NetworkService', 'LabelHelper', 'Authentication', 'ResourceControlService', 'FormValidator', 'HttpRequestHelper', function ($q, $scope, $state, PluginService, Notifications, NetworkService, LabelHelper, Authentication, ResourceControlService, FormValidator, HttpRequestHelper) {\n  $scope.formValues = {\n    DriverOptions: [],\n    IPV4: {\n      Subnet: '',\n      Gateway: '',\n      IPRange: '',\n      AuxiliaryAddresses: []\n    },\n    IPV6: {\n      Subnet: '',\n      Gateway: '',\n      IPRange: '',\n      AuxiliaryAddresses: []\n    },\n    Labels: [],\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__.AccessControlFormData(),\n    NodeName: null,\n    Macvlan: new _components_network_macvlan_form_networkMacvlanFormModel__WEBPACK_IMPORTED_MODULE_5__.MacvlanFormData()\n  };\n  $scope.state = {\n    formValidationError: '',\n    actionInProgress: false\n  };\n  $scope.availableNetworkDrivers = [];\n  $scope.config = {\n    Driver: 'bridge',\n    CheckDuplicate: true,\n    Internal: false,\n    Attachable: false,\n    EnableIPv6: false,\n    // Force IPAM Driver to 'default', should not be required.\n    // See: https://github.com/docker/docker/issues/25735\n    IPAM: {\n      Driver: 'default',\n      Config: []\n    },\n    Labels: {}\n  };\n\n  $scope.addDriverOption = function () {\n    $scope.formValues.DriverOptions.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeDriverOption = function (index) {\n    $scope.formValues.DriverOptions.splice(index, 1);\n  };\n\n  $scope.addLabel = function () {\n    $scope.formValues.Labels.push({\n      key: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLabel = function (index) {\n    $scope.formValues.Labels.splice(index, 1);\n  };\n\n  $scope.addIPV4AuxAddress = function () {\n    $scope.formValues.IPV4.AuxiliaryAddresses.push('');\n  };\n\n  $scope.addIPV6AuxAddress = function () {\n    $scope.formValues.IPV6.AuxiliaryAddresses.push('');\n  };\n\n  $scope.removeIPV4AuxAddress = function (index) {\n    $scope.formValues.IPV4.AuxiliaryAddresses.splice(index, 1);\n    $scope.state.IPV4AuxiliaryAddressesError.splice(index, 1);\n  };\n\n  $scope.removeIPV6AuxAddress = function (index) {\n    $scope.formValues.IPV6.AuxiliaryAddresses.splice(index, 1);\n    $scope.state.IPV6AuxiliaryAddressesError.splice(index, 1);\n  };\n\n  function checkAuxiliaryAddress(excludedIP, gateway) {\n    const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_3___default()(excludedIP, '=');\n\n    if (split.length === 2) {\n      return split[1] === gateway;\n    }\n\n    return excludedIP === gateway;\n  }\n\n  $scope.checkIPV4AuxiliaryAddress = function (index) {\n    $scope.state.IPV4AuxiliaryAddressesError[index] = checkAuxiliaryAddress($scope.formValues.IPV4.AuxiliaryAddresses[index], $scope.formValues.IPV4.Gateway);\n  };\n\n  $scope.checkIPV6AuxiliaryAddress = function (index) {\n    $scope.state.IPV6AuxiliaryAddressesError[index] = checkAuxiliaryAddress($scope.formValues.IPV6.AuxiliaryAddresses[index], $scope.formValues.IPV6.Gateway);\n  };\n\n  $scope.isValid = function () {\n    const validIPV4 = !lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()($scope.state.IPV4AuxiliaryAddressesError, (acc, item) => acc || item, false);\n    const validIPV6 = !lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()($scope.state.IPV6AuxiliaryAddressesError, (acc, item) => acc || item, false);\n    return validIPV4 && validIPV6;\n  };\n\n  function prepareAuxiliaryAddresses(ipamConfig, ipFormValues) {\n    ipamConfig.AuxiliaryAddresses = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(ipFormValues.AuxiliaryAddresses, (auxAddress, index) => {\n      const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_3___default()(auxAddress, '=');\n\n      if (split.length === 2) {\n        ipamConfig.AuxiliaryAddresses[split[0]] = split[1];\n      } else {\n        ipamConfig.AuxiliaryAddresses['device' + index] = auxAddress;\n      }\n    });\n  }\n\n  function prepareIPAMConfiguration(config) {\n    if ($scope.formValues.IPV4.Subnet) {\n      let ipamConfig = {};\n      ipamConfig.Subnet = $scope.formValues.IPV4.Subnet;\n\n      if ($scope.formValues.IPV4.Gateway) {\n        ipamConfig.Gateway = $scope.formValues.IPV4.Gateway;\n      }\n\n      if ($scope.formValues.IPV4.IPRange) {\n        ipamConfig.IPRange = $scope.formValues.IPV4.IPRange;\n      }\n\n      if ($scope.formValues.IPV4.AuxiliaryAddresses.length) {\n        prepareAuxiliaryAddresses(ipamConfig, $scope.formValues.IPV4);\n      }\n\n      config.IPAM.Config.push(ipamConfig);\n    }\n\n    if ($scope.formValues.IPV6.Subnet) {\n      let ipamConfig = {};\n      ipamConfig.Subnet = $scope.formValues.IPV6.Subnet;\n\n      if ($scope.formValues.IPV6.Gateway) {\n        ipamConfig.Gateway = $scope.formValues.IPV6.Gateway;\n      }\n\n      if ($scope.formValues.IPV6.IPRange) {\n        ipamConfig.IPRange = $scope.formValues.IPV6.IPRange;\n      }\n\n      if ($scope.formValues.IPV6.AuxiliaryAddresses.length) {\n        prepareAuxiliaryAddresses(ipamConfig, $scope.formValues.IPV6);\n      }\n\n      config.EnableIPv6 = true;\n      config.IPAM.Config.push(ipamConfig);\n    }\n  }\n\n  function prepareDriverOptions(config) {\n    var options = {};\n    $scope.formValues.DriverOptions.forEach(function (option) {\n      options[option.name] = option.value;\n    });\n    config.Options = options;\n  }\n\n  function prepareLabelsConfig(config) {\n    config.Labels = LabelHelper.fromKeyValueToLabelHash($scope.formValues.Labels);\n  }\n\n  function prepareConfiguration() {\n    var config = angular.copy($scope.config);\n    prepareIPAMConfiguration(config);\n    prepareDriverOptions(config);\n    prepareLabelsConfig(config);\n    return config;\n  }\n\n  function modifyNetworkConfigurationForMacvlanConfigOnly(config) {\n    config.Internal = null;\n    config.Attachable = null;\n    config.ConfigOnly = true;\n    config.Options.parent = $scope.formValues.Macvlan.ParentNetworkCard;\n  }\n\n  function modifyNetworkConfigurationForMacvlanConfigFrom(config, selectedNetworkConfig) {\n    config.ConfigFrom = {\n      Network: selectedNetworkConfig.Name\n    };\n\n    if ($scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n      config.Scope = 'swarm';\n    } else {\n      config.Scope = 'local';\n    }\n  }\n\n  $scope.onChangeInternal = function (enable) {\n    $scope.$evalAsync(() => {\n      $scope.config.Internal = enable;\n    });\n  };\n\n  $scope.onChangeAttachable = function (enable) {\n    $scope.$evalAsync(() => {\n      $scope.config.Attachable = enable;\n    });\n  };\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  function createNetwork(context) {\n    HttpRequestHelper.setPortainerAgentTargetHeader(context.nodeName);\n    HttpRequestHelper.setPortainerAgentManagerOperation(context.managerOperation);\n    $scope.state.actionInProgress = true;\n    NetworkService.create(context.networkConfiguration).then(function success(data) {\n      const userId = context.userDetails.ID;\n      const accessControlData = context.accessControlData;\n      const resourceControl = data.Portainer.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('成功', '已成功创建网络');\n\n      if (context.reload) {\n        $state.go('docker.networks', {}, {\n          reload: true\n        });\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '创建网络时出错');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  $scope.create = function () {\n    var networkConfiguration = prepareConfiguration();\n    var accessControlData = $scope.formValues.AccessControlData;\n    var userDetails = Authentication.getUserDetails();\n    var isAdmin = Authentication.isAdmin();\n\n    if (!validateForm(accessControlData, isAdmin)) {\n      return;\n    }\n\n    var creationContext = {\n      nodeName: $scope.formValues.NodeName,\n      managerOperation: false,\n      networkConfiguration: networkConfiguration,\n      userDetails: userDetails,\n      accessControlData: accessControlData,\n      reload: true\n    };\n\n    if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && $scope.config.Driver === 'overlay') {\n      creationContext.managerOperation = true;\n    }\n\n    if ($scope.config.Driver === 'macvlan') {\n      if ($scope.formValues.Macvlan.Scope === 'local') {\n        modifyNetworkConfigurationForMacvlanConfigOnly(networkConfiguration);\n      } else if ($scope.formValues.Macvlan.Scope === 'swarm') {\n        var selectedNetworkConfig = $scope.formValues.Macvlan.SelectedNetworkConfig;\n        modifyNetworkConfigurationForMacvlanConfigFrom(networkConfiguration, selectedNetworkConfig);\n        creationContext.nodeName = selectedNetworkConfig.NodeName;\n      }\n    }\n\n    if ($scope.config.Driver === 'macvlan' && $scope.formValues.Macvlan.Scope === 'local' && $scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n      var selectedNodes = $scope.formValues.Macvlan.DatatableState.selectedItems;\n      selectedNodes.forEach(function (node, idx) {\n        creationContext.nodeName = node.Hostname;\n        creationContext.reload = idx === selectedNodes.length - 1 ? true : false;\n        createNetwork(creationContext);\n      });\n    } else {\n      createNetwork(creationContext);\n    }\n  };\n\n  function initView() {\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    $scope.state.IPV4AuxiliaryAddressesError = [];\n    $scope.state.IPV6AuxiliaryAddressesError = [];\n    PluginService.networkPlugins(apiVersion < 1.25).then(function success(data) {\n      $scope.availableNetworkDrivers = data;\n      $scope.availableNetworkDrivers = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()($scope.availableNetworkDrivers, driver => driver !== 'host' && driver !== 'null');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索网络驱动程序');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///543\n");

}),

74225:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_toArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/toArray */ 1979);\n/* harmony import */ var lodash_es_toArray__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toArray__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var Docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Docker/helpers/networkHelper */ 69452);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n\n\n\n\n\n\n\n\n\n\nangular.module('portainer.docker').controller('NetworksController', ['$q', '$scope', '$state', 'NetworkService', 'Notifications', 'HttpRequestHelper', 'endpoint', 'AgentService', function ($q, $scope, $state, NetworkService, Notifications, HttpRequestHelper, endpoint, AgentService) {\n  $scope.removeAction = function (selectedItems) {\n    var actionCount = selectedItems.length;\n    angular.forEach(selectedItems, function (network) {\n      HttpRequestHelper.setPortainerAgentTargetHeader(network.NodeName);\n      NetworkService.remove(network.Id).then(function success() {\n        Notifications.success('已成功删除网络', network.Name);\n        var index = $scope.networks.indexOf(network);\n        $scope.networks.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, '无法删除网络');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  };\n\n  $scope.offlineMode = false;\n  $scope.getNetworks = getNetworks;\n\n  function groupSwarmNetworksManagerNodesFirst(networks, agents) {\n    const getRole = item => lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(agents, agent => agent.NodeName === item.NodeName).NodeRole;\n\n    const nonSwarmNetworks = lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(networks, item => item.Scope !== 'swarm');\n\n    const grouped = lodash_es_toArray__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_4___default()(networks, item => item.Id));\n\n    const sorted = lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default()(grouped, arr => lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2___default()(arr, item => getRole(item)));\n\n    const arr = lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default()(sorted, a => {\n      const item = a[0];\n\n      for (let i = 1; i < a.length; i++) {\n        item.Subs.push(a[i]);\n      }\n\n      return item;\n    });\n\n    const res = lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(arr, ...nonSwarmNetworks);\n\n    return res;\n  }\n\n  function getNetworks() {\n    const req = {\n      networks: NetworkService.networks(true, true, true)\n    };\n\n    if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n      req.agents = AgentService.agents();\n    }\n\n    $q.all(req).then(data => {\n      $scope.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_9__.isOfflineEndpoint)(endpoint);\n\n      const networks = lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(data.networks, item => item.Subs = []);\n\n      if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n        $scope.networks = groupSwarmNetworksManagerNodesFirst(data.networks, data.agents);\n      } else {\n        $scope.networks = networks;\n      }\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()($scope.networks, network => {\n        network.IPAM.IPV4Configs = Docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getIPV4Configs(network.IPAM.Config);\n        network.IPAM.IPV6Configs = Docker_helpers_networkHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getIPV6Configs(network.IPAM.Config);\n      });\n    }).catch(err => {\n      $scope.networks = [];\n      Notifications.error('失败', err, '无法检索网络');\n    });\n  }\n\n  function initView() {\n    getNetworks();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///74225\n");

}),

50451:

(function() {

eval("angular.module('portainer.docker').controller('NodeBrowserController', ['$stateParams', 'NodeService', 'HttpRequestHelper', 'Notifications', function NodeBrowserController($stateParams, NodeService, HttpRequestHelper, Notifications) {\n  var ctrl = this;\n  ctrl.$onInit = $onInit;\n\n  function $onInit() {\n    ctrl.nodeId = $stateParams.id;\n    NodeService.node(ctrl.nodeId).then(function onNodeLoaded(node) {\n      HttpRequestHelper.setPortainerAgentTargetHeader(node.Hostname);\n      ctrl.node = node;\n    }).catch(function onError(err) {\n      Notifications.error('Unable to retrieve host information', err);\n    });\n  }\n}]);//# sourceURL=webpack-internal:///50451\n");

}),

83602:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./node-browser.html */ 52707);\n\nangular.module('portainer.docker').component('nodeBrowserView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NodeBrowserController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///83602\n");

}),

29978:

(function() {

eval("angular.module('portainer.docker').controller('NodeDetailsViewController', ['$q', '$stateParams', 'NodeService', 'StateManager', 'AgentService', 'ContainerService', 'Authentication', function NodeDetailsViewController($q, $stateParams, NodeService, StateManager, AgentService, ContainerService, Authentication) {\n  var ctrl = this;\n  ctrl.$onInit = initView;\n  ctrl.state = {\n    isAgent: false,\n    isAdmin: false\n  };\n\n  function initView() {\n    var applicationState = StateManager.getState();\n    ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy;\n    ctrl.state.isAdmin = Authentication.isAdmin();\n    ctrl.state.enableHostManagementFeatures = ctrl.endpoint.SecuritySettings.enableHostManagementFeatures;\n    var fetchJobs = ctrl.state.isAdmin && ctrl.state.isAgent;\n    var nodeId = $stateParams.id;\n    $q.all({\n      node: NodeService.node(nodeId),\n      jobs: fetchJobs ? ContainerService.containers(true, {\n        label: ['io.portainer.job.endpoint']\n      }) : []\n    }).then(function (data) {\n      var node = data.node;\n      ctrl.originalNode = node;\n      ctrl.hostDetails = buildHostDetails(node);\n      ctrl.engineDetails = buildEngineDetails(node);\n      ctrl.nodeDetails = buildNodeDetails(node);\n      ctrl.jobs = data.jobs;\n\n      if (ctrl.state.isAgent) {\n        var agentApiVersion = applicationState.endpoint.agentApiVersion;\n        ctrl.state.agentApiVersion = agentApiVersion;\n\n        if (agentApiVersion < 2 || !ctrl.state.enableHostManagementFeatures) {\n          return;\n        }\n\n        AgentService.hostInfo(node.Hostname).then(function onHostInfoLoad(agentHostInfo) {\n          ctrl.devices = agentHostInfo.PCIDevices;\n          ctrl.disks = agentHostInfo.PhysicalDisks;\n        });\n      }\n    });\n  }\n\n  function buildHostDetails(node) {\n    return {\n      os: {\n        arch: node.PlatformArchitecture,\n        type: node.PlatformOS\n      },\n      name: node.Hostname,\n      totalCPU: node.CPUs / 1e9,\n      totalMemory: node.Memory\n    };\n  }\n\n  function buildEngineDetails(node) {\n    return {\n      releaseVersion: node.EngineVersion,\n      volumePlugins: transformPlugins(node.Plugins, 'Volume'),\n      networkPlugins: transformPlugins(node.Plugins, 'Network'),\n      engineLabels: node.EngineLabels\n    };\n  }\n\n  function buildNodeDetails(node) {\n    return {\n      name: node.Name,\n      role: node.Role,\n      managerAddress: node.ManagerAddr,\n      availability: node.Availability,\n      status: node.Status,\n      nodeLabels: node.Labels\n    };\n  }\n\n  function transformPlugins(pluginsList, type) {\n    return pluginsList.filter(function (plugin) {\n      return plugin.Type === type;\n    }).map(function (plugin) {\n      return plugin.Name;\n    });\n  }\n}]);//# sourceURL=webpack-internal:///29978\n");

}),

74275:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./node-details-view.html */ 89455);\n\nangular.module('portainer.docker').component('nodeDetailsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'NodeDetailsViewController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///74275\n");

}),

77152:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registryAccess.html */ 73675);\n\nangular.module('portainer.docker').component('dockerRegistryAccessView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'DockerRegistryAccessController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///77152\n");

}),

40106:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Portainer_models_access__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/models/access */ 93133);\n\n\nclass DockerRegistryAccessController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, EndpointService, GroupService, RegistryService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.EndpointService = EndpointService;\n    this.GroupService = GroupService;\n    this.RegistryService = RegistryService;\n    this.updateAccess = this.updateAccess.bind(this);\n    this.filterUsers = this.filterUsers.bind(this);\n  }\n\n  updateAccess() {\n    return this.$async(async () => {\n      this.state.actionInProgress = true;\n\n      try {\n        await this.EndpointService.updateRegistryAccess(this.state.endpointId, this.state.registryId, this.registryEndpointAccesses);\n        this.Notifications.success('成功', '访问已成功更新');\n        this.$state.reload();\n      } catch (err) {\n        this.state.actionInProgress = false;\n        this.Notifications.error('失败', err, '无法更新访问');\n      }\n    });\n  }\n\n  filterUsers(users) {\n    const endpointUsers = this.endpoint.UserAccessPolicies;\n    const endpointTeams = this.endpoint.TeamAccessPolicies;\n    const endpointGroupUsers = this.endpointGroup.UserAccessPolicies;\n    const endpointGroupTeams = this.endpointGroup.TeamAccessPolicies;\n    return users.filter(userOrTeam => {\n      const userAccess = userOrTeam instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_0__.UserAccessViewModel && (endpointUsers[userOrTeam.Id] || endpointGroupUsers[userOrTeam.Id]);\n      const teamAccess = userOrTeam instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_0__.TeamAccessViewModel && (endpointTeams[userOrTeam.Id] || endpointGroupTeams[userOrTeam.Id]);\n      return userAccess || teamAccess;\n    });\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.registryTo = window.location.hash.match(/#!\\/\\d+\\/docker\\/swarm\\/registries/) ? 'docker.swarm.registries' : 'docker.host.registries';\n\n      try {\n        this.state = {\n          viewReady: false,\n          actionInProgress: false,\n          endpointId: this.$state.params.endpointId,\n          registryId: this.$state.params.id\n        };\n        this.registry = await this.RegistryService.registry(this.state.registryId, this.state.endpointId);\n        this.registryEndpointAccesses = this.registry.RegistryAccesses[this.state.endpointId] || {};\n        this.endpointGroup = await this.GroupService.group(this.endpoint.GroupId);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法检索注册表详细信息');\n      } finally {\n        this.state.viewReady = true;\n      }\n    });\n  }\n\n}\n\nDockerRegistryAccessController.$inject = [\"$async\", \"$state\", \"Notifications\", \"EndpointService\", \"GroupService\", \"RegistryService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (DockerRegistryAccessController);\nangular.module('portainer.docker').controller('DockerRegistryAccessController', DockerRegistryAccessController);//# sourceURL=webpack-internal:///40106\n");

}),

65968:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n\nangular.module('portainer.docker').controller('CreateSecretController', ['$scope', '$state', 'Notifications', 'SecretService', 'LabelHelper', 'Authentication', 'ResourceControlService', 'FormValidator', function ($scope, $state, Notifications, SecretService, LabelHelper, Authentication, ResourceControlService, FormValidator) {\n  $scope.formValues = {\n    Name: '',\n    Data: '',\n    Labels: [],\n    encodeSecret: true,\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__.AccessControlFormData()\n  };\n  $scope.state = {\n    formValidationError: '',\n    actionInProgress: false\n  };\n  $scope.handleEncodeSecretChange = handleEncodeSecretChange;\n\n  function handleEncodeSecretChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.encodeSecret = checked;\n    });\n  }\n\n  $scope.addLabel = function () {\n    $scope.formValues.Labels.push({\n      key: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLabel = function (index) {\n    $scope.formValues.Labels.splice(index, 1);\n  };\n\n  function prepareLabelsConfig(config) {\n    config.Labels = LabelHelper.fromKeyValueToLabelHash($scope.formValues.Labels);\n  }\n\n  function prepareSecretData(config) {\n    if ($scope.formValues.encodeSecret) {\n      config.Data = btoa(unescape(encodeURIComponent($scope.formValues.Data)));\n    } else {\n      config.Data = $scope.formValues.Data;\n    }\n  }\n\n  function prepareConfiguration() {\n    var config = {};\n    config.Name = $scope.formValues.Name;\n    prepareSecretData(config);\n    prepareLabelsConfig(config);\n    return config;\n  }\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  $scope.create = function () {\n    const accessControlData = $scope.formValues.AccessControlData;\n    const userDetails = Authentication.getUserDetails();\n    const isAdmin = Authentication.isAdmin();\n\n    if (!validateForm(accessControlData, isAdmin)) {\n      return;\n    }\n\n    $scope.state.actionInProgress = true;\n    var secretConfiguration = prepareConfiguration();\n    SecretService.create(secretConfiguration).then(function success(data) {\n      const userId = userDetails.ID;\n      const resourceControl = data.Portainer.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('Success', 'Secret successfully created');\n      $state.go('docker.secrets', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to create secret');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n}]);//# sourceURL=webpack-internal:///65968\n");

}),

20842:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\nangular.module('portainer.docker').controller('SecretController', ['$scope', '$transition$', '$state', 'SecretService', 'Notifications', function ($scope, $transition$, $state, SecretService, Notifications) {\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlType.Secret;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.removeSecret = function removeSecret(secretId) {\n    SecretService.remove(secretId).then(function success() {\n      Notifications.success('Success', 'Secret successfully removed');\n      $state.go('docker.secrets', {});\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to remove secret');\n    });\n  };\n\n  function initView() {\n    SecretService.secret($transition$.params().id).then(function success(data) {\n      $scope.secret = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve secret details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///20842\n");

}),

69654:

(function() {

eval("angular.module('portainer.docker').controller('SecretsController', ['$scope', '$state', 'SecretService', 'Notifications', function ($scope, $state, SecretService, Notifications) {\n  $scope.removeAction = function (selectedItems) {\n    var actionCount = selectedItems.length;\n    angular.forEach(selectedItems, function (secret) {\n      SecretService.remove(secret.Id).then(function success() {\n        Notifications.success('Secret successfully removed', secret.Name);\n        var index = $scope.secrets.indexOf(secret);\n        $scope.secrets.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to remove secret');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  };\n\n  $scope.getSecrets = getSecrets;\n\n  function getSecrets() {\n    SecretService.secrets().then(function success(data) {\n      $scope.secrets = data;\n    }).catch(function error(err) {\n      $scope.secrets = [];\n      Notifications.error('失败', err, 'Unable to retrieve secrets');\n    });\n  }\n\n  function initView() {\n    getSecrets();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///69654\n");

}),

91188:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/uniqWith */ 75345);\n/* harmony import */ var lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/helpers/env-vars */ 93994);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n\n\n\n\n\n\n__webpack_require__(/*! ./includes/update-restart.html */ 74827);\n\n__webpack_require__(/*! ./includes/secret.html */ 61573);\n\n__webpack_require__(/*! ./includes/config.html */ 98876);\n\n__webpack_require__(/*! ./includes/resources-placement.html */ 14714);\n\nangular.module('portainer.docker').controller('CreateServiceController', ['$q', '$scope', '$state', '$timeout', 'Service', 'ServiceHelper', 'ConfigService', 'ConfigHelper', 'SecretHelper', 'SecretService', 'VolumeService', 'NetworkService', 'ImageHelper', 'LabelHelper', 'Authentication', 'ResourceControlService', 'Notifications', 'FormValidator', 'PluginService', 'RegistryService', 'HttpRequestHelper', 'NodeService', 'WebhookService', 'endpoint', function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, ConfigHelper, SecretHelper, SecretService, VolumeService, NetworkService, ImageHelper, LabelHelper, Authentication, ResourceControlService, Notifications, FormValidator, PluginService, RegistryService, HttpRequestHelper, NodeService, WebhookService, endpoint) {\n  $scope.endpoint = endpoint;\n  $scope.formValues = {\n    Name: '',\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_2__.PorImageRegistryModel(),\n    Mode: 'replicated',\n    Replicas: 1,\n    Command: '',\n    EntryPoint: '',\n    WorkingDir: '',\n    User: '',\n    Env: [],\n    Labels: [],\n    ContainerLabels: [],\n    Volumes: [],\n    Network: '',\n    ExtraNetworks: [],\n    HostsEntries: [],\n    Ports: [],\n    Parallelism: 1,\n    PlacementConstraints: [],\n    PlacementPreferences: [],\n    UpdateDelay: '0s',\n    UpdateOrder: 'stop-first',\n    FailureAction: 'pause',\n    Secrets: [],\n    Configs: [],\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__.AccessControlFormData(),\n    CpuLimit: 0,\n    CpuReservation: 0,\n    MemoryLimit: 0,\n    MemoryReservation: 0,\n    MemoryLimitUnit: 'MB',\n    MemoryReservationUnit: 'MB',\n    RestartCondition: 'any',\n    RestartDelay: '5s',\n    RestartMaxAttempts: 0,\n    RestartWindow: '0s',\n    LogDriverName: '',\n    LogDriverOpts: [],\n    Webhook: false\n  };\n  $scope.state = {\n    formValidationError: '',\n    actionInProgress: false,\n    pullImageValidity: false\n  };\n  $scope.allowBindMounts = false;\n  $scope.handleWebHookChange = handleWebHookChange;\n\n  function handleWebHookChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.Webhook = checked;\n    });\n  }\n\n  $scope.handleEnvVarChange = handleEnvVarChange;\n\n  function handleEnvVarChange(value) {\n    $scope.formValues.Env = value;\n  }\n\n  $scope.refreshSlider = function () {\n    $timeout(function () {\n      $scope.$broadcast('rzSliderForceRender');\n    });\n  };\n\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullImageValidity = validity;\n  }\n\n  $scope.addPortBinding = function () {\n    $scope.formValues.Ports.push({\n      PublishedPort: '',\n      TargetPort: '',\n      Protocol: 'tcp',\n      PublishMode: 'ingress'\n    });\n  };\n\n  $scope.removePortBinding = function (index) {\n    $scope.formValues.Ports.splice(index, 1);\n  };\n\n  $scope.addExtraNetwork = function () {\n    $scope.formValues.ExtraNetworks.push({\n      Name: ''\n    });\n  };\n\n  $scope.removeExtraNetwork = function (index) {\n    $scope.formValues.ExtraNetworks.splice(index, 1);\n  };\n\n  $scope.addHostsEntry = function () {\n    $scope.formValues.HostsEntries.push({});\n  };\n\n  $scope.removeHostsEntry = function (index) {\n    $scope.formValues.HostsEntries.splice(index, 1);\n  };\n\n  $scope.addVolume = function () {\n    $scope.formValues.Volumes.push({\n      Source: null,\n      Target: '',\n      ReadOnly: false,\n      Type: 'volume'\n    });\n  };\n\n  $scope.removeVolume = function (index) {\n    $scope.formValues.Volumes.splice(index, 1);\n  };\n\n  $scope.addConfig = function () {\n    $scope.formValues.Configs.push({});\n  };\n\n  $scope.removeConfig = function (index) {\n    $scope.formValues.Configs.splice(index, 1);\n    $scope.checkIfConfigDuplicated();\n  };\n\n  $scope.addSecret = function () {\n    $scope.formValues.Secrets.push({\n      overrideTarget: false\n    });\n  };\n\n  $scope.removeSecret = function (index) {\n    $scope.formValues.Secrets.splice(index, 1);\n    $scope.checkIfSecretDuplicated();\n  };\n\n  $scope.addPlacementConstraint = function () {\n    $scope.formValues.PlacementConstraints.push({\n      key: '',\n      operator: '==',\n      value: ''\n    });\n  };\n\n  $scope.removePlacementConstraint = function (index) {\n    $scope.formValues.PlacementConstraints.splice(index, 1);\n  };\n\n  $scope.addPlacementPreference = function () {\n    $scope.formValues.PlacementPreferences.push({\n      strategy: 'spread',\n      value: ''\n    });\n  };\n\n  $scope.removePlacementPreference = function (index) {\n    $scope.formValues.PlacementPreferences.splice(index, 1);\n  };\n\n  $scope.addLabel = function () {\n    $scope.formValues.Labels.push({\n      key: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLabel = function (index) {\n    $scope.formValues.Labels.splice(index, 1);\n  };\n\n  $scope.addContainerLabel = function () {\n    $scope.formValues.ContainerLabels.push({\n      key: '',\n      value: ''\n    });\n  };\n\n  $scope.removeContainerLabel = function (index) {\n    $scope.formValues.ContainerLabels.splice(index, 1);\n  };\n\n  $scope.addLogDriverOpt = function () {\n    $scope.formValues.LogDriverOpts.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLogDriverOpt = function (index) {\n    $scope.formValues.LogDriverOpts.splice(index, 1);\n  };\n\n  $scope.checkIfSecretDuplicated = function () {\n    $scope.formValues.Secrets.$invalid = false;\n    [...$scope.formValues.Secrets].sort((a, b) => a.model.Id.localeCompare(b.model.Id)).sort((a, b) => {\n      if (a.model.Id === b.model.Id) {\n        $scope.formValues.Secrets.$invalid = true;\n        $scope.formValues.Secrets.$error = 'Secret ' + a.model.Name + ' cannot be assigned multiple times.';\n      }\n    });\n\n    if (!$scope.formValues.Secrets.$invalid) {\n      $scope.formValues.Secrets.$error = '';\n    }\n  };\n\n  $scope.checkIfConfigDuplicated = function () {\n    $scope.formValues.Configs.$invalid = false;\n    [...$scope.formValues.Configs].sort((a, b) => a.model.Id.localeCompare(b.model.Id)).sort((a, b) => {\n      if (a.model.Id === b.model.Id) {\n        $scope.formValues.Configs.$invalid = true;\n        $scope.formValues.Configs.$error = 'Config ' + a.model.Name + ' cannot be assigned multiple times.';\n      }\n    });\n\n    if (!$scope.formValues.Configs.$invalid) {\n      $scope.formValues.Configs.$error = '';\n    }\n  };\n\n  function prepareImageConfig(config, input) {\n    var imageConfig = ImageHelper.createImageConfigForContainer(input.RegistryModel);\n    config.TaskTemplate.ContainerSpec.Image = imageConfig.fromImage;\n  }\n\n  function preparePortsConfig(config, input) {\n    let ports = [];\n    input.Ports.forEach(function (binding) {\n      const port = {\n        Protocol: binding.Protocol,\n        PublishMode: binding.PublishMode\n      };\n\n      if (binding.TargetPort) {\n        port.TargetPort = +binding.TargetPort;\n\n        if (binding.PublishedPort) {\n          port.PublishedPort = +binding.PublishedPort;\n        }\n\n        ports.push(port);\n      }\n    });\n    config.EndpointSpec.Ports = ports;\n  }\n\n  function prepareSchedulingConfig(config, input) {\n    if (input.Mode === 'replicated') {\n      config.Mode.Replicated = {\n        Replicas: input.Replicas\n      };\n    } else {\n      config.Mode.Global = {};\n    }\n  }\n\n  function commandToArray(cmd) {\n    var tokens = [].concat.apply([], cmd.split(\"'\").map(function (v, i) {\n      return i % 2 ? v : v.split(' ');\n    })).filter(Boolean);\n    return tokens;\n  }\n\n  function prepareCommandConfig(config, input) {\n    if (input.EntryPoint) {\n      config.TaskTemplate.ContainerSpec.Command = commandToArray(input.EntryPoint);\n    }\n\n    if (input.Command) {\n      config.TaskTemplate.ContainerSpec.Args = commandToArray(input.Command);\n    }\n\n    if (input.User) {\n      config.TaskTemplate.ContainerSpec.User = input.User;\n    }\n\n    if (input.WorkingDir) {\n      config.TaskTemplate.ContainerSpec.Dir = input.WorkingDir;\n    }\n  }\n\n  function prepareEnvConfig(config, input) {\n    config.TaskTemplate.ContainerSpec.Env = _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_3__.convertToArrayOfStrings(input.Env);\n  }\n\n  function prepareLabelsConfig(config, input) {\n    config.Labels = LabelHelper.fromKeyValueToLabelHash(input.Labels);\n    config.TaskTemplate.ContainerSpec.Labels = LabelHelper.fromKeyValueToLabelHash(input.ContainerLabels);\n  }\n\n  function createMountObjectFromVolume(volumeObject, target, readonly) {\n    return {\n      Target: target,\n      Source: volumeObject.Id,\n      Type: 'volume',\n      ReadOnly: readonly,\n      VolumeOptions: {\n        Labels: volumeObject.Labels,\n        DriverConfig: {\n          Name: volumeObject.Driver,\n          Options: volumeObject.Options\n        }\n      }\n    };\n  }\n\n  function prepareVolumes(config, input) {\n    input.Volumes.forEach(function (volume) {\n      if (volume.Source && volume.Target) {\n        if (volume.Type !== 'volume') {\n          config.TaskTemplate.ContainerSpec.Mounts.push(volume);\n        } else {\n          var volumeObject = volume.Source;\n          var mount = createMountObjectFromVolume(volumeObject, volume.Target, volume.ReadOnly);\n          config.TaskTemplate.ContainerSpec.Mounts.push(mount);\n        }\n      }\n    });\n  }\n\n  function prepareNetworks(config, input) {\n    var networks = [];\n\n    if (input.Network) {\n      networks.push({\n        Target: input.Network\n      });\n    }\n\n    input.ExtraNetworks.forEach(function (network) {\n      networks.push({\n        Target: network.Name\n      });\n    });\n    config.Networks = lodash_es_uniqWith__WEBPACK_IMPORTED_MODULE_1___default()(networks, (lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default()));\n  }\n\n  function prepareHostsEntries(config, input) {\n    var hostsEntries = [];\n\n    if (input.HostsEntries) {\n      input.HostsEntries.forEach(function (host_ip) {\n        if (host_ip.value && host_ip.value.indexOf(':') && host_ip.value.split(':').length === 2) {\n          var keyVal = host_ip.value.split(':'); // Hosts file format, IP_address canonical_hostname\n\n          hostsEntries.push(keyVal[1] + ' ' + keyVal[0]);\n        }\n      });\n\n      if (hostsEntries.length > 0) {\n        config.TaskTemplate.ContainerSpec.Hosts = hostsEntries;\n      }\n    }\n  }\n\n  function prepareUpdateConfig(config, input) {\n    config.UpdateConfig = {\n      Parallelism: input.Parallelism || 0,\n      Delay: ServiceHelper.translateHumanDurationToNanos(input.UpdateDelay) || 0,\n      FailureAction: input.FailureAction,\n      Order: input.UpdateOrder\n    };\n  }\n\n  function prepareRestartPolicy(config, input) {\n    config.TaskTemplate.RestartPolicy = {\n      Condition: input.RestartCondition || 'any',\n      Delay: ServiceHelper.translateHumanDurationToNanos(input.RestartDelay) || 5000000000,\n      MaxAttempts: input.RestartMaxAttempts || 0,\n      Window: ServiceHelper.translateHumanDurationToNanos(input.RestartWindow) || 0\n    };\n  }\n\n  function preparePlacementConfig(config, input) {\n    config.TaskTemplate.Placement.Constraints = ServiceHelper.translateKeyValueToPlacementConstraints(input.PlacementConstraints);\n    config.TaskTemplate.Placement.Preferences = ServiceHelper.translateKeyValueToPlacementPreferences(input.PlacementPreferences);\n  }\n\n  function prepareConfigConfig(config, input) {\n    if (input.Configs) {\n      var configs = [];\n      angular.forEach(input.Configs, function (config) {\n        if (config.model) {\n          var s = ConfigHelper.configConfig(config.model);\n          s.File.Name = config.FileName || s.File.Name;\n          configs.push(s);\n        }\n      });\n      config.TaskTemplate.ContainerSpec.Configs = configs;\n    }\n  }\n\n  function prepareSecretConfig(config, input) {\n    if (input.Secrets) {\n      var secrets = [];\n      angular.forEach(input.Secrets, function (secret) {\n        if (secret.model) {\n          var s = SecretHelper.secretConfig(secret.model);\n          s.File.Name = s.SecretName;\n\n          if (secret.overrideTarget && secret.target && secret.target !== '') {\n            s.File.Name = secret.target;\n          }\n\n          secrets.push(s);\n        }\n      });\n      config.TaskTemplate.ContainerSpec.Secrets = secrets;\n    }\n  }\n\n  function prepareResourcesCpuConfig(config, input) {\n    // CPU Limit\n    if (input.CpuLimit > 0) {\n      config.TaskTemplate.Resources.Limits.NanoCPUs = input.CpuLimit * 1000000000;\n    } // CPU Reservation\n\n\n    if (input.CpuReservation > 0) {\n      config.TaskTemplate.Resources.Reservations.NanoCPUs = input.CpuReservation * 1000000000;\n    }\n  }\n\n  function prepareResourcesMemoryConfig(config, input) {\n    // Memory Limit - Round to 0.125\n    var memoryLimit = (Math.round(input.MemoryLimit * 8) / 8).toFixed(3);\n    memoryLimit *= 1024 * 1024;\n\n    if (input.MemoryLimitUnit === 'GB') {\n      memoryLimit *= 1024;\n    }\n\n    if (memoryLimit > 0) {\n      config.TaskTemplate.Resources.Limits.MemoryBytes = memoryLimit;\n    } // Memory Resevation - Round to 0.125\n\n\n    var memoryReservation = (Math.round(input.MemoryReservation * 8) / 8).toFixed(3);\n    memoryReservation *= 1024 * 1024;\n\n    if (input.MemoryReservationUnit === 'GB') {\n      memoryReservation *= 1024;\n    }\n\n    if (memoryReservation > 0) {\n      config.TaskTemplate.Resources.Reservations.MemoryBytes = memoryReservation;\n    }\n  }\n\n  function prepareLogDriverConfig(config, input) {\n    var logOpts = {};\n\n    if (input.LogDriverName) {\n      config.TaskTemplate.LogDriver = {\n        Name: input.LogDriverName\n      };\n\n      if (input.LogDriverName !== 'none') {\n        input.LogDriverOpts.forEach(function (opt) {\n          if (opt.name) {\n            logOpts[opt.name] = opt.value;\n          }\n        });\n\n        if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n          config.TaskTemplate.LogDriver.Options = logOpts;\n        }\n      }\n    }\n  }\n\n  function prepareConfiguration() {\n    var input = $scope.formValues;\n    var config = {\n      Name: input.Name,\n      TaskTemplate: {\n        ContainerSpec: {\n          Mounts: []\n        },\n        Placement: {},\n        Resources: {\n          Limits: {},\n          Reservations: {}\n        }\n      },\n      Mode: {},\n      EndpointSpec: {}\n    };\n    prepareSchedulingConfig(config, input);\n    prepareImageConfig(config, input);\n    preparePortsConfig(config, input);\n    prepareCommandConfig(config, input);\n    prepareEnvConfig(config, input);\n    prepareLabelsConfig(config, input);\n    prepareVolumes(config, input);\n    prepareNetworks(config, input);\n    prepareHostsEntries(config, input);\n    prepareUpdateConfig(config, input);\n    prepareConfigConfig(config, input);\n    prepareSecretConfig(config, input);\n    preparePlacementConfig(config, input);\n    prepareResourcesCpuConfig(config, input);\n    prepareResourcesMemoryConfig(config, input);\n    prepareRestartPolicy(config, input);\n    prepareLogDriverConfig(config, input);\n    return config;\n  }\n\n  function createNewService(config, accessControlData) {\n    const registryModel = $scope.formValues.RegistryModel;\n    var authenticationDetails = registryModel.Registry.Authentication ? RegistryService.encodedCredentials(registryModel.Registry) : '';\n    HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n    Service.create(config).$promise.then(function success(data) {\n      const serviceId = data.ID;\n      const resourceControl = data.Portainer.ResourceControl;\n      const userId = Authentication.getUserDetails().ID;\n      const rcPromise = ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n      const registryID = $scope.formValues.RegistryModel.Registry.Id;\n      const webhookPromise = $q.when(endpoint.Type !== 4 && $scope.formValues.Webhook && WebhookService.createServiceWebhook(serviceId, endpoint.Id, registryID));\n      return $q.all([rcPromise, webhookPromise]);\n    }).then(function success() {\n      Notifications.success('Success', 'Service successfully created');\n      $state.go('docker.services', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to create service');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin) || $scope.formValues.Secrets.$error || $scope.formValues.Configs.$error;\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  $scope.volumesAreValid = volumesAreValid;\n\n  function volumesAreValid() {\n    const volumes = $scope.formValues.Volumes;\n    return volumes.every(volume => volume.Target && volume.Source);\n  }\n\n  $scope.create = function createService() {\n    var accessControlData = $scope.formValues.AccessControlData;\n\n    if (!validateForm(accessControlData, $scope.isAdmin)) {\n      return;\n    }\n\n    $scope.state.actionInProgress = true;\n    var config = prepareConfiguration();\n    createNewService(config, accessControlData);\n  };\n\n  function initSlidersMaxValuesBasedOnNodeData(nodes) {\n    var maxCpus = 0;\n    var maxMemory = 0;\n\n    for (var n in nodes) {\n      if (nodes[n].CPUs && nodes[n].CPUs > maxCpus) {\n        maxCpus = nodes[n].CPUs;\n      }\n\n      if (nodes[n].Memory && nodes[n].Memory > maxMemory) {\n        maxMemory = nodes[n].Memory;\n      }\n    }\n\n    if (maxCpus > 0) {\n      $scope.state.sliderMaxCpu = maxCpus / 1000000000;\n    } else {\n      $scope.state.sliderMaxCpu = 32;\n    }\n\n    if (maxMemory > 0) {\n      $scope.state.sliderMaxMemory = Math.floor(maxMemory / 1000 / 1000);\n    } else {\n      $scope.state.sliderMaxMemory = 32768;\n    }\n  }\n\n  function initView() {\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    $q.all({\n      volumes: VolumeService.volumes(),\n      networks: NetworkService.networks(true, true, false),\n      secrets: apiVersion >= 1.25 ? SecretService.secrets() : [],\n      configs: apiVersion >= 1.3 ? ConfigService.configs() : [],\n      nodes: NodeService.nodes(),\n      availableLoggingDrivers: PluginService.loggingPlugins(apiVersion < 1.25),\n      allowBindMounts: checkIfAllowedBindMounts()\n    }).then(function success(data) {\n      $scope.availableVolumes = data.volumes;\n      $scope.availableNetworks = data.networks;\n      $scope.availableSecrets = data.secrets;\n      $scope.availableConfigs = data.configs;\n      $scope.availableLoggingDrivers = data.availableLoggingDrivers;\n      initSlidersMaxValuesBasedOnNodeData(data.nodes);\n      $scope.isAdmin = Authentication.isAdmin();\n      $scope.allowBindMounts = data.allowBindMounts;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to initialize view');\n    });\n  }\n\n  initView();\n\n  async function checkIfAllowedBindMounts() {\n    const isAdmin = Authentication.isAdmin();\n    const {\n      allowBindMountsForRegularUsers\n    } = endpoint.SecuritySettings;\n    return isAdmin || allowBindMountsForRegularUsers;\n  }\n}]);//# sourceURL=webpack-internal:///91188\n");

}),

1816:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_some__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/some */ 99432);\n/* harmony import */ var lodash_es_some__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_some__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/get */ 6632);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/helpers/env-vars */ 93994);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\n\n__webpack_require__(/*! ./includes/configs.html */ 74612);\n\n__webpack_require__(/*! ./includes/constraints.html */ 17590);\n\n__webpack_require__(/*! ./includes/container-specs.html */ 83431);\n\n__webpack_require__(/*! ./includes/containerlabels.html */ 33964);\n\n__webpack_require__(/*! ./includes/environmentvariables.html */ 73631);\n\n__webpack_require__(/*! ./includes/hosts.html */ 49394);\n\n__webpack_require__(/*! ./includes/image.html */ 69480);\n\n__webpack_require__(/*! ./includes/logging.html */ 47300);\n\n__webpack_require__(/*! ./includes/mounts.html */ 95765);\n\n__webpack_require__(/*! ./includes/networks.html */ 2224);\n\n__webpack_require__(/*! ./includes/placementPreferences.html */ 82292);\n\n__webpack_require__(/*! ./includes/ports.html */ 31402);\n\n__webpack_require__(/*! ./includes/resources.html */ 95266);\n\n__webpack_require__(/*! ./includes/restart.html */ 418);\n\n__webpack_require__(/*! ./includes/secrets.html */ 13269);\n\n__webpack_require__(/*! ./includes/servicelabels.html */ 91082);\n\n__webpack_require__(/*! ./includes/tasks.html */ 72493);\n\n__webpack_require__(/*! ./includes/updateconfig.html */ 87512);\n\n\n\n\nangular.module('portainer.docker').controller('ServiceController', ['$q', '$scope', '$transition$', '$state', '$location', '$timeout', '$anchorScroll', 'ServiceService', 'ConfigService', 'ConfigHelper', 'SecretService', 'ImageService', 'SecretHelper', 'ServiceHelper', 'LabelHelper', 'TaskService', 'NodeService', 'ContainerService', 'TaskHelper', 'Notifications', 'ModalService', 'PluginService', 'Authentication', 'VolumeService', 'ImageHelper', 'WebhookService', 'clipboard', 'WebhookHelper', 'NetworkService', 'RegistryService', 'endpoint', function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, ServiceService, ConfigService, ConfigHelper, SecretService, ImageService, SecretHelper, ServiceHelper, LabelHelper, TaskService, NodeService, ContainerService, TaskHelper, Notifications, ModalService, PluginService, Authentication, VolumeService, ImageHelper, WebhookService, clipboard, WebhookHelper, NetworkService, RegistryService, endpoint) {\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_9__.ResourceControlType.Service;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.endpoint = endpoint;\n  $scope.state = {\n    updateInProgress: false,\n    deletionInProgress: false,\n    rollbackInProgress: false\n  };\n  $scope.formValues = {\n    RegistryModel: new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_7__.PorImageRegistryModel()\n  };\n  $scope.tasks = [];\n  $scope.availableImages = [];\n  $scope.lastVersion = 0;\n  var originalService = {};\n  var previousServiceValues = [];\n\n  $scope.goToItem = function (hash) {\n    if ($location.hash() !== hash) {\n      $location.hash(hash);\n    } else {\n      $anchorScroll();\n    }\n  };\n\n  $scope.addEnvironmentVariable = function addEnvironmentVariable(service) {\n    service.EnvironmentVariables.push({\n      name: '',\n      value: ''\n    });\n    updateServiceArray(service, 'EnvironmentVariables', service.EnvironmentVariables);\n  };\n\n  $scope.onChangeEnvVars = onChangeEnvVars;\n\n  function onChangeEnvVars(env) {\n    const service = $scope.service;\n    const orgEnv = service.EnvironmentVariables;\n    service.EnvironmentVariables = env.map(v => {\n      const orgVar = orgEnv.find(({\n        name\n      }) => v.name === name);\n      const added = orgVar && orgVar.added;\n      return { ...v,\n        added\n      };\n    });\n    updateServiceArray(service, 'EnvironmentVariables', service.EnvironmentVariables);\n  }\n\n  $scope.addConfig = function addConfig(service, config) {\n    if (config && service.ServiceConfigs.filter(function (serviceConfig) {\n      return serviceConfig.Id === config.Id;\n    }).length === 0) {\n      service.ServiceConfigs.push({\n        Id: config.Id,\n        Name: config.Name,\n        FileName: config.Name,\n        Uid: '0',\n        Gid: '0',\n        Mode: 292\n      });\n      updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n    }\n  };\n\n  $scope.removeConfig = function removeSecret(service, index) {\n    var removedElement = service.ServiceConfigs.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n    }\n  };\n\n  $scope.updateConfig = function updateConfig(service) {\n    updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n  };\n\n  $scope.addSecret = function addSecret(service, newSecret) {\n    if (newSecret.secret) {\n      var filename = newSecret.secret.Name;\n\n      if (newSecret.override) {\n        filename = newSecret.target;\n      }\n\n      if (service.ServiceSecrets.filter(function (serviceSecret) {\n        return serviceSecret.Id === newSecret.secret.Id && serviceSecret.FileName === filename;\n      }).length === 0) {\n        service.ServiceSecrets.push({\n          Id: newSecret.secret.Id,\n          Name: newSecret.secret.Name,\n          FileName: filename,\n          Uid: '0',\n          Gid: '0',\n          Mode: 444\n        });\n        updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets);\n      }\n    }\n  };\n\n  $scope.removeSecret = function removeSecret(service, index) {\n    var removedElement = service.ServiceSecrets.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets);\n    }\n  };\n\n  $scope.addLabel = function addLabel(service) {\n    service.ServiceLabels.push({\n      key: '',\n      value: '',\n      originalValue: ''\n    });\n    updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n  };\n\n  $scope.removeLabel = function removeLabel(service, index) {\n    var removedElement = service.ServiceLabels.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n    }\n  };\n\n  $scope.updateLabel = function updateLabel(service, label) {\n    if (label.value !== label.originalValue || label.key !== label.originalKey) {\n      updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n    }\n  };\n\n  $scope.addContainerLabel = function addContainerLabel(service) {\n    service.ServiceContainerLabels.push({\n      key: '',\n      value: '',\n      originalValue: ''\n    });\n    updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n  };\n\n  $scope.removeContainerLabel = function removeLabel(service, index) {\n    var removedElement = service.ServiceContainerLabels.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n    }\n  };\n\n  $scope.updateContainerLabel = function updateLabel(service, label) {\n    if (label.value !== label.originalValue || label.key !== label.originalKey) {\n      updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n    }\n  };\n\n  $scope.addMount = function addMount(service) {\n    service.ServiceMounts.push({\n      Type: 'volume',\n      Source: null,\n      Target: '',\n      ReadOnly: false\n    });\n    updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n  };\n\n  $scope.removeMount = function removeMount(service, index) {\n    var removedElement = service.ServiceMounts.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n    }\n  };\n\n  $scope.onChangeMountType = function onChangeMountType(service, mount) {\n    mount.Source = null;\n    $scope.updateMount(service, mount);\n  };\n\n  $scope.updateMount = function updateMount(service) {\n    updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n  };\n\n  $scope.addNetwork = function addNetwork(service) {\n    if (!service.Networks) {\n      service.Networks = [];\n    }\n\n    service.Networks.push({\n      Editable: true\n    });\n  };\n\n  $scope.removeNetwork = function removeNetwork(service, index) {\n    var removedElement = service.Networks.splice(index, 1);\n\n    if (removedElement && removedElement.length && removedElement[0].Id) {\n      updateServiceArray(service, 'Networks', service.Networks);\n    }\n  };\n\n  $scope.updateNetwork = function updateNetwork(service) {\n    updateServiceArray(service, 'Networks', service.Networks);\n  };\n\n  $scope.addPlacementConstraint = function addPlacementConstraint(service) {\n    service.ServiceConstraints.push({\n      key: '',\n      operator: '==',\n      value: ''\n    });\n    updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n  };\n\n  $scope.removePlacementConstraint = function removePlacementConstraint(service, index) {\n    var removedElement = service.ServiceConstraints.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n    }\n  };\n\n  $scope.updatePlacementConstraint = function (service) {\n    updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n  };\n\n  $scope.addPlacementPreference = function (service) {\n    service.ServicePreferences.push({\n      strategy: 'spread',\n      value: ''\n    });\n    updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n  };\n\n  $scope.removePlacementPreference = function (service, index) {\n    var removedElement = service.ServicePreferences.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n    }\n  };\n\n  $scope.updatePlacementPreference = function (service) {\n    updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n  };\n\n  $scope.addPublishedPort = function addPublishedPort(service) {\n    if (!service.Ports) {\n      service.Ports = [];\n    }\n\n    service.Ports.push({\n      PublishedPort: '',\n      TargetPort: '',\n      Protocol: 'tcp',\n      PublishMode: 'ingress'\n    });\n  };\n\n  $scope.updatePublishedPort = function updatePublishedPort(service) {\n    updateServiceArray(service, 'Ports', service.Ports);\n  };\n\n  $scope.removePortPublishedBinding = function removePortPublishedBinding(service, index) {\n    var removedElement = service.Ports.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'Ports', service.Ports);\n    }\n  };\n\n  $scope.addLogDriverOpt = function addLogDriverOpt(service) {\n    service.LogDriverOpts.push({\n      key: '',\n      value: '',\n      originalValue: ''\n    });\n    updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n  };\n\n  $scope.removeLogDriverOpt = function removeLogDriverOpt(service, index) {\n    var removedElement = service.LogDriverOpts.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n    }\n  };\n\n  $scope.updateLogDriverOpt = function updateLogDriverOpt(service, variable) {\n    if (variable.value !== variable.originalValue || variable.key !== variable.originalKey) {\n      updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n    }\n  };\n\n  $scope.updateLogDriverName = function updateLogDriverName(service) {\n    updateServiceArray(service, 'LogDriverName', service.LogDriverName);\n  };\n\n  $scope.addHostsEntry = function (service) {\n    if (!service.Hosts) {\n      service.Hosts = [];\n    }\n\n    service.Hosts.push({\n      hostname: '',\n      ip: ''\n    });\n  };\n\n  $scope.removeHostsEntry = function (service, index) {\n    var removedElement = service.Hosts.splice(index, 1);\n\n    if (removedElement !== null) {\n      updateServiceArray(service, 'Hosts', service.Hosts);\n    }\n  };\n\n  $scope.updateHostsEntry = function (service) {\n    updateServiceArray(service, 'Hosts', service.Hosts);\n  };\n\n  $scope.onWebhookChange = function (enabled) {\n    $scope.$evalAsync(() => {\n      $scope.updateWebhook($scope.service);\n      $scope.WebhookExists = enabled;\n    });\n  };\n\n  $scope.updateWebhook = function updateWebhook(service) {\n    if ($scope.WebhookExists) {\n      WebhookService.deleteWebhook($scope.webhookID).then(function success() {\n        $scope.webhookURL = null;\n        $scope.webhookID = null;\n        $scope.WebhookExists = false;\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to delete webhook');\n      });\n    } else {\n      WebhookService.createServiceWebhook(service.Id, endpoint.Id, $scope.initialRegistryID).then(function success(data) {\n        $scope.WebhookExists = true;\n        $scope.webhookID = data.Id;\n        $scope.webhookURL = WebhookHelper.returnWebhookUrl(data.Token);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to create webhook');\n      });\n    }\n  };\n\n  $scope.updateWebhookRegistryId = function () {\n    const newRegistryID = lodash_es_get__WEBPACK_IMPORTED_MODULE_6___default()($scope.formValues.RegistryModel, 'Registry.Id', 0);\n\n    const registryChanged = $scope.initialRegistryID != newRegistryID;\n\n    if ($scope.WebhookExists && registryChanged) {\n      WebhookService.updateServiceWebhook($scope.webhookID, newRegistryID).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to update webhook');\n      });\n    }\n  };\n\n  $scope.copyWebhook = function copyWebhook() {\n    clipboard.copyText($scope.webhookURL);\n    $('#copyNotification').show();\n    $('#copyNotification').fadeOut(2000);\n  };\n\n  $scope.cancelChanges = async function cancelChanges(service, keys) {\n    if (keys) {\n      // clean out the keys only from the list of modified keys\n      for (const key of keys) {\n        if (key === 'Image') {\n          $scope.formValues.RegistryModel = await RegistryService.retrievePorRegistryModelFromRepository(originalService.Image, endpoint.Id);\n        } else {\n          var index = previousServiceValues.indexOf(key);\n\n          if (index >= 0) {\n            previousServiceValues.splice(index, 1);\n          }\n        }\n      }\n    } else {\n      // clean out all changes\n      $scope.formValues.RegistryModel = await RegistryService.retrievePorRegistryModelFromRepository(originalService.Image, endpoint.Id);\n      keys = Object.keys(service);\n      previousServiceValues = [];\n    }\n\n    keys.forEach(function (attribute) {\n      service[attribute] = originalService[attribute]; // reset service values\n    });\n    service.hasChanges = false;\n  };\n\n  $scope.hasChanges = function (service, elements) {\n    var hasChanges = false;\n    elements.forEach(function (key) {\n      if (key === 'Image') {\n        const originalImage = service ? service.Model.Spec.TaskTemplate.ContainerSpec.Image : null;\n        const currentImage = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel).fromImage;\n        hasChanges = hasChanges || originalImage !== currentImage;\n      } else {\n        hasChanges = hasChanges || previousServiceValues.indexOf(key) >= 0;\n      }\n    });\n    return hasChanges;\n  };\n\n  $scope.mountsAreValid = mountsAreValid;\n\n  function mountsAreValid() {\n    const mounts = $scope.service.ServiceMounts;\n    return mounts.every(mount => mount.Source && mount.Target);\n  }\n\n  function buildChanges(service) {\n    var config = ServiceHelper.serviceToConfig(service.Model);\n    config.Name = service.Name;\n    config.Labels = LabelHelper.fromKeyValueToLabelHash(service.ServiceLabels);\n    config.TaskTemplate.ContainerSpec.Env = _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_8__.convertToArrayOfStrings(service.EnvironmentVariables);\n    config.TaskTemplate.ContainerSpec.Labels = LabelHelper.fromKeyValueToLabelHash(service.ServiceContainerLabels);\n\n    if ($scope.hasChanges(service, ['Image'])) {\n      const image = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel);\n      config.TaskTemplate.ContainerSpec.Image = image.fromImage;\n      config.registryId = $scope.formValues.RegistryModel.Registry.Id;\n    } else {\n      config.TaskTemplate.ContainerSpec.Image = service.Image;\n    }\n\n    if ($scope.hasChanges(service, ['Networks'])) {\n      config.Networks = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(service.Networks, item => item.Id && item.Editable), item => ({\n        Target: item.Id\n      }));\n      config.TaskTemplate.Networks = config.Networks;\n    }\n\n    config.TaskTemplate.ContainerSpec.Secrets = service.ServiceSecrets ? service.ServiceSecrets.map(SecretHelper.secretConfig) : [];\n    config.TaskTemplate.ContainerSpec.Configs = service.ServiceConfigs ? service.ServiceConfigs.map(ConfigHelper.configConfig) : [];\n    config.TaskTemplate.ContainerSpec.Hosts = service.Hosts ? ServiceHelper.translateHostnameIPToHostsEntries(service.Hosts) : [];\n\n    if (service.Mode === 'replicated') {\n      config.Mode.Replicated.Replicas = service.Replicas;\n    }\n\n    config.TaskTemplate.ContainerSpec.Mounts = service.ServiceMounts;\n\n    if (typeof config.TaskTemplate.Placement === 'undefined') {\n      config.TaskTemplate.Placement = {};\n    }\n\n    config.TaskTemplate.Placement.Constraints = ServiceHelper.translateKeyValueToPlacementConstraints(service.ServiceConstraints);\n    config.TaskTemplate.Placement.Preferences = ServiceHelper.translateKeyValueToPlacementPreferences(service.ServicePreferences);\n\n    if ($scope.hasChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])) {\n      // Round memory values to 0.125 and convert MB to B\n      var memoryLimit = (Math.round(service.LimitMemoryBytes * 8) / 8).toFixed(3);\n      memoryLimit *= 1024 * 1024;\n      var memoryReservation = (Math.round(service.ReservationMemoryBytes * 8) / 8).toFixed(3);\n      memoryReservation *= 1024 * 1024;\n      config.TaskTemplate.Resources = {\n        Limits: {\n          NanoCPUs: service.LimitNanoCPUs * 1000000000,\n          MemoryBytes: memoryLimit\n        },\n        Reservations: {\n          NanoCPUs: service.ReservationNanoCPUs * 1000000000,\n          MemoryBytes: memoryReservation\n        }\n      };\n    }\n\n    if ($scope.hasChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])) {\n      config.UpdateConfig = {\n        Parallelism: service.UpdateParallelism,\n        Delay: ServiceHelper.translateHumanDurationToNanos(service.UpdateDelay) || 0,\n        FailureAction: service.UpdateFailureAction,\n        Order: service.UpdateOrder\n      };\n    }\n\n    if ($scope.hasChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])) {\n      config.TaskTemplate.RestartPolicy = {\n        Condition: service.RestartCondition,\n        Delay: ServiceHelper.translateHumanDurationToNanos(service.RestartDelay) || 5000000000,\n        MaxAttempts: service.RestartMaxAttempts,\n        Window: ServiceHelper.translateHumanDurationToNanos(service.RestartWindow) || 0\n      };\n    }\n\n    config.TaskTemplate.LogDriver = null;\n\n    if (service.LogDriverName) {\n      config.TaskTemplate.LogDriver = {\n        Name: service.LogDriverName\n      };\n\n      if (service.LogDriverName !== 'none') {\n        var logOpts = ServiceHelper.translateKeyValueToLogDriverOpts(service.LogDriverOpts);\n\n        if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n          config.TaskTemplate.LogDriver.Options = logOpts;\n        }\n      }\n    }\n\n    if (service.Ports) {\n      service.Ports.forEach(function (binding) {\n        if (binding.PublishedPort === null || binding.PublishedPort === '') {\n          delete binding.PublishedPort;\n        }\n      });\n    }\n\n    config.EndpointSpec = {\n      Mode: config.EndpointSpec && config.EndpointSpec.Mode || 'vip',\n      Ports: service.Ports\n    };\n    return service, config;\n  }\n\n  function rollbackService(service) {\n    $scope.state.rollbackInProgress = true;\n    let config = {};\n    service, config = buildChanges(service);\n    ServiceService.update(service, config, 'previous').then(function (data) {\n      if (data.message && data.message.match(/^rpc error:/)) {\n        Notifications.error('失败', data, 'Error');\n      } else {\n        Notifications.success('Success', 'Service successfully rolled back');\n        $scope.cancelChanges({});\n        initView();\n      }\n    }).catch(function (e) {\n      if (e.data.message && e.data.message.includes('does not have a previous spec')) {\n        Notifications.error('失败', {\n          message: 'No previous config to rollback to.'\n        });\n      } else {\n        Notifications.error('失败', e, 'Unable to rollback service');\n      }\n    }).finally(function () {\n      $scope.state.rollbackInProgress = false;\n    });\n  }\n\n  $scope.rollbackService = function (service) {\n    ModalService.confirmWarn({\n      title: 'Rollback service',\n      message: 'Are you sure you want to rollback?',\n      buttons: {\n        confirm: {\n          label: 'Yes',\n          className: 'btn-danger'\n        }\n      },\n      callback: function onConfirm(confirmed) {\n        if (!confirmed) {\n          return;\n        }\n\n        rollbackService(service);\n      }\n    });\n  };\n\n  $scope.setPullImageValidity = setPullImageValidity;\n\n  function setPullImageValidity(validity) {\n    $scope.state.pullImageValidity = validity;\n  }\n\n  $scope.updateService = function updateService(service) {\n    let config = {};\n    service, config = buildChanges(service);\n    ServiceService.update(service, config).then(function (data) {\n      if (data.message && data.message.match(/^rpc error:/)) {\n        Notifications.error('失败', data, 'Error');\n      } else {\n        Notifications.success('Service successfully updated', 'Service updated');\n        $scope.updateWebhookRegistryId();\n      }\n\n      $scope.cancelChanges({});\n      initView();\n    }, function (e) {\n      Notifications.error('失败', e, 'Unable to update service');\n    });\n  };\n\n  $scope.removeService = function () {\n    ModalService.confirmDeletion('你想删除这项服务吗？所有与该服务相关的容器也将被删除。', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      removeService();\n    });\n  };\n\n  function removeService() {\n    $scope.state.deletionInProgress = true;\n    ServiceService.remove($scope.service).then(function success() {\n      return $q.when($scope.webhookID && WebhookService.deleteWebhook($scope.webhookID));\n    }).then(function success() {\n      Notifications.success('Success', 'Service successfully deleted');\n      $state.go('docker.services', {});\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to remove service');\n    }).finally(function final() {\n      $scope.state.deletionInProgress = false;\n    });\n  }\n\n  $scope.forceUpdateService = function (service) {\n    ModalService.confirmServiceForceUpdate('Do you want to force an update of the service? All the tasks associated to the service will be recreated.', function (result) {\n      if (!result) {\n        return;\n      }\n\n      var pullImage = false;\n\n      if (result[0]) {\n        pullImage = true;\n      }\n\n      forceUpdateService(service, pullImage);\n    });\n  };\n\n  function forceUpdateService(service, pullImage) {\n    var config = ServiceHelper.serviceToConfig(service.Model);\n\n    if (pullImage) {\n      config.TaskTemplate.ContainerSpec.Image = ImageHelper.removeDigestFromRepository(config.TaskTemplate.ContainerSpec.Image);\n    } // As explained in https://github.com/docker/swarmkit/issues/2364 ForceUpdate can accept a random\n    // value or an increment of the counter value to force an update.\n\n\n    config.TaskTemplate.ForceUpdate++;\n    $scope.state.updateInProgress = true;\n    ServiceService.update(service, config).then(function success() {\n      Notifications.success('Service successfully updated', service.Name);\n      $scope.cancelChanges({});\n      initView();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to force update service', service.Name);\n    }).finally(function final() {\n      $scope.state.updateInProgress = false;\n    });\n  }\n\n  function translateServiceArrays(service) {\n    service.ServiceSecrets = service.Secrets ? service.Secrets.map(SecretHelper.flattenSecret) : [];\n    service.ServiceConfigs = service.Configs ? service.Configs.map(ConfigHelper.flattenConfig) : [];\n    service.EnvironmentVariables = _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_8__.parseArrayOfStrings(service.Env).map(v => ({ ...v,\n      added: true\n    })).sort((v1, v2) => v1.name > v2.name ? 1 : -1);\n    service.LogDriverOpts = ServiceHelper.translateLogDriverOptsToKeyValue(service.LogDriverOpts);\n    service.ServiceLabels = LabelHelper.fromLabelHashToKeyValue(service.Labels);\n    service.ServiceContainerLabels = LabelHelper.fromLabelHashToKeyValue(service.ContainerLabels);\n    service.ServiceMounts = angular.copy(service.Mounts);\n    service.ServiceConstraints = ServiceHelper.translateConstraintsToKeyValue(service.Constraints);\n    service.ServicePreferences = ServiceHelper.translatePreferencesToKeyValue(service.Preferences);\n    service.Hosts = ServiceHelper.translateHostsEntriesToHostnameIP(service.Hosts);\n  }\n\n  function transformResources(service) {\n    service.LimitNanoCPUs = service.LimitNanoCPUs / 1000000000 || 0;\n    service.ReservationNanoCPUs = service.ReservationNanoCPUs / 1000000000 || 0;\n    service.LimitMemoryBytes = service.LimitMemoryBytes / 1024 / 1024 || 0;\n    service.ReservationMemoryBytes = service.ReservationMemoryBytes / 1024 / 1024 || 0;\n  }\n\n  function transformDurations(service) {\n    service.RestartDelay = ServiceHelper.translateNanosToHumanDuration(service.RestartDelay) || '5s';\n    service.RestartWindow = ServiceHelper.translateNanosToHumanDuration(service.RestartWindow) || '0s';\n    service.UpdateDelay = ServiceHelper.translateNanosToHumanDuration(service.UpdateDelay) || '0s';\n    service.StopGracePeriod = service.StopGracePeriod ? ServiceHelper.translateNanosToHumanDuration(service.StopGracePeriod) : '';\n  }\n\n  function initView() {\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n    var service = null;\n    ServiceService.service($transition$.params().id).then(function success(data) {\n      service = data;\n      $scope.isUpdating = $scope.lastVersion >= service.Version;\n\n      if (!$scope.isUpdating) {\n        $scope.lastVersion = service.Version;\n      }\n\n      transformResources(service);\n      translateServiceArrays(service);\n      transformDurations(service);\n      $scope.service = service;\n      originalService = angular.copy(service);\n      return $q.all({\n        volumes: VolumeService.volumes(),\n        tasks: TaskService.tasks({\n          service: [service.Name]\n        }),\n        containers: agentProxy ? ContainerService.containers() : [],\n        nodes: NodeService.nodes(),\n        secrets: apiVersion >= 1.25 ? SecretService.secrets() : [],\n        configs: apiVersion >= 1.3 ? ConfigService.configs() : [],\n        availableImages: ImageService.images(),\n        availableLoggingDrivers: PluginService.loggingPlugins(apiVersion < 1.25),\n        availableNetworks: NetworkService.networks(true, true, apiVersion >= 1.25),\n        webhooks: WebhookService.webhooks(service.Id, endpoint.Id)\n      });\n    }).then(async function success(data) {\n      $scope.nodes = data.nodes;\n      $scope.configs = data.configs;\n      $scope.secrets = data.secrets;\n      $scope.availableImages = ImageService.getUniqueTagListFromImages(data.availableImages);\n      $scope.availableLoggingDrivers = data.availableLoggingDrivers;\n      $scope.availableVolumes = data.volumes;\n      $scope.allowBindMounts = endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n      $scope.isAdmin = Authentication.isAdmin();\n      $scope.availableNetworks = data.availableNetworks;\n      $scope.swarmNetworks = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()($scope.availableNetworks, network => network.Scope === 'swarm');\n\n      const serviceNetworks = lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default()($scope.service.Model.Spec.Networks || [], $scope.service.Model.Spec.TaskTemplate.Networks || []), 'Target');\n\n      const networks = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(serviceNetworks, ({\n        Target\n      }) => lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(data.availableNetworks, {\n        Id: Target\n      })), Boolean);\n\n      if (lodash_es_some__WEBPACK_IMPORTED_MODULE_0___default()($scope.service.Ports, port => port.PublishMode === 'ingress')) {\n        const ingressNetwork = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()($scope.availableNetworks, network => network.Ingress);\n\n        if (ingressNetwork) {\n          networks.unshift(ingressNetwork);\n        }\n      }\n\n      $scope.service.Networks = await Promise.all(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(networks, async item => {\n        let addr = '';\n\n        if (item.IPAM.Config.length) {\n          addr = item.IPAM.Config[0].Subnet;\n        } else {\n          const network = await NetworkService.network(item.Id);\n          addr = network && network.IPAM && network.IPAM.Config && network.IPAM.Config.length && network.IPAM.Config[0].Subnet || '';\n        }\n\n        return {\n          Id: item.Id,\n          Name: item.Name,\n          Addr: addr,\n          Editable: !item.Ingress\n        };\n      }));\n      originalService.Networks = angular.copy($scope.service.Networks);\n\n      if (data.webhooks.length > 0) {\n        var webhook = data.webhooks[0];\n        $scope.WebhookExists = true;\n        $scope.webhookID = webhook.Id;\n        $scope.webhookURL = WebhookHelper.returnWebhookUrl(webhook.Token);\n      }\n\n      var tasks = data.tasks;\n\n      if (agentProxy) {\n        var containers = data.containers;\n\n        for (var i = 0; i < tasks.length; i++) {\n          var task = tasks[i];\n          TaskHelper.associateContainerToTask(task, containers);\n        }\n      }\n\n      ServiceHelper.associateTasksToService(service, tasks);\n      $scope.tasks = data.tasks; // Set max cpu value\n\n      var maxCpus = 0;\n\n      for (var n in data.nodes) {\n        if (data.nodes[n].CPUs && data.nodes[n].CPUs > maxCpus) {\n          maxCpus = data.nodes[n].CPUs;\n        }\n      }\n\n      if (maxCpus > 0) {\n        $scope.state.sliderMaxCpu = maxCpus / 1000000000;\n      } else {\n        $scope.state.sliderMaxCpu = 32;\n      }\n\n      const image = $scope.service.Model.Spec.TaskTemplate.ContainerSpec.Image;\n      RegistryService.retrievePorRegistryModelFromRepository(image, endpoint.Id).then(model => {\n        $scope.formValues.RegistryModel = model;\n        $scope.initialRegistryID = lodash_es_get__WEBPACK_IMPORTED_MODULE_6___default()(model, 'Registry.Id', 0);\n      }); // Default values\n\n      $scope.state.addSecret = {\n        override: false\n      };\n      $timeout(function () {\n        $anchorScroll();\n      });\n    }).catch(function error(err) {\n      $scope.secrets = [];\n      $scope.configs = [];\n      Notifications.error('失败', err, 'Unable to retrieve service details');\n    });\n  }\n\n  $scope.updateServiceAttribute = updateServiceAttribute;\n\n  function updateServiceAttribute(service, name) {\n    if (service[name] !== originalService[name] || !(name in originalService)) {\n      service.hasChanges = true;\n    }\n\n    previousServiceValues.push(name);\n  }\n\n  $scope.filterNetworks = filterNetworks;\n\n  function filterNetworks(networks, current) {\n    return networks.filter(network => !network.Ingress && (network.Id === current.Id || $scope.service.Networks.every(serviceNetwork => network.Id !== serviceNetwork.Id)));\n  }\n\n  function updateServiceArray(service, name) {\n    previousServiceValues.push(name);\n    service.hasChanges = true;\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///1816\n");

}),

59139:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('ServiceLogsController', ['$scope', '$transition$', '$interval', 'ServiceService', 'Notifications', function ($scope, $transition$, $interval, ServiceService, Notifications) {\n  $scope.state = {\n    refreshRate: 3,\n    lineCount: 100,\n    sinceTimestamp: '',\n    displayTimestamps: false\n  };\n\n  $scope.changeLogCollection = function (logCollectionStatus) {\n    if (!logCollectionStatus) {\n      stopRepeater();\n    } else {\n      setUpdateRepeater();\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    stopRepeater();\n  });\n\n  function stopRepeater() {\n    var repeater = $scope.repeater;\n\n    if (angular.isDefined(repeater)) {\n      $interval.cancel(repeater);\n      repeater = null;\n    }\n  }\n\n  function setUpdateRepeater() {\n    var refreshRate = $scope.state.refreshRate;\n    $scope.repeater = $interval(function () {\n      ServiceService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount).then(function success(data) {\n        $scope.logs = data;\n      }).catch(function error(err) {\n        stopRepeater();\n        Notifications.error('失败', err, 'Unable to retrieve service logs');\n      });\n    }, refreshRate * 1000);\n  }\n\n  function startLogPolling() {\n    ServiceService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount).then(function success(data) {\n      $scope.logs = data;\n      setUpdateRepeater();\n    }).catch(function error(err) {\n      stopRepeater();\n      Notifications.error('失败', err, 'Unable to retrieve service logs');\n    });\n  }\n\n  function initView() {\n    ServiceService.service($transition$.params().id).then(function success(data) {\n      $scope.service = data;\n      startLogPolling();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve service information');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///59139\n");

}),

48566:

(function() {

eval("angular.module('portainer.docker').controller('ServicesController', ['$q', '$scope', 'ServiceService', 'ServiceHelper', 'Notifications', 'TaskService', 'TaskHelper', 'NodeService', 'ContainerService', 'endpoint', function ($q, $scope, ServiceService, ServiceHelper, Notifications, TaskService, TaskHelper, NodeService, ContainerService, endpoint) {\n  $scope.getServices = getServices;\n  $scope.endpoint = endpoint;\n\n  function getServices() {\n    var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n    return $q.all({\n      services: ServiceService.services(),\n      tasks: TaskService.tasks(),\n      containers: agentProxy ? ContainerService.containers(1) : [],\n      nodes: NodeService.nodes()\n    }).then(function success(data) {\n      var services = data.services;\n      var tasks = data.tasks;\n\n      if (agentProxy) {\n        var containers = data.containers;\n\n        for (var j = 0; j < tasks.length; j++) {\n          var task = tasks[j];\n          TaskHelper.associateContainerToTask(task, containers);\n        }\n      }\n\n      for (var i = 0; i < services.length; i++) {\n        var service = services[i];\n        ServiceHelper.associateTasksToService(service, tasks);\n      }\n\n      $scope.nodes = data.nodes;\n      $scope.tasks = tasks;\n      $scope.services = services;\n    }).catch(function error(err) {\n      $scope.services = [];\n      Notifications.error('失败', err, 'Unable to retrieve services');\n    });\n  }\n\n  function initView() {\n    getServices();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///48566\n");

}),

9104:

(function() {

eval("angular.module('portainer.docker').controller('SwarmController', ['$q', '$scope', 'SystemService', 'NodeService', 'Notifications', 'StateManager', 'Authentication', function ($q, $scope, SystemService, NodeService, Notifications, StateManager, Authentication) {\n  $scope.info = {};\n  $scope.docker = {};\n  $scope.swarm = {};\n  $scope.totalCPU = 0;\n  $scope.totalMemory = 0;\n\n  function extractSwarmInfo(info) {\n    // Swarm info is available in SystemStatus object\n    var systemStatus = info.SystemStatus; // Swarm strategy\n\n    $scope.swarm[systemStatus[1][0]] = systemStatus[1][1]; // Swarm filters\n\n    $scope.swarm[systemStatus[2][0]] = systemStatus[2][1]; // Swarm node count\n\n    var nodes = systemStatus[0][1] === 'primary' ? systemStatus[3][1] : systemStatus[4][1];\n    var node_count = parseInt(nodes, 10);\n    $scope.swarm[systemStatus[3][0]] = node_count;\n    $scope.swarm.Status = [];\n    extractNodesInfo(systemStatus, node_count);\n  }\n\n  function extractNodesInfo(info, node_count) {\n    // First information for node1 available at element #4 of SystemStatus if connected to a primary\n    // If connected to a replica, information for node1 is available at element #5\n    // The next 10 elements are information related to the node\n    var node_offset = info[0][1] === 'primary' ? 4 : 5;\n\n    for (let i = 0; i < node_count; i++) {\n      extractNodeInfo(info, node_offset);\n      node_offset += 9;\n    }\n  }\n\n  function extractNodeInfo(info, offset) {\n    var node = {};\n    node.name = info[offset][0];\n    node.ip = info[offset][1];\n    node.Id = info[offset + 1][1];\n    node.status = info[offset + 2][1];\n    node.containers = info[offset + 3][1];\n    node.cpu = info[offset + 4][1].split('/')[1];\n    node.memory = info[offset + 5][1].split('/')[1];\n    node.labels = info[offset + 6][1];\n    node.version = info[offset + 8][1];\n    $scope.swarm.Status.push(node);\n  }\n\n  function processTotalCPUAndMemory(nodes) {\n    var CPU = 0,\n        memory = 0;\n    angular.forEach(nodes, function (node) {\n      CPU += node.CPUs;\n      memory += node.Memory;\n    });\n    $scope.totalCPU = CPU / 1000000000;\n    $scope.totalMemory = memory;\n  }\n\n  $scope.getNodes = getNodes;\n\n  function getNodes() {\n    var provider = $scope.applicationState.endpoint.mode.provider;\n\n    if (provider === 'DOCKER_SWARM_MODE') {\n      NodeService.nodes().then(function (data) {\n        var nodes = data;\n        processTotalCPUAndMemory(nodes);\n        $scope.nodes = nodes;\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to retrieve cluster details');\n      });\n    }\n  }\n\n  function initView() {\n    $scope.isAdmin = Authentication.isAdmin();\n    var provider = $scope.applicationState.endpoint.mode.provider;\n    $q.all({\n      version: SystemService.version(),\n      info: SystemService.info()\n    }).then(function success(data) {\n      $scope.docker = data.version;\n      $scope.info = data.info;\n\n      if (provider === 'DOCKER_SWARM_MODE') {\n        getNodes();\n      } else {\n        extractSwarmInfo(data.info);\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve cluster details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///9104\n");

}),

83456:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\nangular.module('portainer.docker').controller('SwarmVisualizerController', ['$q', '$scope', '$document', '$interval', 'NodeService', 'ServiceService', 'TaskService', 'Notifications', 'LocalStorage', function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskService, Notifications, LocalStorage) {\n  $scope.state = {\n    ShowInformationPanel: true,\n    DisplayOnlyRunningTasks: false,\n    DisplayNodeLabels: false,\n    refreshRate: '5'\n  };\n\n  $scope.handleChangeDisplayOnlyRunningTasks = function handleChangeDisplayOnlyRunningTasks(enabled) {\n    $scope.$evalAsync(() => {\n      $scope.state.DisplayOnlyRunningTasks = enabled;\n      $scope.changeDisplayOnlyRunningTasks();\n    });\n  };\n\n  $scope.handleChangeDisplayNodeLabels = function handleChangeDisplayNodeLabels(enabled) {\n    $scope.$evalAsync(() => {\n      $scope.state.DisplayNodeLabels = enabled;\n      $scope.changeDisplayNodeLabels();\n    });\n  };\n\n  $scope.$on('$destroy', function () {\n    stopRepeater();\n  });\n\n  $scope.changeShowInformationPanel = function (value) {\n    $scope.state.ShowInformationPanel = value;\n    LocalStorage.storeSwarmVisualizerSettings('show_info_panel', value);\n  };\n\n  $scope.changeDisplayOnlyRunningTasks = function () {\n    var value = $scope.state.DisplayOnlyRunningTasks;\n    LocalStorage.storeSwarmVisualizerSettings('display_only_running_tasks', value);\n  };\n\n  $scope.changeDisplayNodeLabels = function () {\n    var value = $scope.state.DisplayNodeLabels;\n    LocalStorage.storeSwarmVisualizerSettings('display_node_labels', value);\n  };\n\n  $scope.changeUpdateRepeater = function () {\n    stopRepeater();\n    setUpdateRepeater();\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(1500);\n    LocalStorage.storeSwarmVisualizerSettings('refresh_rate', $scope.state.refreshRate);\n  };\n\n  function stopRepeater() {\n    var repeater = $scope.repeater;\n\n    if (angular.isDefined(repeater)) {\n      $interval.cancel(repeater);\n      repeater = null;\n    }\n  }\n\n  function setUpdateRepeater() {\n    var refreshRate = $scope.state.refreshRate;\n    $scope.repeater = $interval(function () {\n      $q.all({\n        nodes: NodeService.nodes(),\n        services: ServiceService.services(),\n        tasks: TaskService.tasks()\n      }).then(function success(data) {\n        var nodes = data.nodes;\n        $scope.nodes = nodes;\n        var services = data.services;\n        $scope.services = services;\n        var tasks = data.tasks;\n        $scope.tasks = tasks;\n        prepareVisualizerData(nodes, services, tasks);\n      }).catch(function error(err) {\n        stopRepeater();\n        Notifications.error('失败', err, 'Unable to retrieve cluster information');\n      });\n    }, refreshRate * 1000);\n  }\n\n  function assignServiceInfo(services, tasks) {\n    for (var i = 0; i < services.length; i++) {\n      var service = services[i];\n\n      for (var j = 0; j < tasks.length; j++) {\n        var task = tasks[j];\n\n        if (task.ServiceId === service.Id) {\n          task.ServiceName = service.Name;\n        }\n      }\n    }\n  }\n\n  function assignTasksToNode(nodes, tasks) {\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n      node.Tasks = [];\n\n      for (var j = 0; j < tasks.length; j++) {\n        var task = tasks[j];\n\n        if (task.NodeId === node.Id) {\n          node.Tasks.push(task);\n        }\n      }\n    }\n  }\n\n  function prepareVisualizerData(nodes, services, tasks) {\n    var visualizerData = {};\n    assignServiceInfo(services, tasks);\n    assignTasksToNode(nodes, tasks);\n    visualizerData.nodes = nodes;\n    $scope.visualizerData = visualizerData;\n  }\n\n  function loadState() {\n    var showInfoPanel = LocalStorage.getSwarmVisualizerSettings('show_info_panel');\n    if (showInfoPanel !== undefined && showInfoPanel !== null) $scope.state.ShowInformationPanel = showInfoPanel;\n    var displayOnlyRunningTasks = LocalStorage.getSwarmVisualizerSettings('display_only_running_tasks');\n    if (displayOnlyRunningTasks !== undefined && displayOnlyRunningTasks !== null) $scope.state.DisplayOnlyRunningTasks = displayOnlyRunningTasks;\n    var displayNodeLabels = LocalStorage.getSwarmVisualizerSettings('display_node_labels');\n    if (displayNodeLabels !== undefined && displayNodeLabels !== null) $scope.state.DisplayNodeLabels = displayNodeLabels;\n    var refreshRate = LocalStorage.getSwarmVisualizerSettings('refresh_rate');\n    if (refreshRate !== undefined && refreshRate !== null) $scope.state.refreshRate = refreshRate;\n  }\n\n  function initView() {\n    $q.all({\n      nodes: NodeService.nodes(),\n      services: ServiceService.services(),\n      tasks: TaskService.tasks()\n    }).then(function success(data) {\n      var nodes = data.nodes;\n      $scope.nodes = nodes;\n      var services = data.services;\n      $scope.services = services;\n      var tasks = data.tasks;\n      $scope.tasks = tasks;\n      prepareVisualizerData(nodes, services, tasks);\n      setUpdateRepeater();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to initialize cluster visualizer');\n    });\n    loadState();\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///83456\n");

}),

75349:

(function() {

eval("angular.module('portainer.docker').controller('TaskController', ['$scope', '$transition$', 'TaskService', 'ServiceService', 'Notifications', function ($scope, $transition$, TaskService, ServiceService, Notifications) {\n  function initView() {\n    TaskService.task($transition$.params().id).then(function success(data) {\n      var task = data;\n      $scope.task = task;\n      return ServiceService.service(task.ServiceId);\n    }).then(function success(data) {\n      var service = data;\n      $scope.service = service;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve task details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///75349\n");

}),

93356:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.docker').controller('TaskLogsController', ['$scope', '$transition$', '$interval', 'TaskService', 'ServiceService', 'Notifications', function ($scope, $transition$, $interval, TaskService, ServiceService, Notifications) {\n  $scope.state = {\n    refreshRate: 3,\n    lineCount: 100,\n    sinceTimestamp: '',\n    displayTimestamps: false\n  };\n\n  $scope.changeLogCollection = function (logCollectionStatus) {\n    if (!logCollectionStatus) {\n      stopRepeater();\n    } else {\n      setUpdateRepeater();\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    stopRepeater();\n  });\n\n  function stopRepeater() {\n    var repeater = $scope.repeater;\n\n    if (angular.isDefined(repeater)) {\n      $interval.cancel(repeater);\n      repeater = null;\n    }\n  }\n\n  function setUpdateRepeater() {\n    var refreshRate = $scope.state.refreshRate;\n    $scope.repeater = $interval(function () {\n      TaskService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount).then(function success(data) {\n        $scope.logs = data;\n      }).catch(function error(err) {\n        stopRepeater();\n        Notifications.error('失败', err, 'Unable to retrieve task logs');\n      });\n    }, refreshRate * 1000);\n  }\n\n  function startLogPolling() {\n    TaskService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment__WEBPACK_IMPORTED_MODULE_0___default()($scope.state.sinceTimestamp).unix(), $scope.state.lineCount).then(function success(data) {\n      $scope.logs = data;\n      setUpdateRepeater();\n    }).catch(function error(err) {\n      stopRepeater();\n      Notifications.error('失败', err, 'Unable to retrieve task logs');\n    });\n  }\n\n  function initView() {\n    TaskService.task($transition$.params().id).then(function success(data) {\n      var task = data;\n      $scope.task = task;\n      return ServiceService.service(task.ServiceId);\n    }).then(function success(data) {\n      var service = data;\n      $scope.service = service;\n      startLogPolling();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve task details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///93356\n");

}),

63137:

(function() {

eval("BrowseVolumeController.$inject = [\"$scope\", \"$transition$\", \"StateManager\", \"endpoint\"];\nangular.module('portainer.docker').controller('BrowseVolumeController', BrowseVolumeController);\n/* @ngInject */\n\nfunction BrowseVolumeController($scope, $transition$, StateManager, endpoint) {\n  function initView() {\n    $scope.volumeId = $transition$.params().id;\n    $scope.nodeName = $transition$.params().nodeName;\n    $scope.agentApiVersion = StateManager.getAgentApiVersion();\n    $scope.endpointId = endpoint.Id;\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///63137\n");

}),

61362:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _components_volumesNFSForm_volumesNFSFormModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../components/volumesNFSForm/volumesNFSFormModel */ 57629);\n/* harmony import */ var _components_volumesCIFSForm_volumesCifsFormModel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../components/volumesCIFSForm/volumesCifsFormModel */ 86668);\n\n\n\nangular.module('portainer.docker').controller('CreateVolumeController', ['$q', '$scope', '$state', 'VolumeService', 'PluginService', 'ResourceControlService', 'Authentication', 'Notifications', 'FormValidator', 'HttpRequestHelper', function ($q, $scope, $state, VolumeService, PluginService, ResourceControlService, Authentication, Notifications, FormValidator, HttpRequestHelper) {\n  $scope.formValues = {\n    Driver: 'local',\n    DriverOptions: [],\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__.AccessControlFormData(),\n    NodeName: null,\n    NFSData: new _components_volumesNFSForm_volumesNFSFormModel__WEBPACK_IMPORTED_MODULE_1__.VolumesNFSFormData(),\n    CIFSData: new _components_volumesCIFSForm_volumesCifsFormModel__WEBPACK_IMPORTED_MODULE_2__.VolumesCIFSFormData()\n  };\n  $scope.state = {\n    formValidationError: '',\n    actionInProgress: false\n  };\n  $scope.availableVolumeDrivers = [];\n\n  $scope.addDriverOption = function () {\n    $scope.formValues.DriverOptions.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeDriverOption = function (index) {\n    $scope.formValues.DriverOptions.splice(index, 1);\n  };\n\n  $scope.onUseNFSChange = onUseNFSChange;\n\n  function onUseNFSChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.NFSData.useNFS = checked;\n      $scope.formValues.CIFSData.useCIFS = false;\n    });\n  }\n\n  $scope.onUseCIFSChange = onUseCIFSChange;\n\n  function onUseCIFSChange(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.CIFSData.useCIFS = checked;\n      $scope.formValues.NFSData.useNFS = false;\n    });\n  }\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  function prepareCIFSConfiguration(driverOptions) {\n    const data = $scope.formValues.CIFSData;\n    driverOptions.push({\n      name: 'type',\n      value: 'cifs'\n    });\n    let share = data.share.replace('\\\\', '/');\n\n    if (share[0] !== '/') {\n      share = '/' + share;\n    }\n\n    const device = '//' + data.serverAddress + share;\n    driverOptions.push({\n      name: 'device',\n      value: device\n    });\n    const versionNumber = data.versionsNumber[data.versions.indexOf(data.version)];\n    const options = 'addr=' + data.serverAddress + ',username=' + data.username + ',password=' + data.password + ',vers=' + versionNumber;\n    driverOptions.push({\n      name: 'o',\n      value: options\n    });\n  }\n\n  function prepareNFSConfiguration(driverOptions) {\n    var data = $scope.formValues.NFSData;\n    driverOptions.push({\n      name: 'type',\n      value: 'nfs'\n    });\n    var options = 'addr=' + data.serverAddress + ',' + data.options;\n\n    if (data.version === 'NFS4') {\n      options = options + ',nfsvers=4';\n    }\n\n    driverOptions.push({\n      name: 'o',\n      value: options\n    });\n    var mountPoint = data.mountPoint[0] === ':' ? data.mountPoint : ':' + data.mountPoint;\n    driverOptions.push({\n      name: 'device',\n      value: mountPoint\n    });\n  }\n\n  $scope.create = function () {\n    var name = $scope.formValues.Name;\n    var driver = $scope.formValues.Driver;\n    var driverOptions = $scope.formValues.DriverOptions;\n\n    if ($scope.formValues.NFSData.useNFS) {\n      prepareNFSConfiguration(driverOptions);\n    }\n\n    if ($scope.formValues.CIFSData.useCIFS) {\n      prepareCIFSConfiguration(driverOptions);\n    }\n\n    var volumeConfiguration = VolumeService.createVolumeConfiguration(name, driver, driverOptions);\n    var accessControlData = $scope.formValues.AccessControlData;\n    var userDetails = Authentication.getUserDetails();\n    var isAdmin = Authentication.isAdmin();\n\n    if (!validateForm(accessControlData, isAdmin)) {\n      return;\n    }\n\n    var nodeName = $scope.formValues.NodeName;\n    HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n    $scope.state.actionInProgress = true;\n    VolumeService.createVolume(volumeConfiguration).then(function success(data) {\n      const userId = userDetails.ID;\n      const resourceControl = data.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('成功', '已成功创建存储卷');\n      $state.go('docker.volumes', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '在创建存储卷的过程中发生了一个错误');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function initView() {\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    PluginService.volumePlugins(apiVersion < 1.25).then(function success(data) {\n      $scope.availableVolumeDrivers = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到存储卷驱动');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///61362\n");

}),

28862:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\nangular.module('portainer.docker').controller('VolumeController', ['$scope', '$state', '$transition$', '$q', 'ModalService', 'VolumeService', 'ContainerService', 'Notifications', 'HttpRequestHelper', function ($scope, $state, $transition$, $q, ModalService, VolumeService, ContainerService, Notifications, HttpRequestHelper) {\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlType.Volume;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.removeVolume = function removeVolume() {\n    ModalService.confirmDeletion('你想删除此存储卷吗？', confirmed => {\n      if (confirmed) {\n        VolumeService.remove($scope.volume).then(function success() {\n          Notifications.success('存储卷成功删除', $transition$.params().id);\n          $state.go('docker.volumes', {});\n        }).catch(function error(err) {\n          Notifications.error('失败', err, '无法删除存储卷');\n        });\n      }\n    });\n  };\n\n  function getVolumeDataFromContainer(container, volumeId) {\n    return container.Mounts.find(function (volume) {\n      return volume.Name === volumeId;\n    });\n  }\n\n  function initView() {\n    HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n    VolumeService.volume($transition$.params().id).then(function success(data) {\n      var volume = data;\n      $scope.volume = volume;\n      var containerFilter = {\n        volume: [volume.Id]\n      };\n      return ContainerService.containers(1, containerFilter);\n    }).then(function success(data) {\n      var dataContainers = $scope.isCioDriver ? data.containers : data;\n      var containers = dataContainers.map(function (container) {\n        container.volumeData = getVolumeDataFromContainer(container, $scope.volume.Id);\n        return container;\n      });\n      $scope.containersUsingVolume = containers;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到存储卷的详细信息');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///28862\n");

}),

6002:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n\nangular.module('portainer.docker').controller('VolumesController', ['$q', '$scope', '$state', 'VolumeService', 'ServiceService', 'VolumeHelper', 'Notifications', 'HttpRequestHelper', 'Authentication', 'ModalService', 'endpoint', function ($q, $scope, $state, VolumeService, ServiceService, VolumeHelper, Notifications, HttpRequestHelper, Authentication, ModalService, endpoint) {\n  $scope.removeAction = function (selectedItems) {\n    ModalService.confirmDeletion('您想删除所选的存储卷吗？', confirmed => {\n      if (confirmed) {\n        var actionCount = selectedItems.length;\n        angular.forEach(selectedItems, function (volume) {\n          HttpRequestHelper.setPortainerAgentTargetHeader(volume.NodeName);\n          VolumeService.remove(volume).then(function success() {\n            Notifications.success('存储卷成功删除', volume.Id);\n            var index = $scope.volumes.indexOf(volume);\n            $scope.volumes.splice(index, 1);\n          }).catch(function error(err) {\n            Notifications.error('失败', err, '无法删除存储卷');\n          }).finally(function final() {\n            --actionCount;\n\n            if (actionCount === 0) {\n              $state.reload();\n            }\n          });\n        });\n      }\n    });\n  };\n\n  $scope.offlineMode = false;\n  $scope.getVolumes = getVolumes;\n\n  function getVolumes() {\n    var endpointProvider = $scope.applicationState.endpoint.mode.provider;\n    var endpointRole = $scope.applicationState.endpoint.mode.role;\n    $q.all({\n      attached: VolumeService.volumes({\n        filters: {\n          dangling: ['false']\n        }\n      }),\n      dangling: VolumeService.volumes({\n        filters: {\n          dangling: ['true']\n        }\n      }),\n      services: endpointProvider === 'DOCKER_SWARM_MODE' && endpointRole === 'MANAGER' ? ServiceService.services() : []\n    }).then(function success(data) {\n      var services = data.services;\n      $scope.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__.isOfflineEndpoint)(endpoint);\n      $scope.volumes = data.attached.map(function (volume) {\n        volume.dangling = false;\n        return volume;\n      }).concat(data.dangling.map(function (volume) {\n        volume.dangling = true;\n\n        if (VolumeHelper.isVolumeUsedByAService(volume, services)) {\n          volume.dangling = false;\n        }\n\n        return volume;\n      }));\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到存储卷');\n    });\n  }\n\n  function initView() {\n    getVolumes();\n    $scope.showBrowseAction = $scope.applicationState.endpoint.mode.agentProxy && (Authentication.isAdmin() || endpoint.SecuritySettings.allowVolumeBrowserForRegularUsers);\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///6002\n");

}),

63774:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react-tools/withCurrentUser */ 54269);\n/* harmony import */ var _react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/react-tools/react2angular */ 3731);\n/* harmony import */ var _react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react-tools/withReactQuery */ 65280);\n/* harmony import */ var _react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react-tools/withUIRouter */ 81800);\n/* harmony import */ var _views_edge_stacks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./views/edge-stacks */ 6142);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components */ 90547);\n/* harmony import */ var _EdgeDevices_WaitingRoomView__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./EdgeDevices/WaitingRoomView */ 35799);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./react */ 20654);\n\n\n\n\n\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge', [_views_edge_stacks__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _components__WEBPACK_IMPORTED_MODULE_6__.componentsModule, _react__WEBPACK_IMPORTED_MODULE_8__.reactModule]).component('waitingRoomView', (0,_react_tools_react2angular__WEBPACK_IMPORTED_MODULE_2__.r2a)((0,_react_tools_withUIRouter__WEBPACK_IMPORTED_MODULE_4__.withUIRouter)((0,_react_tools_withReactQuery__WEBPACK_IMPORTED_MODULE_3__.withReactQuery)((0,_react_tools_withCurrentUser__WEBPACK_IMPORTED_MODULE_1__.withCurrentUser)(_EdgeDevices_WaitingRoomView__WEBPACK_IMPORTED_MODULE_7__.WaitingRoomView))), [])).config([\"$stateRegistryProvider\", function config($stateRegistryProvider) {\n  const edge = {\n    name: 'edge',\n    url: '/edge',\n    parent: 'root',\n    abstract: true\n  };\n  const groups = {\n    name: 'edge.groups',\n    url: '/groups',\n    views: {\n      'content@': {\n        component: 'edgeGroupsView'\n      }\n    }\n  };\n  const groupsNew = {\n    name: 'edge.groups.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'createEdgeGroupView'\n      }\n    }\n  };\n  const groupsEdit = {\n    name: 'edge.groups.edit',\n    url: '/:groupId',\n    views: {\n      'content@': {\n        component: 'editEdgeGroupView'\n      }\n    }\n  };\n  const stacks = {\n    name: 'edge.stacks',\n    url: '/stacks',\n    views: {\n      'content@': {\n        component: 'edgeStacksView'\n      }\n    }\n  };\n  const stacksNew = {\n    name: 'edge.stacks.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'createEdgeStackView'\n      }\n    }\n  };\n  const stacksEdit = {\n    name: 'edge.stacks.edit',\n    url: '/:stackId',\n    views: {\n      'content@': {\n        component: 'editEdgeStackView'\n      }\n    },\n    params: {\n      tab: 0\n    }\n  };\n  const edgeJobs = {\n    name: 'edge.jobs',\n    url: '/jobs',\n    views: {\n      'content@': {\n        component: 'edgeJobsView'\n      }\n    }\n  };\n  const edgeJob = {\n    name: 'edge.jobs.job',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'edgeJobView'\n      }\n    },\n    params: {\n      tab: 0\n    }\n  };\n  const edgeJobCreation = {\n    name: 'edge.jobs.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'createEdgeJobView'\n      }\n    }\n  };\n  $stateRegistryProvider.register({\n    name: 'edge.devices',\n    url: '/devices',\n    views: {\n      'content@': {\n        component: 'edgeDevicesView'\n      }\n    }\n  });\n\n  if (false) {}\n\n  $stateRegistryProvider.register(edge);\n  $stateRegistryProvider.register(groups);\n  $stateRegistryProvider.register(groupsNew);\n  $stateRegistryProvider.register(groupsEdit);\n  $stateRegistryProvider.register(stacks);\n  $stateRegistryProvider.register(stacksNew);\n  $stateRegistryProvider.register(stacksEdit);\n  $stateRegistryProvider.register(edgeJobs);\n  $stateRegistryProvider.register(edgeJob);\n  $stateRegistryProvider.register(edgeJobCreation);\n}]);//# sourceURL=webpack-internal:///63774\n");

}),

24381:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AssociatedEndpointsDatatableController\": function() { return /* binding */ AssociatedEndpointsDatatableController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nclass AssociatedEndpointsDatatableController {\n  /* @ngInject */\n  constructor($scope, $controller, DatatableService, PaginationService) {\n    this.extendGenericController($controller, $scope);\n    this.DatatableService = DatatableService;\n    this.PaginationService = PaginationService;\n    this.state = Object.assign(this.state, {\n      orderBy: this.orderBy,\n      loading: true,\n      filteredDataSet: [],\n      totalFilteredDataset: 0,\n      pageNumber: 1\n    });\n    this.onPageChange = this.onPageChange.bind(this);\n    this.paginationChanged = this.paginationChanged.bind(this);\n  }\n\n  extendGenericController($controller, $scope) {\n    // extending the controller overrides the current controller functions\n    const $onInit = this.$onInit.bind(this);\n    const changePaginationLimit = this.changePaginationLimit.bind(this);\n    const onTextFilterChange = this.onTextFilterChange.bind(this);\n    angular__WEBPACK_IMPORTED_MODULE_0___default().extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n    this.$onInit = $onInit;\n    this.changePaginationLimit = changePaginationLimit;\n    this.onTextFilterChange = onTextFilterChange;\n  }\n\n  $onInit() {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    var storedOrder = this.DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = this.DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    this.paginationChanged();\n  }\n\n  $onChanges({\n    updateKey\n  }) {\n    if (updateKey.currentValue && !updateKey.isFirstChange()) {\n      this.paginationChanged();\n    }\n  }\n\n  onPageChange(newPageNumber) {\n    this.state.pageNumber = newPageNumber;\n    this.paginationChanged();\n  }\n  /**\n   * Overridden\n   */\n\n\n  changePaginationLimit() {\n    this.PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n    this.paginationChanged();\n  }\n  /**\n   * Overridden\n   */\n\n\n  onTextFilterChange() {\n    var filterValue = this.state.textFilter;\n    this.DatatableService.setDataTableTextFilters(this.tableKey, filterValue);\n    this.paginationChanged();\n  }\n\n  paginationChanged() {\n    this.state.loading = true;\n    this.state.filteredDataSet = [];\n    const start = (this.state.pageNumber - 1) * this.state.paginatedItemLimit + 1;\n    this.retrievePage(start, this.state.paginatedItemLimit, this.state.textFilter).then(data => {\n      this.state.filteredDataSet = data.endpoints;\n      this.state.totalFilteredDataSet = data.totalCount;\n    }).finally(() => {\n      this.state.loading = false;\n    });\n  }\n\n}\nAssociatedEndpointsDatatableController.$inject = [\"$scope\", \"$controller\", \"DatatableService\", \"PaginationService\"];//# sourceURL=webpack-internal:///24381\n");

}),

34139:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _associatedEndpointsDatatableController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./associatedEndpointsDatatableController */ 24381);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./associatedEndpointsDatatable.html */ 31140);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('associatedEndpointsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _associatedEndpointsDatatableController__WEBPACK_IMPORTED_MODULE_1__.AssociatedEndpointsDatatableController,\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    retrievePage: '<',\n    updateKey: '<'\n  }\n});//# sourceURL=webpack-internal:///34139\n");

}),

267:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeJobFormController\": function() { return /* binding */ EdgeJobFormController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nclass EdgeJobFormController {\n  /* @ngInject */\n  constructor() {\n    this.state = {\n      formValidationError: ''\n    };\n    this.scheduleValues = [{\n      displayed: 'Every hour',\n      cron: '0 * * * *'\n    }, {\n      displayed: 'Every 2 hours',\n      cron: '0 */2 * * *'\n    }, {\n      displayed: 'Every day',\n      cron: '0 0 * * *'\n    }];\n    this.formValues = {\n      datetime: moment__WEBPACK_IMPORTED_MODULE_2___default()(),\n      scheduleValue: this.scheduleValues[0],\n      cronMethod: 'basic',\n      method: 'editor'\n    }; // see https://regexr.com/573i2\n\n    this.cronRegex = /(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\\d+(ns|us|µs|ms|s|m|h))+)|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ){4,6}((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*))/;\n    this.action = this.action.bind(this);\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.associateEndpoint = this.associateEndpoint.bind(this);\n    this.dissociateEndpoint = this.dissociateEndpoint.bind(this);\n  }\n\n  onChangeModel(model) {\n    const defaultTime = moment__WEBPACK_IMPORTED_MODULE_2___default()().add('hours', 1);\n    this.formValues = {\n      datetime: model.CronExpression ? cronToDatetime(model.CronExpression, defaultTime) : defaultTime,\n      scheduleValue: this.formValues.scheduleValue,\n      cronMethod: model.Recurring ? 'advanced' : 'basic',\n      method: this.formValues.method\n    };\n  }\n\n  action() {\n    this.state.formValidationError = '';\n\n    if (this.formValues.method === 'editor' && this.model.FileContent === '') {\n      this.state.formValidationError = 'Script file content must not be empty';\n      return;\n    }\n\n    if (this.formValues.cronMethod === 'basic') {\n      if (!this.model.Recurring && (this.formValues.datetime === undefined || !this.formValues.datetime.isValid())) {\n        this.state.formValidationError = 'Schedule date must not be empty';\n        return;\n      } else if (!this.model.Recurring) {\n        this.model.CronExpression = datetimeToCron(this.formValues.datetime);\n      } else {\n        this.model.CronExpression = this.formValues.scheduleValue.cron;\n      }\n    } else {\n      this.model.Recurring = true;\n    }\n\n    this.formAction(this.formValues.method);\n  }\n\n  editorUpdate(cm) {\n    this.model.FileContent = cm.getValue();\n    this.isEditorDirty = true;\n  }\n\n  associateEndpoint(endpoint) {\n    if (!lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(this.model.Endpoints, endpoint.Id)) {\n      this.model.Endpoints = [...this.model.Endpoints, endpoint.Id];\n    }\n  }\n\n  dissociateEndpoint(endpoint) {\n    this.model.Endpoints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(this.model.Endpoints, id => id !== endpoint.Id);\n  }\n\n  $onInit() {\n    this.onChangeModel(this.model);\n  }\n\n}\nEdgeJobFormController.$inject = [];\n\nfunction cronToDatetime(cron, defaultTime = moment__WEBPACK_IMPORTED_MODULE_2___default()()) {\n  var strings = cron.split(' ');\n\n  if (strings.length > 4) {\n    strings = strings.slice(0, 4);\n  } else {\n    return defaultTime;\n  }\n\n  return moment__WEBPACK_IMPORTED_MODULE_2___default()(cron, 'm H D M');\n}\n\nfunction datetimeToCron(datetime) {\n  var date = moment__WEBPACK_IMPORTED_MODULE_2___default()(datetime);\n  return [date.minutes(), date.hours(), date.date(), date.month() + 1, '*'].join(' ');\n}//# sourceURL=webpack-internal:///267\n");

}),

59788:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeJobFormController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeJobFormController */ 267);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeJobForm.html */ 7422);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeJobForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeJobFormController__WEBPACK_IMPORTED_MODULE_1__.EdgeJobFormController,\n  bindings: {\n    model: '=',\n    groups: '<',\n    tags: '<',\n    addLabelAction: '<',\n    removeLabelAction: '<',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    isEditorDirty: '='\n  }\n});//# sourceURL=webpack-internal:///59788\n");

}),

11314:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeJobResultsDatatableController\": function() { return /* binding */ EdgeJobResultsDatatableController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_some__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/some */ 99432);\n/* harmony import */ var lodash_es_some__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_some__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass EdgeJobResultsDatatableController {\n  /* @ngInject */\n  constructor($controller, $scope, $state) {\n    this.$state = $state;\n    angular__WEBPACK_IMPORTED_MODULE_1___default().extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n  }\n\n  collectLogs(...args) {\n    this.settings.repeater.autoRefresh = true;\n    this.settings.repeater.refreshRate = '5';\n    this.onSettingsRepeaterChange();\n    this.onCollectLogsClick(...args);\n  }\n\n  $onChanges({\n    dataset\n  }) {\n    if (dataset && dataset.currentValue) {\n      this.onDatasetChange(dataset.currentValue);\n    }\n  }\n\n  onDatasetChange(dataset) {\n    const anyCollecting = lodash_es_some__WEBPACK_IMPORTED_MODULE_0___default()(dataset, item => item.LogsStatus === 2);\n\n    this.settings.repeater.autoRefresh = anyCollecting;\n    this.settings.repeater.refreshRate = '5';\n    this.onSettingsRepeaterChange();\n  }\n\n}\nEdgeJobResultsDatatableController.$inject = [\"$controller\", \"$scope\", \"$state\"];//# sourceURL=webpack-internal:///11314\n");

}),

46642:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeJobResultsDatatableController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeJobResultsDatatableController */ 11314);\n/* harmony import */ var _edgeJobResultsDatatable_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edgeJobResultsDatatable.css */ 8098);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeJobResultsDatatable.html */ 88832);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeJobResultsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeJobResultsDatatableController__WEBPACK_IMPORTED_MODULE_1__.EdgeJobResultsDatatableController,\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    onDownloadLogsClick: '<',\n    onCollectLogsClick: '<',\n    onClearLogsClick: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///46642\n");

}),

25758:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeJobsDatatable.html */ 14186);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeJobsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///25758\n");

}),

70830:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EdgeStackDeploymentTypeSelectorController; }\n/* harmony export */ });\n/* harmony import */ var _BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/BoxSelector/common-options/deployment-methods */ 86682);\n\nclass EdgeStackDeploymentTypeSelectorController {\n  /* @ngInject */\n  constructor() {\n    this.deploymentOptions = [{ ..._BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_0__.compose,\n      value: 0\n    }, { ..._BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_0__.kubernetes,\n      value: 1,\n      disabled: () => {\n        return this.hasDockerEndpoint();\n      },\n      tooltip: () => {\n        return this.hasDockerEndpoint() ? 'Cannot use this option with Edge Docker endpoints' : '';\n      }\n    }];\n  }\n\n}\nEdgeStackDeploymentTypeSelectorController.$inject = [];//# sourceURL=webpack-internal:///70830\n");

}),

60559:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"edgeStackDeploymentTypeSelector\": function() { return /* binding */ edgeStackDeploymentTypeSelector; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edge_stack_deployment_type_selector_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edge-stack-deployment-type-selector.controller.js */ 70830);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edge-stack-deployment-type-selector.html */ 23423);\n\n\n\nconst edgeStackDeploymentTypeSelector = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edge_stack_deployment_type_selector_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    value: '<',\n    onChange: '<',\n    hasDockerEndpoint: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeStackDeploymentTypeSelector', edgeStackDeploymentTypeSelector);//# sourceURL=webpack-internal:///60559\n");

}),

67383:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeStackEndpointsDatatableController\": function() { return /* binding */ EdgeStackEndpointsDatatableController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nclass EdgeStackEndpointsDatatableController {\n  /* @ngInject */\n  constructor($async, $scope, $controller, DatatableService, PaginationService, Notifications) {\n    this.extendGenericController($controller, $scope);\n    this.DatatableService = DatatableService;\n    this.PaginationService = PaginationService;\n    this.Notifications = Notifications;\n    this.$async = $async;\n    this.state = Object.assign(this.state, {\n      orderBy: this.orderBy,\n      loading: true,\n      filteredDataSet: [],\n      totalFilteredDataset: 0,\n      pageNumber: 1\n    });\n    this.onPageChange = this.onPageChange.bind(this);\n    this.paginationChanged = this.paginationChanged.bind(this);\n    this.paginationChangedAsync = this.paginationChangedAsync.bind(this);\n    this.statusMap = {\n      1: 'OK',\n      2: 'Error',\n      3: 'Acknowledged'\n    };\n  }\n\n  extendGenericController($controller, $scope) {\n    // extending the controller overrides the current controller functions\n    const $onInit = this.$onInit.bind(this);\n    const changePaginationLimit = this.changePaginationLimit.bind(this);\n    const onTextFilterChange = this.onTextFilterChange.bind(this);\n    angular__WEBPACK_IMPORTED_MODULE_0___default().extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n    this.$onInit = $onInit;\n    this.changePaginationLimit = changePaginationLimit;\n    this.onTextFilterChange = onTextFilterChange;\n  }\n\n  getEndpointStatus(endpointId) {\n    return this.endpointsStatus[endpointId];\n  }\n\n  endpointStatusLabel(endpointId) {\n    const status = this.getEndpointStatus(endpointId);\n    return status ? this.statusMap[status.Type] : 'Pending';\n  }\n\n  endpointStatusError(endpointId) {\n    const status = this.getEndpointStatus(endpointId);\n    return status && status.Error ? status.Error : '-';\n  }\n\n  $onInit() {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    var storedOrder = this.DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = this.DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    this.paginationChanged();\n  }\n\n  onPageChange(newPageNumber) {\n    this.state.pageNumber = newPageNumber;\n    this.paginationChanged();\n  }\n  /**\n   * Overridden\n   */\n\n\n  changePaginationLimit() {\n    this.PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n    this.paginationChanged();\n  }\n  /**\n   * Overridden\n   */\n\n\n  onTextFilterChange() {\n    var filterValue = this.state.textFilter;\n    this.DatatableService.setDataTableTextFilters(this.tableKey, filterValue);\n    this.paginationChanged();\n  }\n\n  paginationChanged() {\n    this.$async(this.paginationChangedAsync);\n  }\n\n  async paginationChangedAsync() {\n    this.state.loading = true;\n    this.state.filteredDataSet = [];\n    const start = (this.state.pageNumber - 1) * this.state.paginatedItemLimit + 1;\n\n    try {\n      const {\n        endpoints,\n        totalCount\n      } = await this.retrievePage(start, this.state.paginatedItemLimit, this.state.textFilter);\n      this.state.filteredDataSet = endpoints;\n      this.state.totalFilteredDataSet = totalCount;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environments');\n    } finally {\n      this.state.loading = false;\n    }\n  }\n\n}\nEdgeStackEndpointsDatatableController.$inject = [\"$async\", \"$scope\", \"$controller\", \"DatatableService\", \"PaginationService\", \"Notifications\"];//# sourceURL=webpack-internal:///67383\n");

}),

91505:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeStackEndpointsDatatableController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeStackEndpointsDatatableController */ 67383);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeStackEndpointsDatatable.html */ 77656);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeStackEndpointsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeStackEndpointsDatatableController__WEBPACK_IMPORTED_MODULE_1__.EdgeStackEndpointsDatatableController,\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    retrievePage: '<',\n    edgeStackId: '<',\n    endpointsStatus: '<'\n  }\n});//# sourceURL=webpack-internal:///91505\n");

}),

794:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeStackStatusController\": function() { return /* binding */ EdgeStackStatusController; }\n/* harmony export */ });\nconst statusMap = {\n  1: 'ok',\n  2: 'error',\n  3: 'acknowledged'\n};\nclass EdgeStackStatusController {\n  $onChanges({\n    stackStatus\n  }) {\n    if (!stackStatus || !stackStatus.currentValue) {\n      return;\n    }\n\n    const aggregateStatus = {\n      ok: 0,\n      error: 0,\n      acknowledged: 0\n    };\n\n    for (let endpointId in stackStatus.currentValue) {\n      const endpoint = stackStatus.currentValue[endpointId];\n      const endpointStatusKey = statusMap[endpoint.Type];\n      aggregateStatus[endpointStatusKey]++;\n    }\n\n    this.status = aggregateStatus;\n  }\n\n}//# sourceURL=webpack-internal:///794\n");

}),

26342:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeStackStatusController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeStackStatusController */ 794);\n/* harmony import */ var _edgeStackStatus_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edgeStackStatus.css */ 57140);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeStackStatus.html */ 53501);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeStackStatus', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeStackStatusController__WEBPACK_IMPORTED_MODULE_1__.EdgeStackStatusController,\n  bindings: {\n    stackStatus: '<'\n  }\n});//# sourceURL=webpack-internal:///26342\n");

}),

70018:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeStacksDatatable.html */ 3942);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeStacksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///70018\n");

}),

83205:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EditEdgeStackFormController\": function() { return /* binding */ EditEdgeStackFormController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/models/endpoint/models */ 13494);\n\nclass EditEdgeStackFormController {\n  /* @ngInject */\n  constructor($scope) {\n    this.$scope = $scope;\n    this.state = {\n      endpointTypes: []\n    };\n    this.fileContents = {\n      0: '',\n      1: ''\n    };\n    this.onChangeGroups = this.onChangeGroups.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onChangeComposeConfig = this.onChangeComposeConfig.bind(this);\n    this.onChangeKubeManifest = this.onChangeKubeManifest.bind(this);\n    this.hasDockerEndpoint = this.hasDockerEndpoint.bind(this);\n    this.hasKubeEndpoint = this.hasKubeEndpoint.bind(this);\n    this.onChangeDeploymentType = this.onChangeDeploymentType.bind(this);\n    this.removeLineBreaks = this.removeLineBreaks.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n  }\n\n  hasKubeEndpoint() {\n    return this.state.endpointTypes.includes(_portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment);\n  }\n\n  hasDockerEndpoint() {\n    return this.state.endpointTypes.includes(_portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment);\n  }\n\n  onChangeGroups(groups) {\n    return this.$scope.$evalAsync(() => {\n      this.model.EdgeGroups = groups;\n      this.checkEndpointTypes(groups);\n    });\n  }\n\n  isFormValid() {\n    return this.model.EdgeGroups.length && this.model.StackFileContent && this.validateEndpointsForDeployment();\n  }\n\n  checkEndpointTypes(groups) {\n    const edgeGroups = groups.map(id => this.edgeGroups.find(e => e.Id === id));\n    this.state.endpointTypes = edgeGroups.flatMap(group => group.EndpointTypes);\n  }\n\n  removeLineBreaks(value) {\n    return value.replace(/(\\r\\n|\\n|\\r)/gm, '');\n  }\n\n  onChangeFileContent(type, value) {\n    const oldValue = this.fileContents[type];\n\n    if (this.removeLineBreaks(oldValue) !== this.removeLineBreaks(value)) {\n      this.model.StackFileContent = value;\n      this.fileContents[type] = value;\n      this.isEditorDirty = true;\n    }\n  }\n\n  onChangeKubeManifest(value) {\n    this.onChangeFileContent(1, value);\n  }\n\n  onChangeComposeConfig(value) {\n    this.onChangeFileContent(0, value);\n  }\n\n  onChangeDeploymentType(deploymentType) {\n    this.model.DeploymentType = deploymentType;\n    this.model.StackFileContent = this.fileContents[deploymentType];\n  }\n\n  validateEndpointsForDeployment() {\n    return this.model.DeploymentType == 0 || !this.hasDockerEndpoint();\n  }\n\n  $onInit() {\n    this.checkEndpointTypes(this.model.EdgeGroups);\n  }\n\n}\nEditEdgeStackFormController.$inject = [\"$scope\"];//# sourceURL=webpack-internal:///83205\n");

}),

56037:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editEdgeStackFormController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editEdgeStackFormController */ 83205);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./editEdgeStackForm.html */ 51367);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('editEdgeStackForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _editEdgeStackFormController__WEBPACK_IMPORTED_MODULE_1__.EditEdgeStackFormController,\n  bindings: {\n    model: '<',\n    actionInProgress: '<',\n    submitAction: '<',\n    edgeGroups: '<',\n    isEditorDirty: '='\n  }\n});//# sourceURL=webpack-internal:///56037\n");

}),

88633:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeGroupFormController\": function() { return /* binding */ EdgeGroupFormController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\n\n\nclass EdgeGroupFormController {\n  /* @ngInject */\n  constructor($async, $scope) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.endpoints = {\n      state: {\n        limit: '10',\n        filter: '',\n        pageNumber: 1,\n        totalCount: 0\n      },\n      value: null\n    };\n    this.associateEndpoint = this.associateEndpoint.bind(this);\n    this.dissociateEndpoint = this.dissociateEndpoint.bind(this);\n    this.getDynamicEndpointsAsync = this.getDynamicEndpointsAsync.bind(this);\n    this.getDynamicEndpoints = this.getDynamicEndpoints.bind(this);\n    this.onChangeTags = this.onChangeTags.bind(this);\n    $scope.$watch(() => this.model, () => {\n      if (this.model.Dynamic) {\n        this.getDynamicEndpoints();\n      }\n    }, true);\n  }\n\n  onChangeTags(value) {\n    return this.$scope.$evalAsync(() => {\n      this.model.TagIds = value;\n    });\n  }\n\n  associateEndpoint(endpoint) {\n    if (!lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(this.model.Endpoints, endpoint.Id)) {\n      this.model.Endpoints = [...this.model.Endpoints, endpoint.Id];\n    }\n  }\n\n  dissociateEndpoint(endpoint) {\n    return this.$async(async () => {\n      const confirmed = await (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_2__.confirmDestructiveAsync)({\n        title: '确认操作',\n        message: '从这个组中删除环境将删除其相应的边缘堆栈',\n        buttons: {\n          cancel: {\n            label: '取消',\n            className: 'btn-default'\n          },\n          confirm: {\n            label: '确认',\n            className: 'btn-primary'\n          }\n        }\n      });\n\n      if (!confirmed) {\n        return;\n      }\n\n      this.model.Endpoints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(this.model.Endpoints, id => id !== endpoint.Id);\n    });\n  }\n\n  getDynamicEndpoints() {\n    return this.$async(this.getDynamicEndpointsAsync);\n  }\n\n  async getDynamicEndpointsAsync() {\n    const {\n      pageNumber,\n      limit,\n      search\n    } = this.endpoints.state;\n    const start = (pageNumber - 1) * limit + 1;\n    const query = {\n      search,\n      types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_3__.EdgeTypes,\n      tagIds: this.model.TagIds,\n      tagsPartialMatch: this.model.PartialMatch\n    };\n    const response = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__.getEnvironments)({\n      start,\n      limit,\n      query\n    });\n    const totalCount = parseInt(response.totalCount, 10);\n    this.endpoints.value = response.value;\n    this.endpoints.state.totalCount = totalCount;\n  }\n\n}\nEdgeGroupFormController.$inject = [\"$async\", \"$scope\"];//# sourceURL=webpack-internal:///88633\n");

}),

36906:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _groupFormController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groupFormController */ 88633);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./groupForm.html */ 68393);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeGroupForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _groupFormController__WEBPACK_IMPORTED_MODULE_1__.EdgeGroupFormController,\n  bindings: {\n    model: '<',\n    groups: '<',\n    formActionLabel: '@',\n    formAction: '<',\n    actionInProgress: '<',\n    loaded: '<',\n    pageType: '@'\n  }\n});//# sourceURL=webpack-internal:///36906\n");

}),

9868:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeGroupsDatatableController\": function() { return /* binding */ EdgeGroupsDatatableController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nclass EdgeGroupsDatatableController {\n  /* @ngInject */\n  constructor($scope, $controller) {\n    const allowSelection = this.allowSelection;\n    angular__WEBPACK_IMPORTED_MODULE_0___default().extend(this, $controller('GenericDatatableController', {\n      $scope: $scope\n    }));\n    this.allowSelection = allowSelection.bind(this);\n  }\n  /**\n   * Override this method to allow/deny selection\n   */\n\n\n  allowSelection(item) {\n    return !item.HasEdgeStack;\n  }\n\n}\nEdgeGroupsDatatableController.$inject = [\"$scope\", \"$controller\"];//# sourceURL=webpack-internal:///9868\n");

}),

36267:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _groupsDatatableController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groupsDatatableController */ 9868);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./groupsDatatable.html */ 48384);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeGroupsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _groupsDatatableController__WEBPACK_IMPORTED_MODULE_1__.EdgeGroupsDatatableController,\n  bindings: {\n    dataset: '<',\n    titleIcon: '@',\n    tableKey: '@',\n    orderBy: '@',\n    removeAction: '<',\n    updateAction: '<',\n    reverseOrder: '<'\n  }\n});//# sourceURL=webpack-internal:///36267\n");

}),

65658:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeGroups', [\"$resource\", \"API_ENDPOINT_EDGE_GROUPS\", function EdgeGroupsFactory($resource, API_ENDPOINT_EDGE_GROUPS) {\n  return $resource(API_ENDPOINT_EDGE_GROUPS + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@Id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///65658\n");

}),

96791:

(function() {

eval("EdgeJobResultsFactory.$inject = [\"$resource\", \"API_ENDPOINT_EDGE_JOBS\"];\nangular.module('portainer.edge').factory('EdgeJobResults', EdgeJobResultsFactory);\n\nfunction EdgeJobResultsFactory($resource, API_ENDPOINT_EDGE_JOBS) {\n  return $resource(API_ENDPOINT_EDGE_JOBS + '/:id/tasks/:taskId/:action', {}, {\n    query: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        id: '@id'\n      }\n    },\n    logFile: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        taskId: '@taskId',\n        action: 'logs'\n      }\n    },\n    clearLogs: {\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        taskId: '@taskId',\n        action: 'logs'\n      }\n    },\n    collectLogs: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        taskId: '@taskId',\n        action: 'logs'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///96791\n");

}),

2056:

(function() {

eval("EdgeJobsFactory.$inject = [\"$resource\", \"API_ENDPOINT_EDGE_JOBS\"];\nangular.module('portainer.edge').factory('EdgeJobs', EdgeJobsFactory);\n\nfunction EdgeJobsFactory($resource, API_ENDPOINT_EDGE_JOBS) {\n  return $resource(API_ENDPOINT_EDGE_JOBS + '/:id/:action', {}, {\n    create: {\n      method: 'POST'\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    file: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'file'\n      }\n    },\n    tasks: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        id: '@id',\n        action: 'tasks'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///2056\n");

}),

86796:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeStacks', [\"$resource\", \"API_ENDPOINT_EDGE_STACKS\", function EdgeStacksFactory($resource, API_ENDPOINT_EDGE_STACKS) {\n  return $resource(API_ENDPOINT_EDGE_STACKS + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    file: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'file'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///86796\n");

}),

42163:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeTemplates', [\"$resource\", \"API_ENDPOINT_EDGE_TEMPLATES\", function EdgeStacksFactory($resource, API_ENDPOINT_EDGE_TEMPLATES) {\n  return $resource(API_ENDPOINT_EDGE_TEMPLATES, {}, {\n    query: {\n      method: 'GET',\n      isArray: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///42163\n");

}),

800:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeGroupService', [\"EdgeGroups\", function EdgeGroupServiceFactory(EdgeGroups) {\n  var service = {};\n\n  service.group = function group(groupId) {\n    return EdgeGroups.get({\n      id: groupId\n    }).$promise;\n  };\n\n  service.groups = function groups() {\n    return EdgeGroups.query({}).$promise;\n  };\n\n  service.remove = function remove(groupId) {\n    return EdgeGroups.remove({\n      id: groupId\n    }).$promise;\n  };\n\n  service.create = function create(group) {\n    return EdgeGroups.create(group).$promise;\n  };\n\n  service.update = function update(group) {\n    return EdgeGroups.update(group).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///800\n");

}),

30221:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_models_schedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/models/schedule */ 82653);\nEdgeJobService.$inject = [\"EdgeJobs\", \"EdgeJobResults\", \"FileUploadService\"];\n\n\n\nfunction EdgeJobService(EdgeJobs, EdgeJobResults, FileUploadService) {\n  var service = {};\n  service.edgeJob = edgeJob;\n\n  async function edgeJob(edgeJobId) {\n    try {\n      return await EdgeJobs.get({\n        id: edgeJobId\n      }).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve edgeJob',\n        err: err\n      };\n    }\n  }\n\n  service.edgeJobs = edgeJobs;\n\n  async function edgeJobs() {\n    try {\n      return await EdgeJobs.query().$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve edgeJobs',\n        err: err\n      };\n    }\n  }\n\n  service.jobResults = jobResults;\n\n  async function jobResults(edgeJobId) {\n    try {\n      return await EdgeJobResults.query({\n        id: edgeJobId\n      }).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve results associated to the edgeJob',\n        err: err\n      };\n    }\n  }\n\n  service.logFile = logFile;\n\n  function logFile(id, taskId) {\n    return EdgeJobResults.logFile({\n      id,\n      taskId\n    }).$promise;\n  }\n\n  service.collectLogs = collectLogs;\n\n  function collectLogs(id, taskId) {\n    return EdgeJobResults.collectLogs({\n      id,\n      taskId\n    }).$promise;\n  }\n\n  service.clearLogs = clearLogs;\n\n  function clearLogs(id, taskId) {\n    return EdgeJobResults.clearLogs({\n      id,\n      taskId\n    }).$promise;\n  }\n\n  service.createEdgeJobFromFileContent = function (model) {\n    var payload = new _portainer_models_schedule__WEBPACK_IMPORTED_MODULE_1__.ScheduleCreateRequest(model);\n    return EdgeJobs.create({\n      method: 'string'\n    }, payload).$promise;\n  };\n\n  service.createEdgeJobFromFileUpload = function (model) {\n    var payload = new _portainer_models_schedule__WEBPACK_IMPORTED_MODULE_1__.ScheduleCreateRequest(model);\n    return FileUploadService.createSchedule(payload);\n  };\n\n  service.updateEdgeJob = function (model) {\n    var payload = new _portainer_models_schedule__WEBPACK_IMPORTED_MODULE_1__.ScheduleUpdateRequest(model);\n    return EdgeJobs.update(payload).$promise;\n  };\n\n  service.remove = function (edgeJobId) {\n    return EdgeJobs.remove({\n      id: edgeJobId\n    }).$promise;\n  };\n\n  service.getScriptFile = function (edgeJobId) {\n    return EdgeJobs.file({\n      id: edgeJobId\n    }).$promise;\n  };\n\n  return service;\n}\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeJobService', EdgeJobService);//# sourceURL=webpack-internal:///30221\n");

}),

27527:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').factory('EdgeStackService', [\"EdgeStacks\", \"FileUploadService\", function EdgeStackServiceFactory(EdgeStacks, FileUploadService) {\n  var service = {};\n\n  service.stack = function stack(id) {\n    return EdgeStacks.get({\n      id\n    }).$promise;\n  };\n\n  service.stacks = function stacks() {\n    return EdgeStacks.query({}).$promise;\n  };\n\n  service.remove = function remove(id) {\n    return EdgeStacks.remove({\n      id\n    }).$promise;\n  };\n\n  service.stackFile = async function stackFile(id) {\n    try {\n      const {\n        StackFileContent\n      } = await EdgeStacks.file({\n        id\n      }).$promise;\n      return StackFileContent;\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve stack content',\n        err\n      };\n    }\n  };\n\n  service.updateStack = async function updateStack(id, stack) {\n    return EdgeStacks.update({\n      id\n    }, stack).$promise;\n  };\n\n  service.createStackFromFileContent = async function createStackFromFileContent(payload) {\n    try {\n      return await EdgeStacks.create({\n        method: 'string'\n      }, payload).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the stack',\n        err\n      };\n    }\n  };\n\n  service.createStackFromFileUpload = async function createStackFromFileUpload(payload, file) {\n    try {\n      return await FileUploadService.createEdgeStack(payload, file);\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the stack',\n        err\n      };\n    }\n  };\n\n  service.createStackFromGitRepository = async function createStackFromGitRepository(payload, repositoryOptions) {\n    try {\n      return await EdgeStacks.create({\n        method: 'repository'\n      }, { ...payload,\n        RepositoryURL: repositoryOptions.RepositoryURL,\n        RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n        FilePathInRepository: repositoryOptions.FilePathInRepository,\n        RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n        RepositoryUsername: repositoryOptions.RepositoryUsername,\n        RepositoryPassword: repositoryOptions.RepositoryPassword\n      }).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the stack',\n        err\n      };\n    }\n  };\n\n  service.update = function update(stack) {\n    return EdgeStacks.update(stack).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///27527\n");

}),

10993:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass EdgeTemplateService {\n  /* @ngInject */\n  constructor(EdgeTemplates) {\n    this.EdgeTemplates = EdgeTemplates;\n  }\n\n  edgeTemplates() {\n    return this.EdgeTemplates.query().$promise;\n  }\n\n  async edgeTemplate(template) {\n    const response = await fetch(template.stackFile);\n\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n\n    return response.text();\n  }\n\n}\n\nEdgeTemplateService.$inject = [\"EdgeTemplates\"];\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').service('EdgeTemplateService', EdgeTemplateService);//# sourceURL=webpack-internal:///10993\n");

}),

44932:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateEdgeGroupController\": function() { return /* binding */ CreateEdgeGroupController; }\n/* harmony export */ });\nclass CreateEdgeGroupController {\n  /* @ngInject */\n  constructor(EdgeGroupService, GroupService, Notifications, $state, $async) {\n    this.EdgeGroupService = EdgeGroupService;\n    this.GroupService = GroupService;\n    this.Notifications = Notifications;\n    this.$state = $state;\n    this.$async = $async;\n    this.state = {\n      actionInProgress: false,\n      loaded: false\n    };\n    this.model = {\n      Name: '',\n      Endpoints: [],\n      Dynamic: false,\n      TagIds: [],\n      PartialMatch: false\n    };\n    this.createGroup = this.createGroup.bind(this);\n    this.createGroupAsync = this.createGroupAsync.bind(this);\n  }\n\n  async $onInit() {\n    const endpointGroups = await this.GroupService.groups();\n    this.endpointGroups = endpointGroups;\n    this.state.loaded = true;\n  }\n\n  createGroup() {\n    return this.$async(this.createGroupAsync);\n  }\n\n  async createGroupAsync() {\n    this.state.actionInProgress = true;\n\n    try {\n      await this.EdgeGroupService.create(this.model);\n      this.Notifications.success('Success', 'Edge group successfully created');\n      this.$state.go('edge.groups');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create edge group');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n}\nCreateEdgeGroupController.$inject = [\"EdgeGroupService\", \"GroupService\", \"Notifications\", \"$state\", \"$async\"];//# sourceURL=webpack-internal:///44932\n");

}),

35146:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _createEdgeGroupViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createEdgeGroupViewController */ 44932);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createEdgeGroupView.html */ 4690);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('createEdgeGroupView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _createEdgeGroupViewController__WEBPACK_IMPORTED_MODULE_1__.CreateEdgeGroupController\n});//# sourceURL=webpack-internal:///35146\n");

}),

62044:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeGroupsController\": function() { return /* binding */ EdgeGroupsController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n\nclass EdgeGroupsController {\n  /* @ngInject */\n  constructor($async, $state, EdgeGroupService, Notifications) {\n    this.$async = $async;\n    this.$state = $state;\n    this.EdgeGroupService = EdgeGroupService;\n    this.Notifications = Notifications;\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n  }\n\n  async $onInit() {\n    try {\n      this.items = await this.EdgeGroupService.groups();\n    } catch (err) {\n      this.items = [];\n      this.Notifications.error('失败', err, 'Unable to retrieve Edge groups');\n    }\n  }\n\n  removeAction(selectedItems) {\n    return this.$async(this.removeActionAsync, selectedItems);\n  }\n\n  async removeActionAsync(selectedItems) {\n    for (let item of selectedItems) {\n      try {\n        await this.EdgeGroupService.remove(item.Id);\n        this.Notifications.success('Edge Group successfully removed', item.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()(this.items, item);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to remove Edge Group');\n      }\n    }\n\n    this.$state.reload();\n  }\n\n}\nEdgeGroupsController.$inject = [\"$async\", \"$state\", \"EdgeGroupService\", \"Notifications\"];//# sourceURL=webpack-internal:///62044\n");

}),

45359:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeGroupsViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeGroupsViewController */ 62044);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeGroupsView.html */ 52934);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeGroupsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeGroupsViewController__WEBPACK_IMPORTED_MODULE_1__.EdgeGroupsController\n});//# sourceURL=webpack-internal:///45359\n");

}),

23794:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EditEdgeGroupController\": function() { return /* binding */ EditEdgeGroupController; }\n/* harmony export */ });\nclass EditEdgeGroupController {\n  /* @ngInject */\n  constructor(EdgeGroupService, GroupService, Notifications, $state, $async) {\n    this.EdgeGroupService = EdgeGroupService;\n    this.GroupService = GroupService;\n    this.Notifications = Notifications;\n    this.$state = $state;\n    this.$async = $async;\n    this.state = {\n      actionInProgress: false,\n      loaded: false\n    };\n    this.updateGroup = this.updateGroup.bind(this);\n    this.updateGroupAsync = this.updateGroupAsync.bind(this);\n  }\n\n  async $onInit() {\n    const [endpointGroups, group] = await Promise.all([this.GroupService.groups(), this.EdgeGroupService.group(this.$state.params.groupId)]);\n\n    if (!group) {\n      this.Notifications.error('Failed to find edge group', {});\n      this.$state.go('edge.groups');\n    }\n\n    this.endpointGroups = endpointGroups;\n    this.model = group;\n    this.state.loaded = true;\n  }\n\n  updateGroup() {\n    return this.$async(this.updateGroupAsync);\n  }\n\n  async updateGroupAsync() {\n    this.state.actionInProgress = true;\n\n    try {\n      await this.EdgeGroupService.update(this.model);\n      this.Notifications.success('Success', 'Edge group successfully updated');\n      this.$state.go('edge.groups');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update edge group');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n}\nEditEdgeGroupController.$inject = [\"EdgeGroupService\", \"GroupService\", \"Notifications\", \"$state\", \"$async\"];//# sourceURL=webpack-internal:///23794\n");

}),

58188:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editEdgeGroupViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editEdgeGroupViewController */ 23794);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./editEdgeGroupView.html */ 25575);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('editEdgeGroupView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _editEdgeGroupViewController__WEBPACK_IMPORTED_MODULE_1__.EditEdgeGroupController\n});//# sourceURL=webpack-internal:///58188\n");

}),

8039:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CreateEdgeJobViewController\": function() { return /* binding */ CreateEdgeJobViewController; }\n/* harmony export */ });\nclass CreateEdgeJobViewController {\n  /* @ngInject */\n  constructor($async, $q, $state, $window, ModalService, EdgeJobService, GroupService, Notifications, TagService) {\n    this.state = {\n      actionInProgress: false,\n      isEditorDirty: false\n    };\n    this.model = {\n      Name: '',\n      Recurring: false,\n      CronExpression: '',\n      Endpoints: [],\n      FileContent: '',\n      File: null\n    };\n    this.$async = $async;\n    this.$q = $q;\n    this.$state = $state;\n    this.$window = $window;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.GroupService = GroupService;\n    this.EdgeJobService = EdgeJobService;\n    this.TagService = TagService;\n    this.create = this.create.bind(this);\n    this.createEdgeJob = this.createEdgeJob.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n  }\n\n  create(method) {\n    return this.$async(this.createAsync, method);\n  }\n\n  async createAsync(method) {\n    this.state.actionInProgress = true;\n\n    try {\n      await this.createEdgeJob(method, this.model);\n      this.Notifications.success('Success', 'Edge job successfully created');\n      this.state.isEditorDirty = false;\n      this.$state.go('edge.jobs', {}, {\n        reload: true\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create Edge job');\n    }\n\n    this.state.actionInProgress = false;\n  }\n\n  createEdgeJob(method, model) {\n    if (method === 'editor') {\n      return this.EdgeJobService.createEdgeJobFromFileContent(model);\n    }\n\n    return this.EdgeJobService.createEdgeJobFromFileUpload(model);\n  }\n\n  async uiCanExit() {\n    if (this.model.FileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async $onInit() {\n    try {\n      const [groups, tags] = await Promise.all([this.GroupService.groups(), this.TagService.tags()]);\n      this.groups = groups;\n      this.tags = tags;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve page data');\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (this.model.FileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\nCreateEdgeJobViewController.$inject = [\"$async\", \"$q\", \"$state\", \"$window\", \"ModalService\", \"EdgeJobService\", \"GroupService\", \"Notifications\", \"TagService\"];//# sourceURL=webpack-internal:///8039\n");

}),

47994:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _createEdgeJobViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createEdgeJobViewController */ 8039);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createEdgeJobView.html */ 4913);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('createEdgeJobView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _createEdgeJobViewController__WEBPACK_IMPORTED_MODULE_1__.CreateEdgeJobViewController\n});//# sourceURL=webpack-internal:///47994\n");

}),

87609:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeJobController\": function() { return /* binding */ EdgeJobController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\nclass EdgeJobController {\n  /* @ngInject */\n  constructor($async, $q, $state, $window, ModalService, EdgeJobService, FileSaver, GroupService, HostBrowserService, Notifications, TagService) {\n    this.state = {\n      actionInProgress: false,\n      showEditorTab: false,\n      isEditorDirty: false\n    };\n    this.$async = $async;\n    this.$q = $q;\n    this.$state = $state;\n    this.$window = $window;\n    this.ModalService = ModalService;\n    this.EdgeJobService = EdgeJobService;\n    this.FileSaver = FileSaver;\n    this.GroupService = GroupService;\n    this.HostBrowserService = HostBrowserService;\n    this.Notifications = Notifications;\n    this.TagService = TagService;\n    this.update = this.update.bind(this);\n    this.updateAsync = this.updateAsync.bind(this);\n    this.downloadLogs = this.downloadLogs.bind(this);\n    this.downloadLogsAsync = this.downloadLogsAsync.bind(this);\n    this.collectLogs = this.collectLogs.bind(this);\n    this.collectLogsAsync = this.collectLogsAsync.bind(this);\n    this.clearLogs = this.clearLogs.bind(this);\n    this.clearLogsAsync = this.clearLogsAsync.bind(this);\n    this.refresh = this.refresh.bind(this);\n    this.refreshAsync = this.refreshAsync.bind(this);\n    this.showEditor = this.showEditor.bind(this);\n  }\n\n  update() {\n    return this.$async(this.updateAsync);\n  }\n\n  async updateAsync() {\n    const model = this.edgeJob;\n    this.state.actionInProgress = true;\n\n    try {\n      await this.EdgeJobService.updateEdgeJob(model);\n      this.Notifications.success('Success', 'Edge job successfully updated');\n      this.state.isEditorDirty = false;\n      this.$state.go('edge.jobs', {}, {\n        reload: true\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update Edge job');\n    }\n\n    this.state.actionInProgress = false;\n  }\n\n  downloadLogs(endpointId) {\n    return this.$async(this.downloadLogsAsync, endpointId);\n  }\n\n  async downloadLogsAsync(endpointId) {\n    try {\n      const data = await this.EdgeJobService.logFile(this.edgeJob.Id, endpointId);\n      const downloadData = new Blob([data.FileContent], {\n        type: 'text/plain;charset=utf-8'\n      });\n      const logFileName = `job_${this.edgeJob.Id}_task_${endpointId}.log`;\n      this.FileSaver.saveAs(downloadData, logFileName);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to download file');\n    }\n  }\n\n  associateEndpointsToResults(results, endpoints) {\n    return lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(results, result => {\n      const endpoint = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(endpoints, endpoint => endpoint.Id === result.EndpointId);\n\n      result.Endpoint = endpoint;\n      return result;\n    });\n  }\n\n  collectLogs(endpointId) {\n    return this.$async(this.collectLogsAsync, endpointId);\n  }\n\n  async collectLogsAsync(endpointId) {\n    try {\n      await this.EdgeJobService.collectLogs(this.edgeJob.Id, endpointId);\n\n      const result = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.results, result => result.EndpointId === endpointId);\n\n      result.LogsStatus = 2;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to collect logs');\n    }\n  }\n\n  clearLogs(endpointId) {\n    return this.$async(this.clearLogsAsync, endpointId);\n  }\n\n  async clearLogsAsync(endpointId) {\n    try {\n      await this.EdgeJobService.clearLogs(this.edgeJob.Id, endpointId);\n\n      const result = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.results, result => result.EndpointId === endpointId);\n\n      result.LogsStatus = 1;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to clear logs');\n    }\n  }\n\n  refresh() {\n    return this.$async(this.refreshAsync);\n  }\n\n  async refreshAsync() {\n    const {\n      id\n    } = this.$state.params;\n    const results = await this.EdgeJobService.jobResults(id);\n\n    if (results.length > 0) {\n      const endpointIds = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(results, result => result.EndpointId);\n\n      const endpoints = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__.getEnvironments)({\n        query: {\n          endpointIds\n        }\n      });\n      this.results = this.associateEndpointsToResults(results, endpoints.value);\n    } else {\n      this.results = results;\n    }\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n  }\n\n  async uiCanExit() {\n    if (this.edgeJob && this.edgeJob.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async $onInit() {\n    const {\n      id,\n      tab\n    } = this.$state.params;\n    this.state.activeTab = tab;\n\n    if (!tab || tab === 0) {\n      this.state.showEditorTab = true;\n    }\n\n    try {\n      const [edgeJob, file, results, groups, tags] = await Promise.all([this.EdgeJobService.edgeJob(id), this.EdgeJobService.getScriptFile(id), this.EdgeJobService.jobResults(id), this.GroupService.groups(), this.TagService.tags()]);\n      edgeJob.FileContent = file.FileContent;\n      this.oldFileContent = edgeJob.FileContent;\n      this.edgeJob = edgeJob;\n      this.groups = groups;\n      this.tags = tags;\n\n      if (results.length > 0) {\n        const endpointIds = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(results, result => result.EndpointId);\n\n        const endpoints = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__.getEnvironments)({\n          query: {\n            endpointIds\n          }\n        });\n        this.results = this.associateEndpointsToResults(results, endpoints.value);\n      } else {\n        this.results = results;\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environment list');\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (this.edgeJob && this.edgeJob.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\nEdgeJobController.$inject = [\"$async\", \"$q\", \"$state\", \"$window\", \"ModalService\", \"EdgeJobService\", \"FileSaver\", \"GroupService\", \"HostBrowserService\", \"Notifications\", \"TagService\"];//# sourceURL=webpack-internal:///87609\n");

}),

6300:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeJobController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeJobController */ 87609);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeJob.html */ 14399);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeJobView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeJobController__WEBPACK_IMPORTED_MODULE_1__.EdgeJobController\n});//# sourceURL=webpack-internal:///6300\n");

}),

54223:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeJobsViewController\": function() { return /* binding */ EdgeJobsViewController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n\nclass EdgeJobsViewController {\n  /* @ngInject */\n  constructor($async, $state, EdgeJobService, ModalService, Notifications) {\n    this.$async = $async;\n    this.$state = $state;\n    this.EdgeJobService = EdgeJobService;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.removeAction = this.removeAction.bind(this);\n    this.deleteJobsAsync = this.deleteJobsAsync.bind(this);\n    this.deleteJobs = this.deleteJobs.bind(this);\n  }\n\n  removeAction(selectedItems) {\n    this.ModalService.confirmDeletion('你想删除选定的边缘作业吗？', confirmed => {\n      if (!confirmed) {\n        return;\n      }\n\n      this.deleteJobs(selectedItems);\n    });\n  }\n\n  deleteJobs(edgeJobs) {\n    return this.$async(this.deleteJobsAsync, edgeJobs);\n  }\n\n  async deleteJobsAsync(edgeJobs) {\n    for (let edgeJob of edgeJobs) {\n      try {\n        await this.EdgeJobService.remove(edgeJob.Id);\n        this.Notifications.success('边缘作业成功删除', edgeJob.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()(this.edgeJobs, edgeJob);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法删除边缘作业 ' + edgeJob.Name);\n      }\n    }\n\n    this.$state.reload();\n  }\n\n  async $onInit() {\n    try {\n      const edgeJobs = await this.EdgeJobService.edgeJobs();\n      this.edgeJobs = edgeJobs;\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索到边缘作业');\n      this.edgeJobs = [];\n    }\n  }\n\n}\nEdgeJobsViewController.$inject = [\"$async\", \"$state\", \"EdgeJobService\", \"ModalService\", \"Notifications\"];//# sourceURL=webpack-internal:///54223\n");

}),

30190:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeJobsViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeJobsViewController */ 54223);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeJobsView.html */ 53684);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeJobsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeJobsViewController__WEBPACK_IMPORTED_MODULE_1__.EdgeJobsViewController\n});//# sourceURL=webpack-internal:///30190\n");

}),

32884:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CreateEdgeStackViewController; }\n/* harmony export */ });\nclass CreateEdgeStackViewController {\n  /* @ngInject */\n  constructor($state, $window, ModalService, EdgeStackService, EdgeGroupService, EdgeTemplateService, Notifications, FormHelper, $async, $scope) {\n    Object.assign(this, {\n      $state,\n      $window,\n      ModalService,\n      EdgeStackService,\n      EdgeGroupService,\n      EdgeTemplateService,\n      Notifications,\n      FormHelper,\n      $async,\n      $scope\n    });\n    this.formValues = {\n      Name: '',\n      StackFileContent: '',\n      StackFile: null,\n      RepositoryURL: '',\n      RepositoryReferenceName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: '',\n      Env: [],\n      ComposeFilePathInRepository: '',\n      Groups: [],\n      DeploymentType: 0\n    };\n    this.state = {\n      Method: 'editor',\n      formValidationError: '',\n      actionInProgress: false,\n      StackType: null,\n      isEditorDirty: false,\n      hasKubeEndpoint: false,\n      endpointTypes: []\n    };\n    this.edgeGroups = null;\n    this.createStack = this.createStack.bind(this);\n    this.validateForm = this.validateForm.bind(this);\n    this.createStackByMethod = this.createStackByMethod.bind(this);\n    this.createStackFromFileContent = this.createStackFromFileContent.bind(this);\n    this.createStackFromFileUpload = this.createStackFromFileUpload.bind(this);\n    this.createStackFromGitRepository = this.createStackFromGitRepository.bind(this);\n    this.onChangeGroups = this.onChangeGroups.bind(this);\n    this.hasDockerEndpoint = this.hasDockerEndpoint.bind(this);\n    this.onChangeDeploymentType = this.onChangeDeploymentType.bind(this);\n  }\n\n  buildAnalyticsProperties() {\n    const format = 'compose';\n    const metadata = {\n      type: methodLabel(this.state.Method),\n      format\n    };\n\n    if (metadata.type === 'template') {\n      metadata.templateName = this.selectedTemplate.title;\n    }\n\n    return {\n      metadata\n    };\n\n    function methodLabel(method) {\n      switch (method) {\n        case 'editor':\n          return 'web-editor';\n\n        case 'repository':\n          return 'git';\n\n        case 'upload':\n          return 'file-upload';\n\n        case 'template':\n          return 'template';\n      }\n    }\n  }\n\n  uiCanExit() {\n    if (this.state.Method === 'editor' && this.formValues.StackFileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async $onInit() {\n    try {\n      this.edgeGroups = await this.EdgeGroupService.groups();\n      this.noGroups = this.edgeGroups.length === 0;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve Edge groups');\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (this.state.Method === 'editor' && this.formValues.StackFileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n  createStack() {\n    return this.$async(async () => {\n      const name = this.formValues.Name;\n      let method = this.state.Method;\n\n      if (method === 'template') {\n        method = 'editor';\n      }\n\n      if (!this.validateForm(method)) {\n        return;\n      }\n\n      this.state.actionInProgress = true;\n\n      try {\n        await this.createStackByMethod(name, method);\n        this.Notifications.success('Success', 'Stack successfully deployed');\n        this.state.isEditorDirty = false;\n        this.$state.go('edge.stacks');\n      } catch (err) {\n        this.Notifications.error('Deployment error', err, 'Unable to deploy stack');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  onChangeGroups(groups) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues.Groups = groups;\n      this.checkIfEndpointTypes(groups);\n    });\n  }\n\n  checkIfEndpointTypes(groups) {\n    const edgeGroups = groups.map(id => this.edgeGroups.find(e => e.Id === id));\n    this.state.endpointTypes = edgeGroups.flatMap(group => group.EndpointTypes);\n\n    if (this.hasDockerEndpoint() && this.formValues.DeploymentType == 1) {\n      this.onChangeDeploymentType(0);\n    }\n  }\n\n  hasKubeEndpoint() {\n    return this.state.endpointTypes.includes(7);\n  }\n\n  hasDockerEndpoint() {\n    return this.state.endpointTypes.includes(4);\n  }\n\n  validateForm(method) {\n    this.state.formValidationError = '';\n\n    if (method === 'editor' && this.formValues.StackFileContent === '') {\n      this.state.formValidationError = 'Stack file content must not be empty';\n      return;\n    }\n\n    return true;\n  }\n\n  createStackByMethod(name, method) {\n    switch (method) {\n      case 'editor':\n        return this.createStackFromFileContent(name);\n\n      case 'upload':\n        return this.createStackFromFileUpload(name);\n\n      case 'repository':\n        return this.createStackFromGitRepository(name);\n    }\n  }\n\n  createStackFromFileContent(name) {\n    const {\n      StackFileContent,\n      Groups,\n      DeploymentType\n    } = this.formValues;\n    return this.EdgeStackService.createStackFromFileContent({\n      name,\n      StackFileContent,\n      EdgeGroups: Groups,\n      DeploymentType\n    });\n  }\n\n  createStackFromFileUpload(name) {\n    const {\n      StackFile,\n      Groups,\n      DeploymentType\n    } = this.formValues;\n    return this.EdgeStackService.createStackFromFileUpload({\n      Name: name,\n      EdgeGroups: Groups,\n      DeploymentType\n    }, StackFile);\n  }\n\n  createStackFromGitRepository(name) {\n    const {\n      Groups,\n      DeploymentType\n    } = this.formValues;\n    const repositoryOptions = {\n      RepositoryURL: this.formValues.RepositoryURL,\n      RepositoryReferenceName: this.formValues.RepositoryReferenceName,\n      FilePathInRepository: this.formValues.ComposeFilePathInRepository,\n      RepositoryAuthentication: this.formValues.RepositoryAuthentication,\n      RepositoryUsername: this.formValues.RepositoryUsername,\n      RepositoryPassword: this.formValues.RepositoryPassword\n    };\n    return this.EdgeStackService.createStackFromGitRepository({\n      name,\n      EdgeGroups: Groups,\n      DeploymentType\n    }, repositoryOptions);\n  }\n\n  onChangeDeploymentType(deploymentType) {\n    this.formValues.DeploymentType = deploymentType;\n    this.state.Method = 'editor';\n    this.formValues.StackFileContent = '';\n  }\n\n  formIsInvalid() {\n    return this.form.$invalid || !this.formValues.Groups.length || ['template', 'editor'].includes(this.state.Method) && !this.formValues.StackFileContent || 'upload' === this.state.Method && !this.formValues.StackFile;\n  }\n\n}\nCreateEdgeStackViewController.$inject = [\"$state\", \"$window\", \"ModalService\", \"EdgeStackService\", \"EdgeGroupService\", \"EdgeTemplateService\", \"Notifications\", \"FormHelper\", \"$async\", \"$scope\"];//# sourceURL=webpack-internal:///32884\n");

}),

96478:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createEdgeStackView\": function() { return /* binding */ createEdgeStackView; }\n/* harmony export */ });\n/* harmony import */ var _create_edge_stack_view_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create-edge-stack-view.controller */ 32884);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./create-edge-stack-view.html */ 71818);\n\n\nconst createEdgeStackView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _create_edge_stack_view_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///96478\n");

}),

83615:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/BoxSelector/common-options/build-methods */ 37463);\n\n\nclass DockerComposeFormController {\n  /* @ngInject */\n  constructor($async, EdgeTemplateService, Notifications) {\n    Object.assign(this, {\n      $async,\n      EdgeTemplateService,\n      Notifications\n    });\n    this.methodOptions = [_BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.editor, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.upload, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.git, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.template];\n    this.selectedTemplate = null;\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onChangeFile = this.onChangeFile.bind(this);\n    this.onChangeTemplate = this.onChangeTemplate.bind(this);\n    this.onChangeMethod = this.onChangeMethod.bind(this);\n    this.onChangeFormValues = this.onChangeFormValues.bind(this);\n  }\n\n  onChangeFormValues(values) {\n    this.formValues = values;\n  }\n\n  onChangeMethod(method) {\n    this.state.Method = method;\n    this.formValues.StackFileContent = '';\n    this.selectedTemplate = null;\n  }\n\n  onChangeTemplate(template) {\n    return this.$async(async () => {\n      this.formValues.StackFileContent = '';\n\n      try {\n        const fileContent = await this.EdgeTemplateService.edgeTemplate(template);\n        this.formValues.StackFileContent = fileContent;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve Template');\n      }\n    });\n  }\n\n  onChangeFileContent(value) {\n    this.formValues.StackFileContent = value;\n    this.state.isEditorDirty = true;\n  }\n\n  onChangeFile(value) {\n    return this.$async(async () => {\n      this.formValues.StackFile = value;\n    });\n  }\n\n  async $onInit() {\n    return this.$async(async () => {\n      try {\n        const templates = await this.EdgeTemplateService.edgeTemplates();\n        this.templates = templates.map(template => ({ ...template,\n          label: `${template.title} - ${template.description}`\n        }));\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve Templates');\n      }\n    });\n  }\n\n}\n\nDockerComposeFormController.$inject = [\"$async\", \"EdgeTemplateService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (DockerComposeFormController);//# sourceURL=webpack-internal:///83615\n");

}),

32878:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"edgeStacksDockerComposeForm\": function() { return /* binding */ edgeStacksDockerComposeForm; }\n/* harmony export */ });\n/* harmony import */ var _docker_compose_form_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./docker-compose-form.controller.js */ 83615);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./docker-compose-form.html */ 2892);\n\n\nconst edgeStacksDockerComposeForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _docker_compose_form_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    formValues: '=',\n    state: '='\n  }\n};//# sourceURL=webpack-internal:///32878\n");

}),

24125:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _create_edge_stack_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-edge-stack-view */ 96478);\n/* harmony import */ var _docker_compose_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./docker-compose-form */ 32878);\n/* harmony import */ var _kube_manifest_form__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kube-manifest-form */ 56799);\n/* harmony import */ var _kube_deploy_description__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kube-deploy-description */ 75038);\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge.stacks.create', []).component('createEdgeStackView', _create_edge_stack_view__WEBPACK_IMPORTED_MODULE_1__.createEdgeStackView).component('edgeStacksDockerComposeForm', _docker_compose_form__WEBPACK_IMPORTED_MODULE_2__.edgeStacksDockerComposeForm).component('edgeStacksKubeManifestForm', _kube_manifest_form__WEBPACK_IMPORTED_MODULE_3__.kubeManifestForm).component('kubeDeployDescription', _kube_deploy_description__WEBPACK_IMPORTED_MODULE_4__.kubeDeployDescription).name);//# sourceURL=webpack-internal:///24125\n");

}),

75038:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubeDeployDescription\": function() { return /* binding */ kubeDeployDescription; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-deploy-description.html */ 87700);\n\nconst kubeDeployDescription = {\n  templateUrl: autoNgTemplateLoaderTemplate1\n};//# sourceURL=webpack-internal:///75038\n");

}),

56799:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubeManifestForm\": function() { return /* binding */ kubeManifestForm; }\n/* harmony export */ });\n/* harmony import */ var _kube_manifest_form_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-manifest-form.controller.js */ 23836);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-manifest-form.html */ 65398);\n\n\nconst kubeManifestForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_manifest_form_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    formValues: '=',\n    state: '='\n  }\n};//# sourceURL=webpack-internal:///56799\n");

}),

23836:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @@/BoxSelector/common-options/build-methods */ 37463);\n\n\nclass KubeManifestFormController {\n  /* @ngInject */\n  constructor($async) {\n    Object.assign(this, {\n      $async\n    });\n    this.methodOptions = [_BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.editor, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.upload, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_0__.git];\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onChangeFormValues = this.onChangeFormValues.bind(this);\n    this.onChangeFile = this.onChangeFile.bind(this);\n    this.onChangeMethod = this.onChangeMethod.bind(this);\n  }\n\n  onChangeFormValues(values) {\n    this.formValues = values;\n  }\n\n  onChangeFileContent(value) {\n    this.state.isEditorDirty = true;\n    this.formValues.StackFileContent = value;\n  }\n\n  onChangeFile(value) {\n    return this.$async(async () => {\n      this.formValues.StackFile = value;\n    });\n  }\n\n  onChangeMethod(method) {\n    this.state.Method = method;\n  }\n\n}\n\nKubeManifestFormController.$inject = [\"$async\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubeManifestFormController);//# sourceURL=webpack-internal:///23836\n");

}),

33661:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EdgeStacksViewController\": function() { return /* binding */ EdgeStacksViewController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n\nclass EdgeStacksViewController {\n  /* @ngInject */\n  constructor($state, Notifications, EdgeStackService, $scope, $async) {\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.EdgeStackService = EdgeStackService;\n    this.$scope = $scope;\n    this.$async = $async;\n    this.stacks = undefined;\n    this.getStacks = this.getStacks.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n  }\n\n  $onInit() {\n    this.getStacks();\n  }\n\n  removeAction(stacks) {\n    return this.$async(this.removeActionAsync, stacks);\n  }\n\n  async removeActionAsync(stacks) {\n    for (let stack of stacks) {\n      try {\n        await this.EdgeStackService.remove(stack.Id);\n        this.Notifications.success('Stack successfully removed', stack.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()(this.stacks, stack);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to remove stack ' + stack.Name);\n      }\n    }\n\n    this.$state.reload();\n  }\n\n  async getStacks() {\n    try {\n      this.stacks = await this.EdgeStackService.stacks();\n    } catch (err) {\n      this.stacks = [];\n      this.Notifications.error('失败', err, 'Unable to retrieve stacks');\n    }\n  }\n\n}\nEdgeStacksViewController.$inject = [\"$state\", \"Notifications\", \"EdgeStackService\", \"$scope\", \"$async\"];//# sourceURL=webpack-internal:///33661\n");

}),

82138:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _edgeStacksViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edgeStacksViewController */ 33661);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./edgeStacksView.html */ 51919);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('edgeStacksView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _edgeStacksViewController__WEBPACK_IMPORTED_MODULE_1__.EdgeStacksViewController\n});//# sourceURL=webpack-internal:///82138\n");

}),

66514:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EditEdgeStackViewController\": function() { return /* binding */ EditEdgeStackViewController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\n\nclass EditEdgeStackViewController {\n  /* @ngInject */\n  constructor($async, $state, $window, ModalService, EdgeGroupService, EdgeStackService, Notifications) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$window = $window;\n    this.ModalService = ModalService;\n    this.EdgeGroupService = EdgeGroupService;\n    this.EdgeStackService = EdgeStackService;\n    this.Notifications = Notifications;\n    this.stack = null;\n    this.edgeGroups = null;\n    this.state = {\n      actionInProgress: false,\n      activeTab: 0,\n      isEditorDirty: false\n    };\n    this.deployStack = this.deployStack.bind(this);\n    this.deployStackAsync = this.deployStackAsync.bind(this);\n    this.getPaginatedEndpoints = this.getPaginatedEndpoints.bind(this);\n    this.getPaginatedEndpointsAsync = this.getPaginatedEndpointsAsync.bind(this);\n  }\n\n  async $onInit() {\n    const {\n      stackId,\n      tab\n    } = this.$state.params;\n    this.state.activeTab = tab;\n\n    try {\n      const [edgeGroups, model, file] = await Promise.all([this.EdgeGroupService.groups(), this.EdgeStackService.stack(stackId), this.EdgeStackService.stackFile(stackId)]);\n      this.edgeGroups = edgeGroups;\n      this.stack = model;\n      this.stackEndpointIds = this.filterStackEndpoints(model.EdgeGroups, edgeGroups);\n      this.originalFileContent = file;\n      this.formValues = {\n        StackFileContent: file,\n        EdgeGroups: this.stack.EdgeGroups,\n        DeploymentType: this.stack.DeploymentType\n      };\n      this.oldFileContent = this.formValues.StackFileContent;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve stack data');\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (this.formValues.StackFileContent !== this.oldFileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n  async uiCanExit() {\n    if (this.formValues.StackFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== this.oldFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  filterStackEndpoints(groupIds, groups) {\n    return lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(groupIds, Id => {\n      const group = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(groups, {\n        Id\n      });\n\n      return group.Endpoints;\n    }));\n  }\n\n  deployStack() {\n    return this.$async(this.deployStackAsync);\n  }\n\n  async deployStackAsync() {\n    this.state.actionInProgress = true;\n\n    try {\n      if (this.originalFileContent != this.formValues.StackFileContent) {\n        this.formValues.Version = this.stack.Version + 1;\n      }\n\n      await this.EdgeStackService.updateStack(this.stack.Id, this.formValues);\n      this.Notifications.success('Success', 'Stack successfully deployed');\n      this.state.isEditorDirty = false;\n      this.$state.go('edge.stacks');\n    } catch (err) {\n      this.Notifications.error('Deployment error', err, 'Unable to deploy stack');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  getPaginatedEndpoints(...args) {\n    return this.$async(this.getPaginatedEndpointsAsync, ...args);\n  }\n\n  async getPaginatedEndpointsAsync(lastId, limit, search) {\n    try {\n      if (this.stackEndpointIds.length === 0) {\n        return {\n          endpoints: [],\n          totalCount: 0\n        };\n      }\n\n      const query = {\n        search,\n        endpointIds: this.stackEndpointIds\n      };\n      const {\n        value,\n        totalCount\n      } = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__.getEnvironments)({\n        start: lastId,\n        limit,\n        query\n      });\n      return {\n        endpoints: value,\n        totalCount\n      };\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environment information');\n    }\n  }\n\n}\nEditEdgeStackViewController.$inject = [\"$async\", \"$state\", \"$window\", \"ModalService\", \"EdgeGroupService\", \"EdgeStackService\", \"Notifications\"];//# sourceURL=webpack-internal:///66514\n");

}),

36237:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editEdgeStackViewController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editEdgeStackViewController */ 66514);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./editEdgeStackView.html */ 48023);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge').component('editEdgeStackView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _editEdgeStackViewController__WEBPACK_IMPORTED_MODULE_1__.EditEdgeStackViewController\n});//# sourceURL=webpack-internal:///36237\n");

}),

6142:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _createEdgeStackView__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createEdgeStackView */ 24125);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.edge.stacks', [_createEdgeStackView__WEBPACK_IMPORTED_MODULE_1__[\"default\"]]).name);//# sourceURL=webpack-internal:///6142\n");

}),

21570:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _assets_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assets/css */ 42311);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./i18n */ 34125);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _uirouter_react_hybrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uirouter/react-hybrid */ 27433);\n/* harmony import */ var _matomo_setup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./matomo-setup */ 63924);\n/* harmony import */ var _matomo_setup__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_matomo_setup__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _angulartics_matomo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./angulartics.matomo */ 14916);\n/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./agent */ 26317);\n/* harmony import */ var _azure__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./azure */ 58389);\n/* harmony import */ var _docker_module__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./docker/__module */ 2601);\n/* harmony import */ var _edge_module__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edge/__module */ 63774);\n/* harmony import */ var _portainer_module__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./portainer/__module */ 50991);\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./app */ 54905);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./config */ 98767);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _nomad__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./nomad */ 43539);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_13__.init)(_portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_14__.Edition[\"CE\"]);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer', ['ui.bootstrap', 'ui.router', _uirouter_react_hybrid__WEBPACK_IMPORTED_MODULE_3__.UI_ROUTER_REACT_HYBRID, 'ngSanitize', 'ngFileUpload', 'ngMessages', 'ngResource', 'angularUtils.directives.dirPagination', 'LocalStorageModule', 'angular-jwt', 'angular-json-tree', 'angular-loading-bar', 'angular-clipboard', 'ngFileSaver', 'luegg.directives', 'portainer.app', 'portainer.agent', _azure__WEBPACK_IMPORTED_MODULE_7__.azureModule, 'portainer.docker', 'portainer.kubernetes', _nomad__WEBPACK_IMPORTED_MODULE_15__.nomadModule, 'portainer.edge', 'rzModule', 'moment-picker', 'angulartics', _angulartics_matomo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]).run(_app__WEBPACK_IMPORTED_MODULE_11__.onStartupAngular).config(_config__WEBPACK_IMPORTED_MODULE_12__.configApp);\n\nif (true) {\n  const req = __webpack_require__(80081);\n\n  req.keys().filter(path => !path.includes('.test')).forEach(function (key) {\n    req(key);\n  });\n}//# sourceURL=webpack-internal:///21570\n");

}),

26604:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _registries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registries */ 87658);\n/* harmony import */ var _custom_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom-templates */ 79023);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./react */ 25152);\n/* harmony import */ var _views_kubernetes_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views/kubernetes.css */ 34040);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./views/configure/configure.html */ 45315);\n\nconst autoNgTemplateLoaderTemplate2 = __webpack_require__(/*! ../kubernetes/views/security-constraint/constraint.html */ 84579);\n\n\n\n\n\nangular.module('portainer.kubernetes', ['portainer.app', _registries__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _custom_templates__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _react__WEBPACK_IMPORTED_MODULE_2__.reactModule]).config(['$stateRegistryProvider', function ($stateRegistryProvider) {\n  'use strict';\n\n  const kubernetes = {\n    name: 'kubernetes',\n    url: '/kubernetes',\n    parent: 'endpoint',\n    abstract: true,\n    onEnter:\n    /* @ngInject */\n    [\"$async\", \"$state\", \"endpoint\", \"EndpointProvider\", \"KubernetesHealthService\", \"KubernetesNamespaceService\", \"Notifications\", \"StateManager\", function onEnter($async, $state, endpoint, EndpointProvider, KubernetesHealthService, KubernetesNamespaceService, Notifications, StateManager) {\n      return $async(async () => {\n        if (![5, 6, 7].includes(endpoint.Type)) {\n          $state.go('portainer.home');\n          return;\n        }\n\n        try {\n          if (endpoint.Type === 7) {\n            //edge\n            try {\n              await KubernetesHealthService.ping(endpoint.Id);\n              endpoint.Status = 1;\n            } catch (e) {\n              endpoint.Status = 2;\n            }\n          }\n\n          EndpointProvider.setEndpointID(endpoint.Id);\n          await StateManager.updateEndpointState(endpoint);\n\n          if (endpoint.Type === 7 && endpoint.Status === 2) {\n            throw new Error('Unable to contact Edge agent, please ensure that the agent is properly running on the remote environment.');\n          }\n\n          await KubernetesNamespaceService.get();\n        } catch (e) {\n          Notifications.error('Failed loading environment', e);\n          $state.go('portainer.home', {}, {\n            reload: true\n          });\n        }\n      });\n    }]\n  };\n  const helmApplication = {\n    name: 'kubernetes.helm',\n    url: '/helm/:namespace/:name',\n    views: {\n      'content@': {\n        component: 'kubernetesHelmApplicationView'\n      }\n    }\n  };\n  const helmTemplates = {\n    name: 'kubernetes.templates.helm',\n    url: '/helm',\n    views: {\n      'content@': {\n        component: 'helmTemplatesView'\n      }\n    }\n  };\n  const ingresses = {\n    name: 'kubernetes.ingresses',\n    url: '/ingresses',\n    views: {\n      'content@': {\n        component: 'kubernetesIngressesView'\n      }\n    }\n  };\n  const ingressesCreate = {\n    name: 'kubernetes.ingresses.create',\n    url: '/add',\n    views: {\n      'content@': {\n        component: 'kubernetesIngressesCreateView'\n      }\n    }\n  };\n  const ingressesEdit = {\n    name: 'kubernetes.ingresses.edit',\n    url: '/:namespace/:name/edit',\n    views: {\n      'content@': {\n        component: 'kubernetesIngressesCreateView'\n      }\n    }\n  };\n  const applications = {\n    name: 'kubernetes.applications',\n    url: '/applications',\n    views: {\n      'content@': {\n        component: 'kubernetesApplicationsView'\n      }\n    }\n  };\n  const applicationCreation = {\n    name: 'kubernetes.applications.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'kubernetesCreateApplicationView'\n      }\n    }\n  };\n  const application = {\n    name: 'kubernetes.applications.application',\n    url: '/:namespace/:name',\n    views: {\n      'content@': {\n        component: 'kubernetesApplicationView'\n      }\n    }\n  };\n  const applicationEdit = {\n    name: 'kubernetes.applications.application.edit',\n    url: '/edit',\n    views: {\n      'content@': {\n        component: 'kubernetesCreateApplicationView'\n      }\n    }\n  };\n  const applicationConsole = {\n    name: 'kubernetes.applications.application.console',\n    url: '/:pod/:container/console',\n    views: {\n      'content@': {\n        component: 'kubernetesApplicationConsoleView'\n      }\n    }\n  };\n  const applicationLogs = {\n    name: 'kubernetes.applications.application.logs',\n    url: '/:pod/:container/logs',\n    views: {\n      'content@': {\n        component: 'kubernetesApplicationLogsView'\n      }\n    }\n  };\n  const applicationStats = {\n    name: 'kubernetes.applications.application.stats',\n    url: '/:pod/:container/stats',\n    views: {\n      'content@': {\n        component: 'kubernetesApplicationStatsView'\n      }\n    }\n  };\n  const stacks = {\n    name: 'kubernetes.stacks',\n    url: '/stacks',\n    abstract: true\n  };\n  const stack = {\n    name: 'kubernetes.stacks.stack',\n    url: '/:namespace/:name',\n    abstract: true\n  };\n  const stackLogs = {\n    name: 'kubernetes.stacks.stack.logs',\n    url: '/logs',\n    views: {\n      'content@': {\n        component: 'kubernetesStackLogsView'\n      }\n    }\n  };\n  const configurations = {\n    name: 'kubernetes.configurations',\n    url: '/configurations',\n    views: {\n      'content@': {\n        component: 'kubernetesConfigurationsView'\n      }\n    }\n  };\n  const configurationCreation = {\n    name: 'kubernetes.configurations.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'kubernetesCreateConfigurationView'\n      }\n    }\n  };\n  const configuration = {\n    name: 'kubernetes.configurations.configuration',\n    url: '/:namespace/:name',\n    views: {\n      'content@': {\n        component: 'kubernetesConfigurationView'\n      }\n    }\n  };\n  const cluster = {\n    name: 'kubernetes.cluster',\n    url: '/cluster',\n    views: {\n      'content@': {\n        component: 'kubernetesClusterView'\n      }\n    }\n  };\n  const node = {\n    name: 'kubernetes.cluster.node',\n    url: '/:name',\n    views: {\n      'content@': {\n        component: 'kubernetesNodeView'\n      }\n    }\n  };\n  const nodeStats = {\n    name: 'kubernetes.cluster.node.stats',\n    url: '/stats',\n    views: {\n      'content@': {\n        component: 'kubernetesNodeStatsView'\n      }\n    }\n  };\n  const dashboard = {\n    name: 'kubernetes.dashboard',\n    url: '/dashboard',\n    views: {\n      'content@': {\n        component: 'kubernetesDashboardView'\n      }\n    }\n  };\n  const deploy = {\n    name: 'kubernetes.deploy',\n    url: '/deploy?templateId',\n    views: {\n      'content@': {\n        component: 'kubernetesDeployView'\n      }\n    },\n    params: {\n      templateId: ''\n    }\n  };\n  const resourcePools = {\n    name: 'kubernetes.resourcePools',\n    url: '/pools',\n    views: {\n      'content@': {\n        component: 'kubernetesResourcePoolsView'\n      }\n    }\n  };\n  const resourcePoolCreation = {\n    name: 'kubernetes.resourcePools.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'kubernetesCreateResourcePoolView'\n      }\n    }\n  };\n  const resourcePool = {\n    name: 'kubernetes.resourcePools.resourcePool',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'kubernetesResourcePoolView'\n      }\n    }\n  };\n  const resourcePoolAccess = {\n    name: 'kubernetes.resourcePools.resourcePool.access',\n    url: '/access',\n    views: {\n      'content@': {\n        component: 'kubernetesResourcePoolAccessView'\n      }\n    }\n  };\n  const volumes = {\n    name: 'kubernetes.volumes',\n    url: '/volumes',\n    views: {\n      'content@': {\n        component: 'kubernetesVolumesView'\n      }\n    }\n  };\n  const volume = {\n    name: 'kubernetes.volumes.volume',\n    url: '/:namespace/:name',\n    views: {\n      'content@': {\n        component: 'kubernetesVolumeView'\n      }\n    }\n  };\n  const registries = {\n    name: 'kubernetes.registries',\n    url: '/registries',\n    views: {\n      'content@': {\n        component: 'endpointRegistriesView'\n      }\n    }\n  };\n  const registriesAccess = {\n    name: 'kubernetes.registries.access',\n    url: '/:id/access',\n    views: {\n      'content@': {\n        component: 'kubernetesRegistryAccessView'\n      }\n    }\n  };\n  const endpointKubernetesConfiguration = {\n    name: 'kubernetes.cluster.setup',\n    url: '/configure',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate1,\n        controller: 'KubernetesConfigureController',\n        controllerAs: 'ctrl'\n      }\n    }\n  };\n  const endpointKubernetesSecurityConstraint = {\n    name: 'kubernetes.cluster.securityConstraint',\n    url: '/securityConstraint',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate2,\n        controller: 'KubernetesSecurityConstraintController'\n      }\n    }\n  };\n  $stateRegistryProvider.register(kubernetes);\n  $stateRegistryProvider.register(helmApplication);\n  $stateRegistryProvider.register(helmTemplates);\n  $stateRegistryProvider.register(applications);\n  $stateRegistryProvider.register(applicationCreation);\n  $stateRegistryProvider.register(application);\n  $stateRegistryProvider.register(applicationEdit);\n  $stateRegistryProvider.register(applicationConsole);\n  $stateRegistryProvider.register(applicationLogs);\n  $stateRegistryProvider.register(applicationStats);\n  $stateRegistryProvider.register(stacks);\n  $stateRegistryProvider.register(stack);\n  $stateRegistryProvider.register(stackLogs);\n  $stateRegistryProvider.register(configurations);\n  $stateRegistryProvider.register(configurationCreation);\n  $stateRegistryProvider.register(configuration);\n  $stateRegistryProvider.register(cluster);\n  $stateRegistryProvider.register(dashboard);\n  $stateRegistryProvider.register(deploy);\n  $stateRegistryProvider.register(node);\n  $stateRegistryProvider.register(nodeStats);\n  $stateRegistryProvider.register(resourcePools);\n  $stateRegistryProvider.register(resourcePoolCreation);\n  $stateRegistryProvider.register(resourcePool);\n  $stateRegistryProvider.register(resourcePoolAccess);\n  $stateRegistryProvider.register(volumes);\n  $stateRegistryProvider.register(volume);\n  $stateRegistryProvider.register(registries);\n  $stateRegistryProvider.register(registriesAccess);\n  $stateRegistryProvider.register(endpointKubernetesConfiguration);\n  $stateRegistryProvider.register(endpointKubernetesSecurityConstraint);\n  $stateRegistryProvider.register(ingresses);\n  $stateRegistryProvider.register(ingressesCreate);\n  $stateRegistryProvider.register(ingressesEdit);\n}]);//# sourceURL=webpack-internal:///26604\n");

}),

28953:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./containersDatatable.html */ 15879);\n\nangular.module('portainer.kubernetes').component('kubernetesContainersDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    refreshCallback: '<',\n    isPod: '<',\n    useServerMetrics: '<'\n  }\n});//# sourceURL=webpack-internal:///28953\n");

}),

41727:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (class {\n  $onInit() {\n    const secrets = (this.configurations || []).filter(config => config.Data && config.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesConfigurationKinds.SECRET).flatMap(config => Object.entries(config.Data)).map(([key, value]) => ({\n      key,\n      value\n    }));\n    this.state = {\n      secrets\n    };\n  }\n\n});//# sourceURL=webpack-internal:///41727\n");

}),

3962:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _applications_datatable_details_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./applications-datatable-details.controller */ 41727);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applications-datatable-details.html */ 99055);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesApplicationsDatatableDetails', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _applications_datatable_details_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    configurations: '<'\n  }\n});//# sourceURL=webpack-internal:///3962\n");

}),

87082:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _applications_datatable_url_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./applications-datatable-url.css */ 84549);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applications-datatable-url.html */ 57257);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesApplicationsDatatableUrl', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    publishedUrl: '@'\n  }\n});//# sourceURL=webpack-internal:///87082\n");

}),

42270:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _applicationsDatatable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applicationsDatatable.css */ 50193);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applicationsDatatable.html */ 69333);\n\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    settingsKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<',\n    onPublishingModeClick: '<',\n    isPrimary: '<'\n  }\n});//# sourceURL=webpack-internal:///42270\n");

}),

45941:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\n\n\n\n\nangular.module('portainer.docker').controller('KubernetesApplicationsDatatableController', ['$scope', '$controller', 'DatatableService', 'Authentication', function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  const ctrl = this;\n  this.settings = Object.assign(this.settings, {\n    showSystem: false\n  });\n  this.state = Object.assign(this.state, {\n    expandAll: false,\n    expandedItems: []\n  });\n  this.filters = {\n    state: {\n      open: false,\n      enabled: false,\n      values: []\n    }\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n    this.state.filteredDataSet.forEach(item => this.expandItem(item, this.state.expandAll));\n  };\n\n  this.isItemExpanded = function (item) {\n    return this.state.expandedItems.includes(item.Id);\n  };\n\n  this.isExpandable = function (item) {\n    return item.KubernetesApplications || this.hasConfigurationSecrets(item) || !!this.getPublishedUrl(item).length;\n  };\n\n  this.expandItem = function (item, expanded) {\n    // collapse item\n    if (!expanded) {\n      this.state.expandedItems = this.state.expandedItems.filter(id => id !== item.Id); // expanded item\n    } else if (expanded && !this.state.expandedItems.includes(item.Id)) {\n      this.state.expandedItems = [...this.state.expandedItems, item.Id];\n    }\n\n    DatatableService.setDataTableExpandedItems(this.tableKey, this.state.expandedItems);\n  };\n\n  this.expandItems = function (storedExpandedItems) {\n    this.state.expandedItems = storedExpandedItems;\n\n    if (this.state.expandedItems.length === this.dataset.length) {\n      this.state.expandAll = true;\n    }\n  };\n\n  this.onDataRefresh = function () {\n    const storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n\n    if (storedExpandedItems !== null) {\n      this.expandItems(storedExpandedItems);\n    }\n  };\n\n  this.onSettingsShowSystemChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.isExternalApplication = function (item) {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isExternalApplication(item);\n  };\n\n  this.isSystemNamespace = function (item) {\n    // if all charts in a helm app/release are in the system namespace\n    if (item.KubernetesApplications && item.KubernetesApplications.length > 0) {\n      return item.KubernetesApplications.some(app => Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isSystemNamespace(app.ResourcePool));\n    }\n\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isSystemNamespace(item.ResourcePool);\n  };\n\n  this.isDisplayed = function (item) {\n    return !ctrl.isSystemNamespace(item) || ctrl.settings.showSystem;\n  };\n\n  this.getPublishedUrl = function (item) {\n    // Map all ingress rules in published ports to their respective URLs\n    const ingressUrls = item.PublishedPorts.flatMap(pp => pp.IngressRules).filter(({\n      Host,\n      IP\n    }) => Host || IP).map(({\n      Host,\n      IP,\n      Path,\n      TLS\n    }) => {\n      let scheme = TLS && TLS.filter(tls => tls.hosts && tls.hosts.includes(Host)).length > 0 ? 'https' : 'http';\n      return `${scheme}://${Host || IP}${Path}`;\n    }); // Map all load balancer service ports to ip address\n\n    let loadBalancerURLs = [];\n\n    if (item.LoadBalancerIPAddress) {\n      loadBalancerURLs = item.PublishedPorts.map(pp => `http://${item.LoadBalancerIPAddress}:${pp.Port}`);\n    } // combine ingress urls\n\n\n    const publishedUrls = [...ingressUrls, ...loadBalancerURLs]; // Return the first URL - priority given to ingress urls, then services (load balancers)\n\n    return publishedUrls.length > 0 ? publishedUrls[0] : '';\n  };\n\n  this.hasConfigurationSecrets = function (item) {\n    return item.Configurations && item.Configurations.some(config => config.Data && config.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesConfigurationKinds.SECRET);\n  };\n  /**\n   * Do not allow applications in system namespaces to be selected\n   */\n\n\n  this.allowSelection = function (item) {\n    return !this.isSystemNamespace(item);\n  };\n\n  this.applyFilters = function (item) {\n    return ctrl.filters.state.values.some(filter => item.ApplicationType === filter.type && filter.display);\n  };\n\n  this.onStateFilterChange = function () {\n    this.filters.state.enabled = this.filters.state.values.some(filter => !filter.display);\n  };\n\n  this.prepareTableFromDataset = function () {\n    const availableTypeFilters = this.dataset.map(item => ({\n      type: item.ApplicationType,\n      display: true\n    }));\n    this.filters.state.values = lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(availableTypeFilters, 'type');\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.KubernetesApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationDeploymentTypes;\n    this.KubernetesApplicationTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationTypes;\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    const storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    const textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    const storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    const storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n\n    if (storedExpandedItems !== null) {\n      this.expandItems(storedExpandedItems);\n    }\n\n    const storedSettings = DatatableService.getDataTableSettings(this.settingsKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///45941\n");

}),

50195:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applicationsPortsDatatable.html */ 13181);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsPortsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationsPortsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///50195\n");

}),

77106:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n\n\n\n\n\n\nangular.module('portainer.docker').controller('KubernetesApplicationsPortsDatatableController', ['$scope', '$controller', 'DatatableService', 'Authentication', function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: false\n  });\n  var ctrl = this;\n  this.KubernetesServiceTypes = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesServiceTypes;\n  this.settings = Object.assign(this.settings, {\n    showSystem: false\n  });\n\n  this.onSettingsShowSystemChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.isExternalApplication = function (item) {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isExternalApplication(item);\n  };\n\n  this.isSystemNamespace = function (item) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSystemNamespace(item.ResourcePool);\n  };\n\n  this.isDisplayed = function (item) {\n    return !ctrl.isSystemNamespace(item) || ctrl.settings.showSystem;\n  };\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.Ports.length > 1 || item.Ports[0].IngressRules.length > 1;\n  };\n\n  this.buildIngressRuleURL = function (rule) {\n    const hostname = rule.Host ? rule.Host : rule.IP;\n    return 'http://' + hostname + rule.Path;\n  };\n\n  this.portHasIngressRules = function (port) {\n    return port.IngressRules.length > 0;\n  };\n\n  this.ruleCanBeDisplayed = function (rule) {\n    return !rule.Host && !rule.IP ? false : true;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.KubernetesApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDeploymentTypes;\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///77106\n");

}),

21266:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applicationsStacksDatatable.html */ 35558);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsStacksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationsStacksDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///21266\n");

}),

89107:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\n\n\n\nangular.module('portainer.kubernetes').controller('KubernetesApplicationsStacksDatatableController', ['$scope', '$controller', 'DatatableService', 'Authentication', function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: false\n  });\n  var ctrl = this;\n  this.settings = Object.assign(this.settings, {\n    showSystem: false\n  });\n\n  this.onSettingsShowSystemChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.isExternalApplication = function (item) {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isExternalApplication(item);\n  };\n  /**\n   * Do not allow applications in system namespaces to be selected\n   */\n\n\n  this.allowSelection = function (item) {\n    return !this.isSystemNamespace(item.ResourcePool);\n  };\n  /**\n   * @param {String} namespace Namespace (string name)\n   * @returns Boolean\n   */\n\n\n  this.isSystemNamespace = function (namespace) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSystemNamespace(namespace);\n  };\n\n  this.isDisplayed = function (item) {\n    return !ctrl.isSystemNamespace(item.ResourcePool) || ctrl.settings.showSystem;\n  };\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.Applications.length > 0;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.KubernetesApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDeploymentTypes;\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///89107\n");

}),

95240:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./configurationsDatatable.html */ 62178);\n\nangular.module('portainer.kubernetes').component('kubernetesConfigurationsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesConfigurationsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    refreshCallback: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///95240\n");

}),

63507:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\nangular.module('portainer.docker').controller('KubernetesConfigurationsDatatableController', ['$scope', '$controller', 'DatatableService', 'Authentication', function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  const ctrl = this;\n  this.settings = Object.assign(this.settings, {\n    showSystem: false\n  });\n\n  this.onSettingsShowSystemChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.isSystemNamespace = function (item) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSystemNamespace(item.Namespace);\n  };\n\n  this.isSystemToken = function (item) {\n    return Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSystemToken(item);\n  };\n\n  this.isSystemConfig = function (item) {\n    return ctrl.isSystemNamespace(item) || ctrl.isSystemToken(item) || item.IsRegistrySecret;\n  };\n\n  this.isExternalConfiguration = function (item) {\n    return Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isExternalConfiguration(item);\n  };\n\n  this.isDisplayed = function (item) {\n    return !ctrl.isSystemConfig(item) || ctrl.settings.showSystem && ctrl.isAdmin;\n  };\n  /**\n   * Do not allow configurations in system namespaces to be selected\n   */\n\n\n  this.allowSelection = function (item) {\n    return !this.isSystemConfig(item) && !item.Used;\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///63507\n");

}),

39564:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./eventsDatatable.html */ 29649);\n\nangular.module('portainer.kubernetes').component('kubernetesEventsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    loading: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///39564\n");

}),

78458:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./integratedApplicationsDatatable.html */ 95947);\n\nangular.module('portainer.kubernetes').component('kubernetesIntegratedApplicationsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///78458\n");

}),

56531:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./nodeApplicationsDatatable.html */ 33989);\n\nangular.module('portainer.kubernetes').component('kubernetesNodeApplicationsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesNodeApplicationsDatatableController',\n  bindings: {\n    titleText: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///56531\n");

}),

8122:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\n\nangular.module('portainer.docker').controller('KubernetesNodeApplicationsDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.isSystemNamespace = function (item) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSystemNamespace(item.ResourcePool);\n  };\n\n  this.isExternalApplication = function (item) {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isExternalApplication(item);\n  };\n\n  this.$onInit = function () {\n    this.KubernetesApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationDeploymentTypes;\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///8122\n");

}),

60810:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./nodesDatatable.html */ 93172);\n\nangular.module('portainer.kubernetes').component('kubernetesNodesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    refreshCallback: '<',\n    isAdmin: '<',\n    useServerMetrics: '<'\n  }\n});//# sourceURL=webpack-internal:///60810\n");

}),

56975:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourcePoolApplicationsDatatable.html */ 60927);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolApplicationsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolApplicationsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///56975\n");

}),

94817:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n\nangular.module('portainer.docker').controller('KubernetesResourcePoolApplicationsDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.isExternalApplication = function (item) {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isExternalApplication(item);\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///94817\n");

}),

22158:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourcePoolsDatatable.html */ 70586);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolsDatatableController',\n  bindings: {\n    endpoint: '<',\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///22158\n");

}),

51329:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\nangular.module('portainer.docker').controller('KubernetesResourcePoolsDatatableController', ['$scope', '$controller', 'Authentication', 'DatatableService', function ($scope, $controller, Authentication, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  var ctrl = this;\n  this.settings = Object.assign(this.settings, {\n    showSystem: false\n  });\n\n  this.onSettingsShowSystemChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.canManageAccess = function (item) {\n    if (!this.endpoint.Kubernetes.Configuration.RestrictDefaultNamespace) {\n      return !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isDefaultNamespace(item.Namespace.Name) && !this.isSystemNamespace(item);\n    } else {\n      return !this.isSystemNamespace(item);\n    }\n  };\n\n  this.disableRemove = function (item) {\n    return this.isSystemNamespace(item) || Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isDefaultNamespace(item.Namespace.Name);\n  };\n\n  this.isSystemNamespace = function (item) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSystemNamespace(item.Namespace.Name);\n  };\n\n  this.isDisplayed = function (item) {\n    return !ctrl.isSystemNamespace(item) || ctrl.settings.showSystem && ctrl.isAdmin;\n  };\n\n  this.namespaceStatusColor = function (status) {\n    switch (status.toLowerCase()) {\n      case 'active':\n        return 'success';\n\n      case 'terminating':\n        return 'danger';\n\n      default:\n        return 'primary';\n    }\n  };\n  /**\n   * Do not allow system namespaces to be selected\n   */\n\n\n  this.allowSelection = function (item) {\n    return !this.disableRemove(item);\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///51329\n");

}),

62925:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumesDatatable.html */ 18491);\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesVolumesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///62925\n");

}),

63651:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/helpers/volumeHelper */ 11507);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\n // TODO: review - refactor to use `extends GenericDatatableController`\n\nclass KubernetesVolumesDatatableController {\n  /* @ngInject */\n  constructor($async, $controller, Authentication, DatatableService) {\n    this.$async = $async;\n    this.$controller = $controller;\n    this.Authentication = Authentication;\n    this.DatatableService = DatatableService;\n    this.onInit = this.onInit.bind(this);\n    this.allowSelection = this.allowSelection.bind(this);\n    this.isDisplayed = this.isDisplayed.bind(this);\n  }\n\n  onSettingsShowSystemChange() {\n    this.DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  }\n\n  disableRemove(item) {\n    return this.isSystemNamespace(item) || this.isUsed(item);\n  }\n\n  isUsed(item) {\n    return Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUsed(item);\n  }\n\n  isSystemNamespace(item) {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSystemNamespace(item.ResourcePool.Namespace.Name);\n  }\n\n  isDisplayed(item) {\n    return !this.isSystemNamespace(item) || this.settings.showSystem;\n  }\n\n  isExternalVolume(item) {\n    return Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isExternalVolume(item);\n  }\n\n  allowSelection(item) {\n    return !this.disableRemove(item);\n  }\n\n  async onInit() {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.isAdmin = this.Authentication.isAdmin();\n    this.settings.showSystem = false;\n    this.state.orderBy = this.orderBy;\n    var storedOrder = this.DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = this.DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = this.DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  }\n\n  $onInit() {\n    const ctrl = angular__WEBPACK_IMPORTED_MODULE_0___default().extend({}, this.$controller('GenericDatatableController'), this);\n    angular__WEBPACK_IMPORTED_MODULE_0___default().extend(this, ctrl);\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesVolumesDatatableController.$inject = [\"$async\", \"$controller\", \"Authentication\", \"DatatableService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumesDatatableController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesVolumesDatatableController', KubernetesVolumesDatatableController);//# sourceURL=webpack-internal:///63651\n");

}),

41399:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ HelmAddRepositoryController; }\n/* harmony export */ });\nclass HelmAddRepositoryController {\n  /* @ngInject */\n  constructor($state, $async, HelmService, Notifications) {\n    this.$state = $state;\n    this.$async = $async;\n    this.HelmService = HelmService;\n    this.Notifications = Notifications;\n  }\n\n  doesRepoExist() {\n    if (!this.state.repository) {\n      return false;\n    } // lowercase, strip trailing slash and compare\n\n\n    return this.repos.includes(this.state.repository.toLowerCase().replace(/\\/$/, ''));\n  }\n\n  async addRepository() {\n    this.state.isAddingRepo = true;\n\n    try {\n      await this.HelmService.addHelmRepository(this.endpoint.Id, {\n        url: this.state.repository\n      });\n      this.Notifications.success('Success', 'Helm repository added successfully');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('Installation error', err);\n    } finally {\n      this.state.isAddingRepo = false;\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.state = {\n        isAddingRepo: false,\n        repository: ''\n      };\n    });\n  }\n\n}\nHelmAddRepositoryController.$inject = [\"$state\", \"$async\", \"HelmService\", \"Notifications\"];//# sourceURL=webpack-internal:///41399\n");

}),

79553:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helm_add_repository_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helm-add-repository.controller */ 41399);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./helm-add-repository.html */ 46598);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('helmAddRepository', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _helm_add_repository_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    repos: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///79553\n");

}),

43579:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helm_templates_list_item_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helm-templates-list-item.css */ 33099);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./helm-templates-list-item.html */ 2894);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('helmTemplatesListItem', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '<',\n    onSelect: '<'\n  },\n  transclude: {\n    actions: '?templateItemActions'\n  }\n});//# sourceURL=webpack-internal:///43579\n");

}),

88416:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ HelmTemplatesListController; }\n/* harmony export */ });\nclass HelmTemplatesListController {\n  /* @ngInject */\n  constructor($async, $scope, DatatableService, HelmService, Notifications) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.DatatableService = DatatableService;\n    this.HelmService = HelmService;\n    this.Notifications = Notifications;\n    this.state = {\n      textFilter: '',\n      selectedCategory: '',\n      categories: []\n    };\n    this.updateCategories = this.updateCategories.bind(this);\n    this.onCategoryChange = this.onCategoryChange.bind(this);\n  }\n\n  async updateCategories() {\n    try {\n      const annotationCategories = this.charts.map(t => t.annotations) // get annotations\n      .filter(a => a) // filter out undefined/nulls\n      .map(c => c.category); // get annotation category\n\n      const availableCategories = [...new Set(annotationCategories)].sort(); // unique and sort\n\n      this.state.categories = availableCategories.map(cat => ({\n        label: cat,\n        value: cat\n      }));\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve helm charts categories');\n    }\n  }\n\n  onCategoryChange(value) {\n    return this.$scope.$evalAsync(() => {\n      this.state.selectedCategory = value || '';\n    });\n  }\n\n  onTextFilterChange() {\n    this.DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n  }\n\n  $onChanges() {\n    if (this.charts.length > 0) {\n      this.updateCategories();\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      const textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n\n      if (textFilter !== null) {\n        this.state.textFilter = textFilter;\n      }\n    });\n  }\n\n}\nHelmTemplatesListController.$inject = [\"$async\", \"$scope\", \"DatatableService\", \"HelmService\", \"Notifications\"];//# sourceURL=webpack-internal:///88416\n");

}),

15778:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helm_templates_list_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helm-templates-list.controller */ 88416);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./helm-templates-list.html */ 24633);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('helmTemplatesList', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _helm_templates_list_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    loading: '<',\n    titleText: '@',\n    titleIcon: '@',\n    charts: '<',\n    tableKey: '@',\n    selectAction: '<'\n  }\n});//# sourceURL=webpack-internal:///15778\n");

}),

67316:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ HelmTemplatesController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\nclass HelmTemplatesController {\n  /* @ngInject */\n  constructor($analytics, $async, $state, $window, $anchorScroll, Authentication, HelmService, KubernetesResourcePoolService, Notifications, ModalService) {\n    this.$analytics = $analytics;\n    this.$async = $async;\n    this.$window = $window;\n    this.$state = $state;\n    this.$anchorScroll = $anchorScroll;\n    this.Authentication = Authentication;\n    this.HelmService = HelmService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.Notifications = Notifications;\n    this.ModalService = ModalService;\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.uiCanExit = this.uiCanExit.bind(this);\n    this.installHelmchart = this.installHelmchart.bind(this);\n    this.getHelmValues = this.getHelmValues.bind(this);\n    this.selectHelmChart = this.selectHelmChart.bind(this);\n    this.getHelmRepoURLs = this.getHelmRepoURLs.bind(this);\n    this.getLatestCharts = this.getLatestCharts.bind(this);\n    this.getResourcePools = this.getResourcePools.bind(this);\n\n    $window.onbeforeunload = () => {\n      if (this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  editorUpdate(contentvalues) {\n    if (this.state.originalvalues === contentvalues) {\n      this.state.isEditorDirty = false;\n    } else {\n      this.state.values = contentvalues;\n      this.state.isEditorDirty = true;\n    }\n  }\n\n  async uiCanExit() {\n    if (this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async installHelmchart() {\n    this.state.actionInProgress = true;\n\n    try {\n      const payload = {\n        Name: this.state.appName,\n        Repo: this.state.chart.repo,\n        Chart: this.state.chart.name,\n        Values: this.state.values,\n        Namespace: this.state.resourcePool.Namespace.Name\n      };\n      await this.HelmService.install(this.endpoint.Id, payload);\n      this.Notifications.success('Success', 'Helm Chart successfully installed');\n      this.$analytics.eventTrack('kubernetes-helm-install', {\n        category: 'kubernetes',\n        metadata: {\n          'chart-name': this.state.chart.name\n        }\n      });\n      this.state.isEditorDirty = false;\n      this.$state.go('kubernetes.applications');\n    } catch (err) {\n      this.Notifications.error('Installation error', err);\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  async getHelmValues() {\n    this.state.loadingValues = true;\n\n    try {\n      const {\n        values\n      } = await this.HelmService.values(this.state.chart.repo, this.state.chart.name);\n      this.state.values = values;\n      this.state.originalvalues = values;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve helm chart values.');\n    } finally {\n      this.state.loadingValues = false;\n    }\n  }\n\n  async selectHelmChart(chart) {\n    window.scrollTo(0, 0);\n    this.state.showCustomValues = false;\n    this.state.chart = chart;\n    await this.getHelmValues();\n  }\n  /**\n   * @description This function is used to get the helm repo urls for the endpoint and user\n   * @returns {Promise<string[]>} list of helm repo urls\n   */\n\n\n  async getHelmRepoURLs() {\n    this.state.reposLoading = true;\n\n    try {\n      // fetch globally set helm repo and user helm repos (parallel)\n      const {\n        GlobalRepository,\n        UserRepositories\n      } = await this.HelmService.getHelmRepositories(this.endpoint.Id);\n      this.state.globalRepository = GlobalRepository;\n      const userHelmReposUrls = UserRepositories.map(repo => repo.URL);\n      const uniqueHelmRepos = [...new Set([GlobalRepository, ...userHelmReposUrls])].map(url => url.toLowerCase()).filter(url => url); // remove duplicates and blank, to lowercase\n\n      this.state.repos = uniqueHelmRepos;\n      return uniqueHelmRepos;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve helm repo urls.');\n    } finally {\n      this.state.reposLoading = false;\n    }\n  }\n  /**\n   * @description This function is used to fetch the respective index.yaml files for the provided helm repo urls\n   * @param {string[]} helmRepos list of helm repositories\n   * @param {bool} append append charts returned from repo to existing list of helm charts\n   */\n\n\n  async getLatestCharts(helmRepos) {\n    this.state.chartsLoading = true;\n\n    try {\n      const promiseList = helmRepos.map(repo => this.HelmService.search(repo)); // fetch helm charts from all the provided helm repositories (parallel)\n      // Promise.allSettled is used to account for promise failure(s) - in cases the  user has provided invalid helm repo\n\n      const chartPromises = await Promise.allSettled(promiseList);\n      const latestCharts = chartPromises.filter(tp => tp.status === 'fulfilled') // remove failed promises\n      .map(tp => ({\n        entries: tp.value.entries,\n        repo: helmRepos[chartPromises.indexOf(tp)]\n      })) // extract chart entries with respective repo data\n      .flatMap(({\n        entries,\n        repo\n      }) => Object.values(entries).map(charts => ({ ...charts[0],\n        repo\n      })) // flatten chart entries to single array with respective repo\n      );\n      this.state.charts = latestCharts;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve helm repo charts.');\n    } finally {\n      this.state.chartsLoading = false;\n    }\n  }\n\n  async getResourcePools() {\n    this.state.resourcePoolsLoading = true;\n\n    try {\n      const resourcePools = await this.KubernetesResourcePoolService.get();\n      const nonSystemNamespaces = resourcePools.filter(resourcePool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSystemNamespace(resourcePool.Namespace.Name));\n      this.state.resourcePools = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default()(nonSystemNamespaces, ({\n        Namespace\n      }) => Namespace.Name === 'default' ? 0 : 1);\n      this.state.resourcePool = this.state.resourcePools[0];\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve initial helm data.');\n    } finally {\n      this.state.resourcePoolsLoading = false;\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.state = {\n        appName: '',\n        chart: null,\n        showCustomValues: false,\n        actionInProgress: false,\n        resourcePools: [],\n        resourcePool: '',\n        values: null,\n        originalvalues: null,\n        repos: [],\n        charts: [],\n        loadingValues: false,\n        isEditorDirty: false,\n        chartsLoading: false,\n        resourcePoolsLoading: false,\n        viewReady: false,\n        isAdmin: this.Authentication.isAdmin(),\n        globalRepository: undefined\n      };\n      const helmRepos = await this.getHelmRepoURLs();\n      await Promise.all([this.getLatestCharts(helmRepos), this.getResourcePools()]);\n      this.state.viewReady = true;\n    });\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\nHelmTemplatesController.$inject = [\"$analytics\", \"$async\", \"$state\", \"$window\", \"$anchorScroll\", \"Authentication\", \"HelmService\", \"KubernetesResourcePoolService\", \"Notifications\", \"ModalService\"];//# sourceURL=webpack-internal:///67316\n");

}),

71228:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helm_templates_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helm-templates.controller */ 67316);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./helm-templates.html */ 18236);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('helmTemplatesView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _helm_templates_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///71228\n");

}),

65473:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubeServicesItemViewController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/formValidationHelper */ 54241);\n/* harmony import */ var Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/application/models/constants */ 20783);\n\n\n\n\n\nclass KubeServicesItemViewController {\n  /* @ngInject */\n  constructor(EndpointProvider, Authentication) {\n    this.EndpointProvider = EndpointProvider;\n    this.Authentication = Authentication;\n    this.KubernetesApplicationPublishingTypes = Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_4__.KubernetesApplicationPublishingTypes;\n  }\n\n  addPort() {\n    const port = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesServicePort();\n    port.nodePort = '';\n    port.port = '';\n    port.targetPort = '';\n    port.protocol = 'TCP';\n    this.service.Ports.push(port);\n  }\n\n  removePort(index) {\n    this.service.Ports.splice(index, 1);\n  }\n\n  servicePort(index) {\n    const targetPort = this.service.Ports[index].targetPort;\n    this.service.Ports[index].port = targetPort;\n    this.onChangeServicePort();\n  }\n\n  isAdmin() {\n    return this.Authentication.isAdmin();\n  }\n\n  onChangeContainerPort() {\n    const state = this.state.duplicates.targetPort;\n\n    const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(this.service.Ports, sp => sp.targetPort);\n\n    const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDuplicates(source);\n    state.refs = duplicates;\n    state.hasRefs = Object.keys(duplicates).length > 0;\n  }\n\n  onChangeServicePort() {\n    const state = this.state.duplicates.servicePort;\n\n    const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(this.service.Ports, sp => sp.port);\n\n    const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDuplicates(source);\n    state.refs = duplicates;\n    state.hasRefs = Object.keys(duplicates).length > 0;\n    this.service.servicePortError = state.hasRefs;\n  }\n\n  onChangeNodePort() {\n    const state = this.state.duplicates.nodePort; // create a list of all the node ports (number[]) in the cluster and current form\n\n    const clusterNodePortsWithoutCurrentService = this.nodePortServices.filter(npService => npService.Name !== this.service.Name).map(npService => npService.Ports).flat().map(npServicePorts => npServicePorts.NodePort);\n    const formNodePortsWithoutCurrentService = this.formServices.filter(formService => formService.Type === Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_4__.KubernetesApplicationPublishingTypes.NODE_PORT && formService.Name !== this.service.Name).map(formService => formService.Ports).flat().map(formServicePorts => formServicePorts.nodePort);\n    const serviceNodePorts = this.service.Ports.map(sp => sp.nodePort); // getDuplicates cares about the index, so put the serviceNodePorts at the start\n\n    const allNodePortsWithoutCurrentService = [...clusterNodePortsWithoutCurrentService, ...formNodePortsWithoutCurrentService];\n    const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDuplicateNodePorts(serviceNodePorts, allNodePortsWithoutCurrentService);\n    state.refs = duplicates;\n    state.hasRefs = Object.keys(duplicates).length > 0;\n    this.service.nodePortError = state.hasRefs;\n  }\n\n  $onInit() {\n    if (this.service.Ports.length === 0) {\n      this.addPort();\n    }\n\n    this.state = {\n      duplicates: {\n        targetPort: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__.KubernetesFormValidationReferences(),\n        servicePort: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__.KubernetesFormValidationReferences(),\n        nodePort: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__.KubernetesFormValidationReferences()\n      },\n      endpointId: this.EndpointProvider.endpointID()\n    };\n  }\n\n}\nKubeServicesItemViewController.$inject = [\"EndpointProvider\", \"Authentication\"];//# sourceURL=webpack-internal:///65473\n");

}),

1542:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kube_services_item_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kube-services-item.controller */ 65473);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-services-item.html */ 74226);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubeServicesItemView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_services_item_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    nodePortServices: '<',\n    formServices: '<',\n    service: '=',\n    isEdit: '<',\n    loadbalancerEnabled: '<'\n  }\n});//# sourceURL=webpack-internal:///1542\n");

}),

54466:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubeServicesViewController; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/application/models/constants */ 20783);\n/* harmony import */ var Kubernetes_react_views_networks_services_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/react/views/networks/services/service */ 27471);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n\n\n\n\nclass KubeServicesViewController {\n  /* @ngInject */\n  constructor($async, EndpointProvider, Authentication) {\n    this.$async = $async;\n    this.EndpointProvider = EndpointProvider;\n    this.Authentication = Authentication;\n    this.asyncOnInit = this.asyncOnInit.bind(this);\n  }\n\n  addEntry(service) {\n    const p = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesService();\n    p.Type = service;\n    p.Selector = this.formValues.Selector;\n    p.Name = this.getUniqName();\n    this.formValues.Services.push(p);\n  }\n\n  getUniqName() {\n    //services name will follow thia patten: service, service-2, service-3...\n    let nameIndex = 2;\n    let UniqName = this.formValues.Name;\n    const services = this.formValues.Services;\n    const sortServices = services.sort((a, b) => {\n      return a.Name.localeCompare(b.Name);\n    });\n\n    if (sortServices.length !== 0) {\n      sortServices.forEach(service => {\n        if (service.Name === UniqName) {\n          UniqName = this.formValues.Name + '-' + nameIndex;\n          nameIndex += 1;\n        }\n      });\n    }\n\n    return UniqName;\n  }\n\n  deleteService(index) {\n    this.formValues.Services.splice(index, 1);\n  }\n\n  addPort(index) {\n    const p = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServicePort();\n    this.formValues.Services[index].Ports.push(p);\n  }\n\n  serviceType(type) {\n    switch (type) {\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.CLUSTER_IP:\n        return Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.CLUSTER_IP;\n\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.NODE_PORT:\n        return Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.NODE_PORT;\n\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.LOAD_BALANCER:\n        return Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.LOAD_BALANCER;\n    }\n  }\n\n  isAdmin() {\n    return this.Authentication.isAdmin();\n  }\n\n  iconStyle(type) {\n    switch (type) {\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.CLUSTER_IP:\n        return 'fa fa-list-alt';\n\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.NODE_PORT:\n        return 'fa fa-list';\n\n      case Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.LOAD_BALANCER:\n        return 'fa fa-project-diagram';\n    }\n  }\n\n  async asyncOnInit() {\n    try {\n      // get all nodeport services in the cluster, to validate unique nodeports in the form\n      const allSettledServices = await Promise.allSettled(this.namespaces.map(namespace => (0,Kubernetes_react_views_networks_services_service__WEBPACK_IMPORTED_MODULE_2__.getServices)(this.state.endpointId, namespace)));\n      const allServices = allSettledServices.filter(settledService => settledService.status === 'fulfilled' && settledService.value).map(fulfilledService => fulfilledService.value).flat();\n      this.nodePortServices = allServices.filter(service => service.Type === 'NodePort');\n    } catch (error) {\n      (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_3__.notifyError)('失败', error, 'Failed getting services');\n    }\n  }\n\n  $onInit() {\n    this.state = {\n      serviceType: [{\n        typeName: Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.CLUSTER_IP,\n        typeValue: Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.CLUSTER_IP\n      }, {\n        typeName: Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.NODE_PORT,\n        typeValue: Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.NODE_PORT\n      }, {\n        typeName: Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesServiceTypes.LOAD_BALANCER,\n        typeValue: Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.LOAD_BALANCER\n      }],\n      selected: Kubernetes_models_application_models_constants__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.CLUSTER_IP,\n      endpointId: this.EndpointProvider.endpointID()\n    };\n    return this.$async(this.asyncOnInit);\n  }\n\n}\nKubeServicesViewController.$inject = [\"$async\", \"EndpointProvider\", \"Authentication\"];//# sourceURL=webpack-internal:///54466\n");

}),

14957:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kube_services_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kube-services.controller */ 54466);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-services.html */ 68629);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubeServicesView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_services_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    formValues: '=',\n    isEdit: '<',\n    namespaces: '<',\n    loadbalancerEnabled: '<'\n  }\n});//# sourceURL=webpack-internal:///14957\n");

}),

30761:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubectlShellController; }\n/* harmony export */ });\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xterm */ 96049);\n/* harmony import */ var xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm/lib/addons/fit/fit */ 13501);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n\n\n\nclass KubectlShellController {\n  /* @ngInject */\n  constructor(TerminalWindow, $window, $async, EndpointProvider, LocalStorage, Notifications) {\n    this.$async = $async;\n    this.$window = $window;\n    this.TerminalWindow = TerminalWindow;\n    this.EndpointProvider = EndpointProvider;\n    this.LocalStorage = LocalStorage;\n    this.Notifications = Notifications;\n\n    $window.onbeforeunload = () => {\n      if (this.state.shell.connected) {\n        return '';\n      }\n    };\n  }\n\n  disconnect() {\n    if (this.state.shell.connected) {\n      this.state.shell.connected = false;\n      this.state.icon = 'fas fa-window-minimize';\n      this.state.shell.socket.close();\n      this.state.shell.term.dispose();\n      this.TerminalWindow.terminalclose();\n      this.$window.onresize = null;\n    }\n  }\n\n  screenClear() {\n    this.state.shell.term.clear();\n  }\n\n  miniRestore() {\n    if (this.state.css === 'mini') {\n      this.state.css = 'normal';\n      this.state.icon = 'fas fa-window-minimize';\n      this.TerminalWindow.terminalopen();\n    } else {\n      this.state.css = 'mini';\n      this.state.icon = 'fas fa-window-restore';\n      this.TerminalWindow.terminalclose();\n    }\n  }\n\n  configureSocketAndTerminal(socket, term) {\n    socket.onopen = () => {\n      const terminal_container = document.getElementById('terminal-container');\n      term.open(terminal_container);\n      term.setOption('cursorBlink', true);\n      term.focus();\n      term.fit();\n      term.writeln('#Run kubectl commands inside here');\n      term.writeln('#例如 kubectl get all');\n      term.writeln('');\n    };\n\n    term.on('data', data => {\n      socket.send(data);\n    });\n\n    socket.onmessage = msg => {\n      term.write(msg.data);\n    };\n\n    socket.onerror = err => {\n      this.disconnect();\n\n      if (err.target.readyState !== WebSocket.CLOSED) {\n        this.Notifications.error('失败', err, 'Websocket connection error');\n      }\n    };\n\n    this.$window.onresize = () => {\n      this.TerminalWindow.terminalresize();\n    };\n\n    socket.onclose = this.disconnect.bind(this);\n    this.state.shell.connected = true;\n  }\n\n  connectConsole() {\n    this.TerminalWindow.terminalopen();\n    this.state.css = 'normal';\n    const params = {\n      token: this.LocalStorage.getJWT(),\n      endpointId: this.EndpointProvider.endpointID()\n    };\n    const wsProtocol = this.$window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n    const path = (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_2__.baseHref)() + 'api/websocket/kubernetes-shell';\n    const base = path.startsWith('http') ? path.replace(/^https?:\\/\\//i, '') : window.location.host + path;\n    const queryParams = Object.entries(params).map(([k, v]) => `${k}=${v}`).join('&');\n    const url = `${wsProtocol}${base}?${queryParams}`;\n    xterm__WEBPACK_IMPORTED_MODULE_0__.Terminal.applyAddon(xterm_lib_addons_fit_fit__WEBPACK_IMPORTED_MODULE_1__);\n    this.state.shell.socket = new WebSocket(url);\n    this.state.shell.term = new xterm__WEBPACK_IMPORTED_MODULE_0__.Terminal();\n    this.configureSocketAndTerminal(this.state.shell.socket, this.state.shell.term);\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.state = {\n        css: 'normal',\n        icon: 'fa-window-minimize',\n        shell: {\n          connected: false,\n          socket: null,\n          term: null\n        }\n      };\n    });\n  }\n\n  $onDestroy() {\n    if (this.state.shell.connected) {\n      this.disconnect();\n      this.$window.onresize = null;\n    }\n  }\n\n}\nKubectlShellController.$inject = [\"TerminalWindow\", \"$window\", \"$async\", \"EndpointProvider\", \"LocalStorage\", \"Notifications\"];//# sourceURL=webpack-internal:///30761\n");

}),

4546:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kubernetesConfigurationData.html */ 80331);\n\nangular.module('portainer.kubernetes').component('kubernetesConfigurationData', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesConfigurationDataController',\n  bindings: {\n    formValues: '=',\n    isDockerConfig: '=',\n    onChangeValidation: '&',\n    isValid: '=',\n    isCreation: '=',\n    isEditorDirty: '='\n  }\n});//# sourceURL=webpack-internal:///4546\n");

}),

16591:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! buffer */ 94214);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var chardet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! chardet */ 28380);\n/* harmony import */ var chardet__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(chardet__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! js-base64 */ 52300);\n/* harmony import */ var Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/formValidationHelper */ 54241);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigurationDataController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    Object.assign(this, {\n      $async,\n      Notifications\n    });\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.editorUpdateAsync = this.editorUpdateAsync.bind(this);\n    this.onFileLoad = this.onFileLoad.bind(this);\n    this.onFileLoadAsync = this.onFileLoadAsync.bind(this);\n    this.showSimpleMode = this.showSimpleMode.bind(this);\n    this.showAdvancedMode = this.showAdvancedMode.bind(this);\n    this.KubernetesConfigurationKinds = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesConfigurationKinds;\n    this.KubernetesSecretTypeOptions = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesSecretTypeOptions;\n  }\n\n  onChangeKey(entry) {\n    if (entry && entry.Used) {\n      return;\n    }\n\n    this.onChangeValidation();\n    this.state.duplicateKeys = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(this.formValues.Data, data => data.Key));\n    this.state.invalidKeys = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getInvalidKeys(lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(this.formValues.Data, data => data.Key));\n    this.isValid = Object.keys(this.state.duplicateKeys).length === 0 && Object.keys(this.state.invalidKeys).length === 0;\n  }\n\n  addEntry() {\n    this.formValues.Data.push(new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationFormValuesEntry()); // logic for setting required keys for new entries, based on the secret type\n\n    if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n      const newDataIndex = this.formValues.Data.length - 1;\n\n      switch (this.formValues.Type) {\n        case this.KubernetesSecretTypeOptions.DOCKERCFG.value:\n          this.addMissingKeys(['dockercfg'], newDataIndex);\n          break;\n\n        case this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n          this.addMissingKeys(['.dockerconfigjson'], newDataIndex);\n          break;\n\n        case this.KubernetesSecretTypeOptions.BASICAUTH.value:\n          // only add a required key if there is no required key out of username and password\n          if (!this.formValues.Data.some(entry => entry.Key === 'username' || entry.Key === 'password')) {\n            this.addMissingKeys(['username', 'password'], newDataIndex);\n          }\n\n          break;\n\n        case this.KubernetesSecretTypeOptions.SSHAUTH.value:\n          this.addMissingKeys(['ssh-privatekey'], newDataIndex);\n          break;\n\n        case this.KubernetesSecretTypeOptions.TLS.value:\n          this.addMissingKeys(['tls.crt', 'tls.key'], newDataIndex);\n          break;\n\n        case this.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n          this.addMissingKeys(['token-id', 'token-secret'], newDataIndex);\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    this.onChangeValidation();\n  } // addMissingKeys adds the keys in the keys array to the entry at the index provided and stops when the first one is added\n\n\n  addMissingKeys(keys, newDataIndex) {\n    for (let key of keys) {\n      if (this.formValues.Data.every(entry => entry.Key !== key)) {\n        this.formValues.Data[newDataIndex].Key = key;\n        return;\n      }\n    }\n  }\n\n  isRequiredKey(key) {\n    if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n      switch (this.formValues.Type) {\n        case this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n          if (key === '.dockerconfigjson') {\n            return true;\n          }\n\n          break;\n\n        case this.KubernetesSecretTypeOptions.DOCKERCFG.value:\n          if (key === '.dockercfg') {\n            return true;\n          }\n\n          break;\n\n        case this.KubernetesSecretTypeOptions.SSHAUTH.value:\n          if (key === 'ssh-privatekey') {\n            return true;\n          }\n\n          break;\n\n        case this.KubernetesSecretTypeOptions.TLS.value:\n          if (key === 'tls.crt' || key === 'tls.key') {\n            return true;\n          }\n\n          break;\n\n        case this.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n          if (key === 'token-id' || key === 'token-secret') {\n            return true;\n          }\n\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return false;\n  }\n\n  removeEntry(index, entry) {\n    if (entry.Used) {\n      return;\n    }\n\n    this.formValues.Data.splice(index, 1);\n    this.onChangeKey();\n  }\n\n  async editorUpdateAsync(value) {\n    if (this.formValues.DataYaml !== value) {\n      this.formValues.DataYaml = value;\n      this.isEditorDirty = true;\n    }\n  }\n\n  editorUpdate(value) {\n    return this.$async(this.editorUpdateAsync, value);\n  }\n\n  async onFileLoadAsync(event) {\n    // exit if the file is too big\n    const maximumFileSizeBytes = 1024 * 1024; // 1MB\n\n    if (event.target.result.byteLength > maximumFileSizeBytes) {\n      this.Notifications.error('File size is too big', 'File size is too big', 'Select a file that is 1MB or smaller.');\n      return;\n    }\n\n    const entry = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationFormValuesEntry();\n\n    try {\n      const encoding = chardet__WEBPACK_IMPORTED_MODULE_3___default().detect(buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(event.target.result));\n      const decoder = new TextDecoder(encoding);\n      entry.IsBinary = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].isBinary(encoding);\n\n      if (!entry.IsBinary) {\n        entry.Value = decoder.decode(event.target.result);\n      } else {\n        const stringValue = decoder.decode(event.target.result);\n        entry.Value = js_base64__WEBPACK_IMPORTED_MODULE_4__.Base64.encode(stringValue);\n      }\n    } catch (error) {\n      this.Notifications.error('Failed to upload file', error, 'Failed to upload file');\n      return;\n    }\n\n    entry.Key = event.target.fileName;\n\n    if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n      if (this.isDockerConfig) {\n        if (this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCFG.value) {\n          entry.Key = '.dockercfg';\n        } else {\n          entry.Key = '.dockerconfigjson';\n        }\n      }\n\n      if (this.formValues.Type === this.KubernetesSecretTypeOptions.TLS.value) {\n        const isCrt = entry.Value.indexOf('BEGIN CERTIFICATE') !== -1;\n\n        if (isCrt) {\n          entry.Key = 'tls.crt';\n        }\n\n        const isKey = entry.Value.indexOf('PRIVATE KEY') !== -1;\n\n        if (isKey) {\n          entry.Key = 'tls.key';\n        }\n      }\n    } // if this.formValues.Data has a key that matches an existing key, then replace it\n\n\n    const existingEntryIndex = this.formValues.Data.findIndex(data => data.Key === entry.Key || data.Value === '' && data.Key === '');\n\n    if (existingEntryIndex !== -1) {\n      this.formValues.Data[existingEntryIndex] = entry;\n    } else {\n      this.formValues.Data.push(entry);\n    }\n\n    this.onChangeKey();\n  }\n\n  isEntryRequired() {\n    if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n      if (this.formValues.Data.length === 1) {\n        if (this.formValues.Type !== this.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  onFileLoad(event) {\n    return this.$async(this.onFileLoadAsync, event);\n  }\n\n  addEntryFromFile(file) {\n    if (file) {\n      const temporaryFileReader = new FileReader();\n      temporaryFileReader.fileName = file.name;\n      temporaryFileReader.onload = this.onFileLoad;\n      temporaryFileReader.readAsArrayBuffer(file);\n    }\n  }\n\n  showSimpleMode() {\n    this.formValues.IsSimple = true;\n    this.formValues.Data = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].parseYaml(this.formValues);\n    this.onChangeKey();\n  }\n\n  showAdvancedMode() {\n    this.formValues.IsSimple = false;\n    this.formValues.DataYaml = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].parseData(this.formValues);\n  }\n\n  $onInit() {\n    this.state = {\n      duplicateKeys: [],\n      invalidKeys: {}\n    };\n  }\n\n}\n\nKubernetesConfigurationDataController.$inject = [\"$async\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationDataController);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').controller('KubernetesConfigurationDataController', KubernetesConfigurationDataController);//# sourceURL=webpack-internal:///16591\n");

}),

42718:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourceReservation.html */ 37751);\n\nangular.module('portainer.kubernetes').component('kubernetesResourceReservation', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourceReservationController',\n  bindings: {\n    description: '@',\n    cpuReservation: '<',\n    cpuUsage: '<',\n    cpuLimit: '<',\n    memoryReservation: '<',\n    memoryUsage: '<',\n    memoryLimit: '<',\n    displayUsage: '<'\n  }\n});//# sourceURL=webpack-internal:///42718\n");

}),

44579:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass KubernetesResourceReservationController {\n  usageValues() {\n    if (this.cpuLimit) {\n      this.cpuReservationPercent = Math.round(this.cpuReservation / this.cpuLimit * 100);\n    }\n\n    if (this.memoryLimit) {\n      this.memoryReservationPercent = Math.round(this.memoryReservation / this.memoryLimit * 100);\n    }\n\n    if (this.displayUsage && this.cpuLimit && this.memoryLimit) {\n      this.cpuUsagePercent = Math.round(this.cpuUsage / this.cpuLimit * 100);\n      this.memoryUsagePercent = Math.round(this.memoryUsage / this.memoryLimit * 100);\n    }\n  }\n\n  $onInit() {\n    this.usageValues();\n  }\n\n  $onChanges() {\n    this.usageValues();\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourceReservationController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesResourceReservationController', KubernetesResourceReservationController);//# sourceURL=webpack-internal:///44579\n");

}),

15572:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./viewLoading.html */ 41776);\n\nangular.module('portainer.kubernetes').component('kubernetesViewLoading', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    viewReady: '<'\n  }\n});//# sourceURL=webpack-internal:///15572\n");

}),

31938:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./yamlInspector.html */ 96354);\n\nangular.module('portainer.kubernetes').component('kubernetesYamlInspector', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesYamlInspectorController',\n  bindings: {\n    key: '@',\n    data: '<'\n  }\n});//# sourceURL=webpack-internal:///31938\n");

}),

50346:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\nclass KubernetesYamlInspectorController {\n  /* @ngInject */\n  constructor(clipboard) {\n    this.clipboard = clipboard;\n    this.expanded = false;\n  }\n\n  copyYAML() {\n    this.clipboard.copyText(this.data);\n    $('#copyNotificationYAML').show().fadeOut(2500);\n  }\n\n  toggleYAMLInspectorExpansion() {\n    let selector = 'kubernetes-yaml-inspector code-editor > div.CodeMirror';\n    let height = this.expanded ? '500px' : '80vh';\n    $(selector).css({\n      height: height\n    });\n    this.expanded = !this.expanded;\n  }\n\n}\n\nKubernetesYamlInspectorController.$inject = [\"clipboard\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesYamlInspectorController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesYamlInspectorController', KubernetesYamlInspectorController);//# sourceURL=webpack-internal:///50346\n");

}),

10293:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_converters_deployment__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/converters/deployment */ 95929);\n/* harmony import */ var Kubernetes_converters_daemonSet__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Kubernetes/converters/daemonSet */ 12512);\n/* harmony import */ var Kubernetes_converters_statefulSet__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Kubernetes/converters/statefulSet */ 15986);\n/* harmony import */ var Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Kubernetes/converters/service */ 86998);\n/* harmony import */ var Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Kubernetes/converters/persistentVolumeClaim */ 56636);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_ingress_helper__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Kubernetes/ingress/helper */ 7587);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _apiPortsToPublishedPorts(pList, pRefs) {\n  const ports = lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(pList, item => {\n    const res = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPort();\n    res.Port = item.port;\n    res.TargetPort = item.targetPort;\n    res.NodePort = item.nodePort;\n    res.Protocol = item.protocol;\n    return res;\n  });\n\n  lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(ports, port => {\n    if (isNaN(port.TargetPort)) {\n      const targetPort = lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default()(pRefs, {\n        name: port.TargetPort\n      });\n\n      if (targetPort) {\n        port.TargetPort = targetPort.containerPort;\n      }\n    }\n  });\n\n  return ports;\n}\n\nclass KubernetesApplicationConverter {\n  static applicationCommon(res, data, pods, service, ingresses) {\n    const containers = data.spec.template ? lodash_es_without__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_concat__WEBPACK_IMPORTED_MODULE_4___default()(data.spec.template.spec.containers, data.spec.template.spec.initContainers), undefined) : data.spec.containers;\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.Metadata = data.metadata;\n\n    if (data.metadata.labels) {\n      const {\n        labels\n      } = data.metadata;\n      res.StackId = labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationStackIdLabel] ? parseInt(labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationStackIdLabel], 10) : null;\n      res.StackName = labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationStackNameLabel] || '';\n      res.ApplicationKind = labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationKindLabel] || '';\n      res.ApplicationOwner = labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationOwnerLabel] || '';\n      res.ApplicationName = labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationNameLabel] || res.Name;\n    }\n\n    res.Note = data.metadata.annotations ? data.metadata.annotations[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesPortainerApplicationNote] || '' : '';\n    res.ResourcePool = data.metadata.namespace;\n\n    if (containers.length) {\n      res.Image = containers[0].image;\n    }\n\n    if (data.spec.template && data.spec.template.spec && data.spec.template.spec.imagePullSecrets && data.spec.template.spec.imagePullSecrets.length) {\n      res.RegistryId = parseInt(data.spec.template.spec.imagePullSecrets[0].name.replace('registry-', ''), 10);\n    }\n\n    res.CreationDate = data.metadata.creationTimestamp;\n    res.Env = lodash_es_without__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(containers, 'env')), undefined);\n    res.Pods = data.spec.selector ? Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].associatePodsAndApplication(pods, data.spec.selector) : [data];\n    const limits = {\n      Cpu: 0,\n      Memory: 0\n    };\n    res.Limits = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()(containers, (acc, item) => {\n      if (item.resources.limits && item.resources.limits.cpu) {\n        acc.Cpu += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_12__[\"default\"].parseCPU(item.resources.limits.cpu);\n      }\n\n      if (item.resources.limits && item.resources.limits.memory) {\n        acc.Memory += filesize_parser__WEBPACK_IMPORTED_MODULE_9___default()(item.resources.limits.memory, {\n          base: 10\n        });\n      }\n\n      return acc;\n    }, limits);\n    const requests = {\n      Cpu: 0,\n      Memory: 0\n    };\n    res.Requests = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()(containers, (acc, item) => {\n      if (item.resources.requests && item.resources.requests.cpu) {\n        acc.Cpu += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_12__[\"default\"].parseCPU(item.resources.requests.cpu);\n      }\n\n      if (item.resources.requests && item.resources.requests.memory) {\n        acc.Memory += filesize_parser__WEBPACK_IMPORTED_MODULE_9___default()(item.resources.requests.memory, {\n          base: 10\n        });\n      }\n\n      return acc;\n    }, requests);\n\n    if (service) {\n      const serviceType = service.spec.type;\n      res.ServiceType = serviceType;\n      res.ServiceId = service.metadata.uid;\n      res.ServiceName = service.metadata.name;\n      res.ClusterIp = service.spec.clusterIP;\n      res.ExternalIp = service.spec.externalIP;\n\n      if (serviceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesServiceTypes.LOAD_BALANCER) {\n        if (service.status.loadBalancer.ingress && service.status.loadBalancer.ingress.length > 0) {\n          res.LoadBalancerIPAddress = service.status.loadBalancer.ingress[0].ip || service.status.loadBalancer.ingress[0].hostname;\n        }\n      }\n\n      const portsRefs = lodash_es_concat__WEBPACK_IMPORTED_MODULE_4___default()(...lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(containers, container => container.ports));\n\n      const ports = _apiPortsToPublishedPorts(service.spec.ports, portsRefs);\n\n      const rules = Kubernetes_ingress_helper__WEBPACK_IMPORTED_MODULE_21__.KubernetesIngressHelper.findSBoundServiceIngressesRules(ingresses, service.metadata.name);\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(ports, port => port.IngressRules = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(rules, rule => rule.Port === port.Port));\n\n      res.PublishedPorts = ports;\n    }\n\n    if (data.spec.template) {\n      res.Volumes = data.spec.template.spec.volumes ? data.spec.template.spec.volumes : [];\n    } else {\n      res.Volumes = data.spec.volumes;\n    } // TODO: review\n    // this if() fixs direct use of PVC reference inside spec.template.spec.containers[0].volumeMounts\n    // instead of referencing the PVC the \"good way\" using spec.template.spec.volumes array\n    // Basically it creates an \"in-memory\" reference for the PVC, as if it was saved in\n    // spec.template.spec.volumes and retrieved from here.\n    //\n    // FIX FOR SFS ONLY ; as far as we know it's not possible to do this with DEPLOYMENTS/DAEMONSETS\n    //\n    // This may lead to destructing behaviours when we will allow external apps to be edited.\n    // 例如 if we try to generate the formValues and patch the app, SFS reference will be created under\n    // spec.template.spec.volumes and not be referenced directly inside spec.template.spec.containers[0].volumeMounts\n    // As we preserve original SFS name and try to build around it, it SHOULD be fine, but we definitely need to test this\n    // before allowing external apps modification\n\n\n    if (data.spec.volumeClaimTemplates) {\n      const vcTemplates = lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(data.spec.volumeClaimTemplates, vc => {\n        return {\n          name: vc.metadata.name,\n          persistentVolumeClaim: {\n            claimName: vc.metadata.name\n          }\n        };\n      });\n\n      const inexistingPVC = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(vcTemplates, vc => {\n        return !lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default()(res.Volumes, {\n          persistentVolumeClaim: {\n            claimName: vc.persistentVolumeClaim.claimName\n          }\n        });\n      });\n\n      res.Volumes = lodash_es_concat__WEBPACK_IMPORTED_MODULE_4___default()(res.Volumes, inexistingPVC);\n    }\n\n    const persistedFolders = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(res.Volumes, volume => volume.persistentVolumeClaim || volume.hostPath);\n\n    res.PersistedFolders = lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(persistedFolders, volume => {\n      const volumeMounts = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default()(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(containers, 'volumeMounts')), 'name');\n\n      const matchingVolumeMount = lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default()(volumeMounts, {\n        name: volume.name\n      });\n\n      if (matchingVolumeMount) {\n        const persistedFolder = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPersistedFolder();\n        persistedFolder.MountPath = matchingVolumeMount.mountPath;\n\n        if (volume.persistentVolumeClaim) {\n          persistedFolder.PersistentVolumeClaimName = volume.persistentVolumeClaim.claimName;\n        } else {\n          persistedFolder.HostPath = volume.hostPath.path;\n        }\n\n        return persistedFolder;\n      }\n    });\n    res.PersistedFolders = lodash_es_without__WEBPACK_IMPORTED_MODULE_5___default()(res.PersistedFolders, undefined);\n    res.ConfigurationVolumes = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()(res.Volumes, (acc, volume) => {\n      if (volume.configMap || volume.secret) {\n        const matchingVolumeMount = lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default()(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_8___default()(containers, 'volumeMounts')), {\n          name: volume.name\n        });\n\n        if (matchingVolumeMount) {\n          let items = [];\n          let configurationName = '';\n\n          if (volume.configMap) {\n            items = volume.configMap.items;\n            configurationName = volume.configMap.name;\n          } else {\n            items = volume.secret.items;\n            configurationName = volume.secret.secretName;\n          }\n\n          if (!items) {\n            const configurationVolume = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationConfigurationVolume();\n            configurationVolume.fileMountPath = matchingVolumeMount.mountPath;\n            configurationVolume.rootMountPath = matchingVolumeMount.mountPath;\n            configurationVolume.configurationName = configurationName;\n            acc.push(configurationVolume);\n          } else {\n            lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(items, item => {\n              const configurationVolume = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationConfigurationVolume();\n              configurationVolume.fileMountPath = matchingVolumeMount.mountPath + '/' + item.path;\n              configurationVolume.rootMountPath = matchingVolumeMount.mountPath;\n              configurationVolume.configurationKey = item.key;\n              configurationVolume.configurationName = configurationName;\n              acc.push(configurationVolume);\n            });\n          }\n        }\n      }\n\n      return acc;\n    }, []);\n  }\n\n  static apiPodToApplication(data, pods, service, ingresses) {\n    const res = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication();\n    KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n    res.ApplicationType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.POD;\n    return res;\n  }\n\n  static apiDeploymentToApplication(data, pods, service, ingresses) {\n    const res = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication();\n    KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n    res.ApplicationType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DEPLOYMENT;\n    res.DeploymentType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.REPLICATED;\n    res.DataAccessPolicy = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.SHARED;\n    res.RunningPodsCount = data.status.availableReplicas || data.status.replicas - data.status.unavailableReplicas || 0;\n    res.TotalPodsCount = data.spec.replicas;\n    return res;\n  }\n\n  static apiDaemonSetToApplication(data, pods, service, ingresses) {\n    const res = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication();\n    KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n    res.ApplicationType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DAEMONSET;\n    res.DeploymentType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.GLOBAL;\n    res.DataAccessPolicy = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.SHARED;\n    res.RunningPodsCount = data.status.numberAvailable || data.status.desiredNumberScheduled - data.status.numberUnavailable || 0;\n    res.TotalPodsCount = data.status.desiredNumberScheduled;\n    return res;\n  }\n\n  static apiStatefulSetToapplication(data, pods, service, ingresses) {\n    const res = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication();\n    KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n    res.ApplicationType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.STATEFULSET;\n    res.DeploymentType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.REPLICATED;\n    res.DataAccessPolicy = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.ISOLATED;\n    res.RunningPodsCount = data.status.readyReplicas || 0;\n    res.TotalPodsCount = data.spec.replicas;\n    res.HeadlessServiceName = data.spec.serviceName;\n    return res;\n  }\n\n  static applicationToFormValues(app, resourcePools, configurations, persistentVolumeClaims, nodesLabels, ingresses) {\n    const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_13__.KubernetesApplicationFormValues();\n    res.ApplicationType = app.ApplicationType;\n    res.ResourcePool = lodash_es_find__WEBPACK_IMPORTED_MODULE_6___default()(resourcePools, ['Namespace.Name', app.ResourcePool]);\n    res.Name = app.Name;\n    res.Services = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generateServicesFormValuesFromServices(app);\n    res.Selector = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generateSelectorFromService(app);\n    res.StackName = app.StackName;\n    res.ApplicationOwner = app.ApplicationOwner;\n    res.ImageModel.Image = app.Image;\n    res.ImageModel.Registry.Id = app.RegistryId;\n    res.ReplicaCount = app.TotalPodsCount;\n    res.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_12__[\"default\"].megaBytesValue(app.Limits.Memory);\n    res.CpuLimit = app.Limits.Cpu;\n    res.DeploymentType = app.DeploymentType;\n    res.DataAccessPolicy = app.DataAccessPolicy;\n    res.EnvironmentVariables = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generateEnvVariablesFromEnv(app.Env);\n    res.PersistedFolders = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generatePersistedFoldersFormValuesFromPersistedFolders(app.PersistedFolders, persistentVolumeClaims); // generate from PVC and app.PersistedFolders\n\n    res.Configurations = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generateConfigurationFormValuesFromEnvAndVolumes(app.Env, app.ConfigurationVolumes, configurations);\n    res.AutoScaler = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generateAutoScalerFormValueFromHorizontalPodAutoScaler(app.AutoScaler, res.ReplicaCount);\n    res.PublishedPorts = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generatePublishedPortsFormValuesFromPublishedPorts(app.ServiceType, app.PublishedPorts, ingresses);\n    res.Containers = app.Containers;\n\n    const isIngress = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(res.PublishedPorts, p => p.IngressName).length;\n\n    if (app.ServiceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesServiceTypes.LOAD_BALANCER) {\n      res.PublishingType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPublishingTypes.LOAD_BALANCER;\n    } else if (app.ServiceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesServiceTypes.NODE_PORT) {\n      res.PublishingType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPublishingTypes.NODE_PORT;\n    } else if (app.ServiceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesServiceTypes.CLUSTER_IP && isIngress) {\n      res.PublishingType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPublishingTypes.INGRESS;\n    } else {\n      res.PublishingType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationPublishingTypes.CLUSTER_IP;\n    }\n\n    if (app.Pods && app.Pods.length) {\n      Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].generatePlacementsFormValuesFromAffinity(res, app.Pods[0].Affinity, nodesLabels);\n    }\n\n    return res;\n  }\n\n  static applicationFormValuesToApplication(formValues) {\n    formValues.ApplicationOwner = Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].ownerToLabel(formValues.ApplicationOwner);\n    const claims = Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_19__[\"default\"].applicationFormValuesToVolumeClaims(formValues);\n    const rwx = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_14__[\"default\"].hasRWX(claims);\n    const deployment = formValues.DeploymentType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.REPLICATED && (claims.length === 0 || claims.length > 0 && formValues.DataAccessPolicy === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.SHARED) || formValues.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DEPLOYMENT;\n    const statefulSet = formValues.DeploymentType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.REPLICATED && claims.length > 0 && formValues.DataAccessPolicy === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.ISOLATED || formValues.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.STATEFULSET;\n    const daemonSet = formValues.DeploymentType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.GLOBAL && (claims.length === 0 || claims.length > 0 && formValues.DataAccessPolicy === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDataAccessPolicies.SHARED && rwx) || formValues.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DAEMONSET;\n    let app;\n\n    if (deployment) {\n      app = Kubernetes_converters_deployment__WEBPACK_IMPORTED_MODULE_15__[\"default\"].applicationFormValuesToDeployment(formValues, claims);\n    } else if (statefulSet) {\n      app = Kubernetes_converters_statefulSet__WEBPACK_IMPORTED_MODULE_17__[\"default\"].applicationFormValuesToStatefulSet(formValues, claims);\n    } else if (daemonSet) {\n      app = Kubernetes_converters_daemonSet__WEBPACK_IMPORTED_MODULE_16__[\"default\"].applicationFormValuesToDaemonSet(formValues, claims);\n    } else {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_20__[\"default\"]('Unable to determine which association to use to convert form');\n    }\n\n    let headlessService;\n\n    if (statefulSet) {\n      headlessService = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_18__[\"default\"].applicationFormValuesToHeadlessService(formValues);\n    }\n\n    let service = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_18__[\"default\"].applicationFormValuesToService(formValues);\n\n    if (!service.Ports.length) {\n      service = undefined;\n    }\n\n    let services = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_18__[\"default\"].applicationFormValuesToServices(formValues);\n    return [app, headlessService, services, service, claims];\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationConverter);//# sourceURL=webpack-internal:///10293\n");

}),

40654:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/truncate */ 80738);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_truncate__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_unset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/unset */ 59712);\n/* harmony import */ var lodash_es_unset__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_unset__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/config-map/models */ 13978);\n/* harmony import */ var Kubernetes_models_config_map_payloads__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/config-map/payloads */ 40879);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigMapConverter {\n  static apiToPortainerAccessConfigMap(data) {\n    const res = new Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPortainerAccessConfigMap();\n    res.Id = data.metadata.uid;\n    res.Data = data.data;\n    return res;\n  }\n\n  static createAccessPayload(data) {\n    const res = new Kubernetes_models_config_map_payloads__WEBPACK_IMPORTED_MODULE_6__.KubernetesConfigMapCreatePayload();\n\n    lodash_es_unset__WEBPACK_IMPORTED_MODULE_4___default()(res, 'binaryData');\n\n    res.metadata.name = data.Name;\n    res.metadata.namespace = data.Namespace;\n    res.data = data.Data;\n    return res;\n  }\n\n  static updateAccessPayload(data) {\n    const res = KubernetesConfigMapConverter.createAccessPayload(data);\n    res.metadata.uid = data.Id;\n    return res;\n  }\n  /**\n   * API ConfigMap to front ConfigMap\n   */\n\n\n  static apiToConfigMap(data, yaml) {\n    const res = new Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesConfigMap();\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.Namespace = data.metadata.namespace;\n    res.ConfigurationOwner = data.metadata.labels ? data.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerConfigurationOwnerLabel] : '';\n    res.CreationDate = data.metadata.creationTimestamp;\n    res.Yaml = yaml ? yaml.data : '';\n    res.Data = lodash_es_concat__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(data.data, (value, key) => {\n      const entry = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_8__.KubernetesConfigurationFormValuesEntry();\n      entry.Key = key;\n      entry.Value = value;\n      return entry;\n    }), lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(data.binaryData, (value, key) => {\n      const entry = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_8__.KubernetesConfigurationFormValuesEntry();\n      entry.Key = key;\n      entry.Value = value;\n      entry.IsBinary = true;\n      return entry;\n    }));\n    return res;\n  }\n  /**\n   * Generate a default ConfigMap Model\n   * with ID = 0 (showing it's a default)\n   * but setting his Namespace and Name\n   */\n\n\n  static defaultConfigMap(namespace, name) {\n    const res = new Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesConfigMap();\n    res.Name = name;\n    res.Namespace = namespace;\n    return res;\n  }\n  /**\n   * CREATE payload\n   */\n\n\n  static createPayload(data) {\n    const res = new Kubernetes_models_config_map_payloads__WEBPACK_IMPORTED_MODULE_6__.KubernetesConfigMapCreatePayload();\n    res.metadata.name = data.Name;\n    res.metadata.namespace = data.Namespace;\n\n    const configurationOwner = lodash_es_truncate__WEBPACK_IMPORTED_MODULE_1___default()(data.ConfigurationOwner, {\n      length: 63,\n      omission: ''\n    });\n\n    res.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(data.Data, entry => {\n      if (entry.IsBinary) {\n        res.binaryData[entry.Key] = entry.Value;\n      } else {\n        res.data[entry.Key] = entry.Value;\n      }\n    });\n\n    return res;\n  }\n  /**\n   * UPDATE payload\n   */\n\n\n  static updatePayload(data) {\n    const res = new Kubernetes_models_config_map_payloads__WEBPACK_IMPORTED_MODULE_6__.KubernetesConfigMapUpdatePayload();\n    res.metadata.uid = data.Id;\n    res.metadata.name = data.Name;\n    res.metadata.namespace = data.Namespace;\n    res.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerConfigurationOwnerLabel] = data.ConfigurationOwner;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(data.Data, entry => {\n      if (entry.IsBinary) {\n        res.binaryData[entry.Key] = entry.Value;\n      } else {\n        res.data[entry.Key] = entry.Value;\n      }\n    });\n\n    return res;\n  }\n\n  static configurationFormValuesToConfigMap(formValues) {\n    const res = new Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesConfigMap();\n    res.Id = formValues.Id;\n    res.Name = formValues.Name;\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.ConfigurationOwner = formValues.ConfigurationOwner;\n    res.Data = formValues.Data;\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigMapConverter);//# sourceURL=webpack-internal:///40654\n");

}),

10241:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\n\n\nclass KubernetesConfigurationConverter {\n  static secretToConfiguration(secret) {\n    const res = new Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfiguration();\n    res.Kind = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfigurationKinds.SECRET;\n    res.Id = secret.Id;\n    res.Name = secret.Name;\n    res.Type = secret.Type;\n    res.Namespace = secret.Namespace;\n    res.CreationDate = secret.CreationDate;\n    res.Yaml = secret.Yaml;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(secret.Data, entry => {\n      res.Data[entry.Key] = entry.Value;\n    });\n\n    res.ConfigurationOwner = secret.ConfigurationOwner;\n    res.IsRegistrySecret = secret.IsRegistrySecret;\n    res.SecretType = secret.SecretType;\n\n    if (secret.Annotations) {\n      res.ServiceAccountName = secret.Annotations['kubernetes.io/service-account.name'];\n    }\n\n    return res;\n  }\n\n  static configMapToConfiguration(configMap) {\n    const res = new Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfiguration();\n    res.Kind = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfigurationKinds.CONFIGMAP;\n    res.Id = configMap.Id;\n    res.Name = configMap.Name;\n    res.Namespace = configMap.Namespace;\n    res.CreationDate = configMap.CreationDate;\n    res.Yaml = configMap.Yaml;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(configMap.Data, entry => {\n      res.Data[entry.Key] = entry.Value;\n    });\n\n    res.ConfigurationOwner = configMap.ConfigurationOwner;\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationConverter);//# sourceURL=webpack-internal:///10241\n");

}),

12512:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/daemon-set/models */ 12745);\n/* harmony import */ var Kubernetes_models_daemon_set_payloads__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/daemon-set/payloads */ 82935);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Docker/helpers/imageHelper */ 20886);\n\n\n\n\n\n\n\n\n\nclass KubernetesDaemonSetConverter {\n  /**\n   * Generate KubernetesDaemonSet from KubernetesApplicationFormValues\n   * @param {KubernetesApplicationFormValues} formValues\n   */\n  static applicationFormValuesToDaemonSet(formValues, volumeClaims) {\n    const res = new Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesDaemonSet();\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.Name = formValues.Name;\n    res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n    res.ApplicationOwner = formValues.ApplicationOwner;\n    res.ApplicationName = formValues.Name;\n    res.ImageModel = formValues.ImageModel;\n    res.CpuLimit = formValues.CpuLimit;\n    res.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bytesValue(formValues.MemoryLimit);\n    res.Env = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateEnvOrVolumesFromConfigurations(res, formValues.Configurations);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateAffinityFromPlacements(res, formValues);\n    return res;\n  }\n  /**\n   * Generate CREATE payload from DaemonSet\n   * @param {KubernetesDaemonSetPayload} model DaemonSet to generate payload from\n   */\n\n\n  static createPayload(daemonSet) {\n    const payload = new Kubernetes_models_daemon_set_payloads__WEBPACK_IMPORTED_MODULE_2__.KubernetesDaemonSetCreatePayload();\n    payload.metadata.name = daemonSet.Name;\n    payload.metadata.namespace = daemonSet.Namespace;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationStackNameLabel] = daemonSet.StackName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationOwnerLabel] = daemonSet.ApplicationOwner;\n    payload.metadata.annotations[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNote] = daemonSet.Note;\n    payload.spec.replicas = daemonSet.ReplicaCount;\n    payload.spec.selector.matchLabels.app = daemonSet.Name;\n    payload.spec.template.metadata.labels.app = daemonSet.Name;\n    payload.spec.template.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;\n    payload.spec.template.spec.containers[0].name = daemonSet.Name;\n    payload.spec.template.spec.containers[0].image = (0,Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_7__.buildImageFullURI)(daemonSet.ImageModel);\n\n    if (daemonSet.ImageModel.Registry && daemonSet.ImageModel.Registry.Authentication) {\n      payload.spec.template.spec.imagePullSecrets = [{\n        name: `registry-${daemonSet.ImageModel.Registry.Id}`\n      }];\n    }\n\n    payload.spec.template.spec.affinity = daemonSet.Affinity;\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', daemonSet.Env);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', daemonSet.VolumeMounts);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', daemonSet.Volumes);\n\n    if (daemonSet.MemoryLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.memory = daemonSet.MemoryLimit;\n      payload.spec.template.spec.containers[0].resources.requests.memory = daemonSet.MemoryLimit;\n    }\n\n    if (daemonSet.CpuLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.cpu = daemonSet.CpuLimit;\n      payload.spec.template.spec.containers[0].resources.requests.cpu = daemonSet.CpuLimit;\n    }\n\n    if (!daemonSet.CpuLimit && !daemonSet.MemoryLimit) {\n      delete payload.spec.template.spec.containers[0].resources;\n    }\n\n    return payload;\n  }\n\n  static patchPayload(oldDaemonSet, newDaemonSet) {\n    const oldPayload = KubernetesDaemonSetConverter.createPayload(oldDaemonSet);\n    const newPayload = KubernetesDaemonSetConverter.createPayload(newDaemonSet);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_0__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDaemonSetConverter);//# sourceURL=webpack-internal:///12512\n");

}),

95929:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/deployment/models */ 59238);\n/* harmony import */ var Kubernetes_models_deployment_payloads__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/deployment/payloads */ 95008);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Docker/helpers/imageHelper */ 20886);\n\n\n\n\n\n\n\n\n\nclass KubernetesDeploymentConverter {\n  /**\n   * Generate KubernetesDeployment from KubernetesApplicationFormValues\n   * @param {KubernetesApplicationFormValues} formValues\n   */\n  static applicationFormValuesToDeployment(formValues, volumeClaims) {\n    const res = new Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesDeployment();\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.Name = formValues.Name;\n    res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n    res.ApplicationOwner = formValues.ApplicationOwner;\n    res.ApplicationName = formValues.Name;\n    res.ReplicaCount = formValues.ReplicaCount;\n    res.ImageModel = formValues.ImageModel;\n    res.CpuLimit = formValues.CpuLimit;\n    res.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bytesValue(formValues.MemoryLimit);\n    res.Env = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n    res.Containers = formValues.Containers;\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateEnvOrVolumesFromConfigurations(res, formValues.Configurations);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateAffinityFromPlacements(res, formValues);\n    return res;\n  }\n  /**\n   * Generate CREATE payload from Deployment\n   * @param {KubernetesDeploymentPayload} model Deployment to genereate payload from\n   */\n\n\n  static createPayload(deployment) {\n    const payload = new Kubernetes_models_deployment_payloads__WEBPACK_IMPORTED_MODULE_2__.KubernetesDeploymentCreatePayload();\n    payload.metadata.name = deployment.Name;\n    payload.metadata.namespace = deployment.Namespace;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationStackNameLabel] = deployment.StackName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNameLabel] = deployment.ApplicationName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationOwnerLabel] = deployment.ApplicationOwner;\n    payload.metadata.annotations[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNote] = deployment.Note;\n    payload.spec.replicas = deployment.ReplicaCount;\n    payload.spec.selector.matchLabels.app = deployment.Name;\n    payload.spec.template.metadata.labels.app = deployment.Name;\n    payload.spec.template.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPortainerApplicationNameLabel] = deployment.ApplicationName;\n    payload.spec.template.spec.containers[0].name = deployment.Name;\n\n    if (deployment.ImageModel) {\n      payload.spec.template.spec.containers[0].image = (0,Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_7__.buildImageFullURI)(deployment.ImageModel);\n\n      if (deployment.ImageModel.Registry && deployment.ImageModel.Registry.Authentication) {\n        payload.spec.template.spec.imagePullSecrets = [{\n          name: `registry-${deployment.ImageModel.Registry.Id}`\n        }];\n      }\n    }\n\n    payload.spec.template.spec.affinity = deployment.Affinity;\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', deployment.Env);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', deployment.VolumeMounts);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', deployment.Volumes);\n\n    if (deployment.MemoryLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.memory = deployment.MemoryLimit;\n      payload.spec.template.spec.containers[0].resources.requests.memory = deployment.MemoryLimit;\n    }\n\n    if (deployment.CpuLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.cpu = deployment.CpuLimit;\n      payload.spec.template.spec.containers[0].resources.requests.cpu = deployment.CpuLimit;\n    }\n\n    if (!deployment.CpuLimit && !deployment.MemoryLimit) {\n      delete payload.spec.template.spec.containers[0].resources;\n    }\n\n    return payload;\n  }\n\n  static patchPayload(oldDeployment, newDeployment) {\n    const oldPayload = KubernetesDeploymentConverter.createPayload(oldDeployment);\n    const newPayload = KubernetesDeploymentConverter.createPayload(newDeployment);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_0__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDeploymentConverter);//# sourceURL=webpack-internal:///95929\n");

}),

43083:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_event_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/event/models */ 82239);\n\n\nclass KubernetesEventConverter {\n  static apiToEvent(data) {\n    const res = new Kubernetes_models_event_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesEvent();\n    res.Id = data.metadata.uid;\n    res.Date = data.lastTimestamp || data.eventTime;\n    res.Type = data.type;\n    res.Message = data.message;\n    res.Involved = data.involvedObject;\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesEventConverter);//# sourceURL=webpack-internal:///43083\n");

}),

2544:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesNamespaceConverter; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/truncate */ 80738);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/namespace/models */ 35076);\n/* harmony import */ var Kubernetes_models_namespace_payloads__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/namespace/payloads */ 63829);\n/* harmony import */ var Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/resource-pool/models */ 72210);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\n\n\n\n\nclass KubernetesNamespaceConverter {\n  static apiToNamespace(data, yaml) {\n    const res = new Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesNamespace();\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.CreationDate = data.metadata.creationTimestamp;\n    res.Status = data.status.phase;\n    res.Yaml = yaml ? yaml.data : '';\n    res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerResourcePoolNameLabel] : '';\n    res.ResourcePoolOwner = data.metadata.labels ? data.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerResourcePoolOwnerLabel] : '';\n    res.IsSystem = Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isDefaultSystemNamespace(data.metadata.name);\n\n    if (data.metadata.labels) {\n      const systemLabel = data.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerNamespaceSystemLabel];\n\n      if (!lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(systemLabel)) {\n        res.IsSystem = systemLabel === 'true';\n      }\n    }\n\n    return res;\n  }\n\n  static createPayload(namespace) {\n    const res = new Kubernetes_models_namespace_payloads__WEBPACK_IMPORTED_MODULE_3__.KubernetesNamespaceCreatePayload();\n    res.metadata.name = namespace.Name;\n    res.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerResourcePoolNameLabel] = namespace.ResourcePoolName;\n\n    if (namespace.ResourcePoolOwner) {\n      const resourcePoolOwner = lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0___default()(namespace.ResourcePoolOwner, {\n        length: 63,\n        omission: ''\n      });\n\n      res.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerResourcePoolOwnerLabel] = resourcePoolOwner;\n    }\n\n    return res;\n  }\n\n}//# sourceURL=webpack-internal:///2544\n");

}),

56636:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_volume_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/volume/models */ 72913);\n/* harmony import */ var Kubernetes_models_volume_payloads__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/volume/payloads */ 88296);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n\n\n\n\n\n\n\n\n\nclass KubernetesPersistentVolumeClaimConverter {\n  static apiToPersistentVolumeClaim(data, storageClasses, yaml) {\n    const res = new Kubernetes_models_volume_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPersistentVolumeClaim();\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.Namespace = data.metadata.namespace;\n    res.CreationDate = data.metadata.creationTimestamp;\n    res.Storage = `${data.spec.resources.requests.storage}B`;\n    res.StorageClass = lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()(storageClasses, {\n      Name: data.spec.storageClassName\n    });\n    res.Yaml = yaml ? yaml.data : '';\n    res.ApplicationOwner = data.metadata.labels ? data.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationOwnerLabel] : '';\n    res.ApplicationName = data.metadata.labels ? data.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationNameLabel] : '';\n    return res;\n  }\n  /**\n   * Generate KubernetesPersistentVolumeClaim list from KubernetesApplicationFormValues\n   * @param {KubernetesApplicationFormValues} formValues\n   */\n\n\n  static applicationFormValuesToVolumeClaims(formValues) {\n    lodash_es_remove__WEBPACK_IMPORTED_MODULE_2___default()(formValues.PersistedFolders, item => item.NeedsDeletion);\n\n    const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(formValues.PersistedFolders, item => {\n      const pvc = new Kubernetes_models_volume_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPersistentVolumeClaim();\n\n      if (!lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default()(item.ExistingVolume)) {\n        const existantPVC = item.ExistingVolume.PersistentVolumeClaim;\n        pvc.Name = existantPVC.Name;\n\n        if (item.PersistentVolumeClaimName) {\n          pvc.PreviousName = item.PersistentVolumeClaimName;\n        }\n\n        pvc.StorageClass = existantPVC.StorageClass;\n        pvc.Storage = existantPVC.Storage.charAt(0);\n        pvc.CreationDate = existantPVC.CreationDate;\n        pvc.Id = existantPVC.Id;\n      } else {\n        if (item.PersistentVolumeClaimName) {\n          pvc.Name = item.PersistentVolumeClaimName;\n          pvc.PreviousName = item.PersistentVolumeClaimName;\n        } else {\n          pvc.Name = formValues.Name + '-' + pvc.Name;\n        }\n\n        pvc.Storage = '' + item.Size + item.SizeUnit.charAt(0);\n        pvc.StorageClass = item.StorageClass;\n      }\n\n      pvc.MountPath = item.ContainerPath;\n      pvc.Namespace = formValues.ResourcePool.Namespace.Name;\n      pvc.ApplicationOwner = formValues.ApplicationOwner;\n      pvc.ApplicationName = formValues.Name;\n      return pvc;\n    });\n\n    return res;\n  }\n\n  static createPayload(pvc) {\n    const res = new Kubernetes_models_volume_payloads__WEBPACK_IMPORTED_MODULE_6__.KubernetesPersistentVolumClaimCreatePayload();\n    res.metadata.name = pvc.Name;\n    res.metadata.namespace = pvc.Namespace;\n    res.spec.resources.requests.storage = pvc.Storage;\n    res.spec.storageClassName = pvc.StorageClass ? pvc.StorageClass.Name : '';\n    res.metadata.labels.app = pvc.ApplicationName;\n    res.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationOwnerLabel] = pvc.ApplicationOwner;\n    res.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationNameLabel] = pvc.ApplicationName;\n    return res;\n  }\n\n  static patchPayload(oldPVC, newPVC) {\n    const oldPayload = KubernetesPersistentVolumeClaimConverter.createPayload(oldPVC);\n    const newPayload = KubernetesPersistentVolumeClaimConverter.createPayload(newPVC);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_4__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesPersistentVolumeClaimConverter);//# sourceURL=webpack-internal:///56636\n");

}),

57911:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/resource-pool/models */ 72210);\n/* harmony import */ var Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/namespace/models */ 35076);\n/* harmony import */ var Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/ingress/converter */ 47086);\n/* harmony import */ var _resourceQuota__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./resourceQuota */ 57456);\n\n\n\n\n\n\n\n\nclass KubernetesResourcePoolConverter {\n  static apiToResourcePool(namespace) {\n    const res = new Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourcePool();\n    res.Namespace = namespace;\n    res.Yaml = namespace.Yaml;\n    return res;\n  }\n\n  static formValuesToResourcePool(formValues) {\n    const namespace = new Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesNamespace();\n    namespace.Name = formValues.Name;\n    namespace.ResourcePoolName = formValues.Name;\n    namespace.ResourcePoolOwner = formValues.Owner;\n    namespace.IsSystem = formValues.IsSystem;\n    const quota = _resourceQuota__WEBPACK_IMPORTED_MODULE_6__[\"default\"].resourcePoolFormValuesToResourceQuota(formValues);\n\n    const ingMap = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(formValues.IngressClasses, c => {\n      if (c.Selected) {\n        c.Namespace = namespace.Name;\n        return Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_5__.KubernetesIngressConverter.resourcePoolIngressClassFormValueToIngress(c);\n      }\n    });\n\n    const ingresses = lodash_es_without__WEBPACK_IMPORTED_MODULE_1___default()(ingMap, undefined);\n\n    const registries = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(formValues.Registries, r => {\n      if (!r.RegistryAccesses[formValues.EndpointId]) {\n        r.RegistryAccesses[formValues.EndpointId] = {\n          Namespaces: []\n        };\n      }\n\n      if (!lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(r.RegistryAccesses[formValues.EndpointId].Namespaces, formValues.Name)) {\n        r.RegistryAccesses[formValues.EndpointId].Namespaces = [...r.RegistryAccesses[formValues.EndpointId].Namespaces, formValues.Name];\n      }\n\n      return r;\n    });\n\n    return [namespace, quota, ingresses, registries];\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourcePoolConverter);//# sourceURL=webpack-internal:///57911\n");

}),

57456:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/resource-quota/models */ 47685);\n/* harmony import */ var Kubernetes_models_resource_quota_payloads__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/resource-quota/payloads */ 75976);\n/* harmony import */ var Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/resourceQuotaHelper */ 21458);\n/* harmony import */ var Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/resource-pool/models */ 72210);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesResourceQuotaConverter {\n  static apiToResourceQuota(data, yaml) {\n    const res = new Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesResourceQuota();\n    res.Id = data.metadata.uid;\n    res.Namespace = data.metadata.namespace;\n    res.Name = data.metadata.name;\n    res.CpuLimit = 0;\n    res.MemoryLimit = 0;\n\n    if (data.spec.hard && data.spec.hard[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPULimit]) {\n      res.CpuLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].parseCPU(data.spec.hard[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPULimit]);\n    }\n\n    if (data.spec.hard && data.spec.hard[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryLimit]) {\n      res.MemoryLimit = filesize_parser__WEBPACK_IMPORTED_MODULE_1___default()(data.spec.hard[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryLimit], {\n        base: 10\n      });\n    }\n\n    res.MemoryLimitUsed = 0;\n\n    if (data.status.used && data.status.used[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryLimit]) {\n      res.MemoryLimitUsed = filesize_parser__WEBPACK_IMPORTED_MODULE_1___default()(data.status.used[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryLimit], {\n        base: 10\n      });\n    }\n\n    res.CpuLimitUsed = 0;\n\n    if (data.status.used && data.status.used[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPULimit]) {\n      res.CpuLimitUsed = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].parseCPU(data.status.used[Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPULimit]);\n    }\n\n    res.Yaml = yaml ? yaml.data : '';\n    res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPortainerResourcePoolNameLabel] : '';\n    res.ResourcePoolOwner = data.metadata.labels ? data.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPortainerResourcePoolOwnerLabel] : '';\n    return res;\n  }\n\n  static createPayload(quota) {\n    const res = new Kubernetes_models_resource_quota_payloads__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourceQuotaCreatePayload();\n    res.metadata.name = Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateResourceQuotaName(quota.Namespace);\n    res.metadata.namespace = quota.Namespace;\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmptyOrZero(res, `spec.hard['${Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPURequest}']`, quota.CpuLimit);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmptyOrZero(res, `spec.hard['${Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryRequest}']`, quota.MemoryLimit);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmptyOrZero(res, `spec.hard['${Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaCPULimit}']`, quota.CpuLimit);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmptyOrZero(res, `spec.hard['${Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerResourceQuotaMemoryLimit}']`, quota.MemoryLimit);\n    res.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPortainerResourcePoolNameLabel] = quota.ResourcePoolName;\n\n    if (quota.ResourcePoolOwner) {\n      res.metadata.labels[Kubernetes_models_resource_pool_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesPortainerResourcePoolOwnerLabel] = quota.ResourcePoolOwner;\n    }\n\n    return res;\n  }\n\n  static updatePayload(quota) {\n    const res = KubernetesResourceQuotaConverter.createPayload(quota);\n    res.metadata.uid = quota.Id;\n    return res;\n  }\n\n  static patchPayload(oldQuota, newQuota) {\n    const oldPayload = KubernetesResourceQuotaConverter.createPayload(oldQuota);\n    const newPayload = KubernetesResourceQuotaConverter.createPayload(newQuota);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_0__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n  static quotaToResourcePoolFormValues(quota) {\n    const res = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_8__.KubernetesResourcePoolFormValues(Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesResourceQuotaDefaults);\n    res.Name = quota.Namespace;\n    res.CpuLimit = quota.CpuLimit;\n    res.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].megaBytesValue(quota.MemoryLimit);\n\n    if (res.CpuLimit || res.MemoryLimit) {\n      res.HasQuota = true;\n    }\n\n    res.StorageClasses = quota.StorageRequests;\n    return res;\n  }\n\n  static resourcePoolFormValuesToResourceQuota(formValues) {\n    if (formValues.HasQuota) {\n      const quota = new Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesResourceQuota(formValues.Name);\n\n      if (formValues.HasQuota) {\n        quota.CpuLimit = formValues.CpuLimit;\n        quota.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bytesValue(formValues.MemoryLimit);\n      }\n\n      quota.ResourcePoolName = formValues.Name;\n      quota.ResourcePoolOwner = formValues.Owner;\n      return quota;\n    }\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourceQuotaConverter);//# sourceURL=webpack-internal:///57456\n");

}),

52341:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/truncate */ 80738);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_truncate__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_models_secret_payloads__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/secret/payloads */ 60622);\n/* harmony import */ var Kubernetes_models_secret_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/secret/models */ 69730);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesSecretConverter {\n  static createPayload(secret) {\n    const res = new Kubernetes_models_secret_payloads__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretCreatePayload();\n    res.metadata.name = secret.Name;\n    res.metadata.namespace = secret.Namespace;\n    res.type = secret.Type;\n\n    const configurationOwner = lodash_es_truncate__WEBPACK_IMPORTED_MODULE_3___default()(secret.ConfigurationOwner, {\n      length: 63,\n      omission: ''\n    });\n\n    res.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;\n    let annotation = '';\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(secret.Data, entry => {\n      if (entry.IsBinary) {\n        res.data[entry.Key] = entry.Value;\n        annotation += annotation !== '' ? '|' + entry.Key : entry.Key;\n      } else {\n        res.stringData[entry.Key] = entry.Value;\n      }\n    });\n\n    if (annotation !== '') {\n      res.metadata.annotations[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationDataAnnotation] = annotation;\n    }\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(secret.Annotations, entry => {\n      res.metadata.annotations[entry.name] = entry.value;\n    });\n\n    return res;\n  }\n\n  static updatePayload(secret) {\n    const res = new Kubernetes_models_secret_payloads__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretUpdatePayload();\n    res.metadata.name = secret.Name;\n    res.metadata.namespace = secret.Namespace;\n    res.type = secret.Type;\n    res.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationOwnerLabel] = secret.ConfigurationOwner;\n    let annotation = '';\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(secret.Data, entry => {\n      if (entry.IsBinary) {\n        res.data[entry.Key] = entry.Value;\n        annotation += annotation !== '' ? '|' + entry.Key : entry.Key;\n      } else {\n        res.stringData[entry.Key] = entry.Value;\n      }\n    });\n\n    if (annotation !== '') {\n      res.metadata.annotations[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationDataAnnotation] = annotation;\n    }\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(secret.Annotations, entry => {\n      res.metadata.annotations[entry.name] = entry.value;\n    });\n\n    return res;\n  }\n\n  static apiToSecret(payload, yaml) {\n    const res = new Kubernetes_models_secret_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesApplicationSecret();\n    res.Id = payload.metadata.uid;\n    res.Name = payload.metadata.name;\n    res.Namespace = payload.metadata.namespace;\n    res.Type = payload.type;\n    res.ConfigurationOwner = payload.metadata.labels ? payload.metadata.labels[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationOwnerLabel] : '';\n    res.CreationDate = payload.metadata.creationTimestamp;\n    res.Annotations = payload.metadata.annotations;\n    res.IsRegistrySecret = payload.metadata.annotations && !!payload.metadata.annotations['portainer.io/registry.id'];\n    res.Yaml = yaml ? yaml.data : '';\n    res.SecretType = payload.type;\n    res.Data = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(payload.data, (value, key) => {\n      const annotations = payload.metadata.annotations ? payload.metadata.annotations[Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerConfigurationDataAnnotation] : '';\n      const entry = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationFormValuesEntry();\n      entry.Key = key;\n      entry.IsBinary = lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(annotations, entry.Key);\n\n      if (!entry.IsBinary) {\n        entry.Value = atob(value);\n      } else {\n        entry.Value = value;\n      }\n\n      return entry;\n    });\n    return res;\n  }\n\n  static configurationFormValuesToSecret(formValues) {\n    const res = new Kubernetes_models_secret_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesApplicationSecret();\n    res.Name = formValues.Name;\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.Type = formValues.Type;\n    res.ConfigurationOwner = formValues.ConfigurationOwner;\n    res.Data = formValues.Data;\n\n    if (formValues.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSecretTypeOptions.CUSTOM.value) {\n      res.Type = formValues.customType;\n    }\n\n    if (formValues.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n      res.Annotations = [{\n        name: 'kubernetes.io/service-account.name',\n        value: formValues.ServiceAccountName\n      }];\n    }\n\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesSecretConverter);//# sourceURL=webpack-internal:///52341\n");

}),

86998:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_service_payloads__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/service/payloads */ 31249);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/helpers/serviceHelper */ 57637);\n\n\n\n\n\n\n\n\n\n\nfunction _publishedPortToServicePort(formValues, publishedPort, type) {\n  if (publishedPort.IsNew || !publishedPort.NeedsDeletion) {\n    const name = formValues.Name;\n    const res = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServicePort();\n    res.name = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_3___default()(name + '-' + publishedPort.ContainerPort + '-' + publishedPort.Protocol);\n    res.port = type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.LOAD_BALANCER ? publishedPort.LoadBalancerPort : publishedPort.ContainerPort;\n    res.targetPort = publishedPort.ContainerPort;\n    res.protocol = publishedPort.Protocol;\n\n    if (type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.NODE_PORT && publishedPort.NodePort) {\n      res.nodePort = publishedPort.NodePort;\n    } else if (type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.LOAD_BALANCER && publishedPort.LoadBalancerNodePort) {\n      res.nodePort = publishedPort.LoadBalancerNodePort;\n    } else {\n      delete res.nodePort;\n    }\n\n    return res;\n  }\n}\n\nclass KubernetesServiceConverter {\n  /**\n   * Generate KubernetesService from KubernetesApplicationFormValues\n   * @param {KubernetesApplicationFormValues} formValues\n   */\n  static applicationFormValuesToService(formValues) {\n    const res = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesService();\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.Name = formValues.Name;\n    res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n    res.ApplicationOwner = formValues.ApplicationOwner;\n    res.ApplicationName = formValues.Name;\n\n    if (formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationPublishingTypes.NODE_PORT) {\n      res.Type = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.NODE_PORT;\n    } else if (formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n      res.Type = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.LOAD_BALANCER;\n    }\n\n    const ports = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(formValues.PublishedPorts, item => _publishedPortToServicePort(formValues, item, res.Type));\n\n    res.Ports = lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default()(ports, undefined), p => p.targetPort + p.protocol);\n    return res;\n  }\n\n  static applicationFormValuesToServices(formValues) {\n    let services = [];\n    formValues.Services.forEach(function (service) {\n      const res = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesService();\n      res.Namespace = formValues.ResourcePool.Namespace.Name;\n      res.Name = service.Name;\n      res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n      res.ApplicationOwner = formValues.ApplicationOwner;\n      res.ApplicationName = formValues.Name;\n\n      if (service.Type === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationPublishingTypes.NODE_PORT) {\n        res.Type = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.NODE_PORT;\n      } else if (service.Type === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n        res.Type = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.LOAD_BALANCER;\n      } else if (service.Type === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationPublishingTypes.CLUSTER_IP) {\n        res.Type = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceTypes.CLUSTER_IP;\n      }\n\n      res.Ingress = service.Ingress;\n\n      if (service.Selector !== undefined) {\n        res.Selector = service.Selector;\n      } else {\n        res.Selector = {\n          app: formValues.Name\n        };\n      }\n\n      let ports = [];\n      service.Ports.forEach(function (port, index) {\n        const res = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServicePort();\n        res.name = 'port-' + index;\n        res.port = port.port;\n\n        if (port.nodePort) {\n          res.nodePort = port.nodePort;\n        }\n\n        res.protocol = port.protocol;\n        res.targetPort = port.targetPort;\n        res.ingress = port.ingress;\n        ports.push(res);\n      });\n      res.Ports = ports;\n      services.push(res);\n    });\n    return services;\n  }\n\n  static applicationFormValuesToHeadlessService(formValues) {\n    const res = KubernetesServiceConverter.applicationFormValuesToService(formValues);\n    res.Name = Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].generateHeadlessServiceName(formValues.Name);\n    res.Headless = true;\n    res.Selector = {\n      app: formValues.Name\n    };\n    return res;\n  }\n  /**\n   * Generate CREATE payload from Service\n   * @param {KubernetesService} model Service to genereate payload from\n   */\n\n\n  static createPayload(service) {\n    const payload = new Kubernetes_models_service_payloads__WEBPACK_IMPORTED_MODULE_5__.KubernetesServiceCreatePayload();\n    payload.metadata.name = service.Name;\n    payload.metadata.namespace = service.Namespace;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerApplicationStackNameLabel] = service.StackName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerApplicationNameLabel] = service.ApplicationName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerApplicationOwnerLabel] = service.ApplicationOwner;\n    const ports = [];\n    service.Ports.forEach(port => {\n      const p = {};\n      p.name = port.name;\n      p.port = port.port;\n      p.nodePort = port.nodePort;\n      p.protocol = port.protocol;\n      p.targetPort = port.targetPort;\n      ports.push(p);\n    });\n    payload.spec.ports = ports;\n    payload.spec.selector = service.Selector;\n\n    if (service.Headless) {\n      payload.spec.clusterIP = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesServiceHeadlessClusterIP;\n      delete payload.spec.ports;\n    } else if (service.Type) {\n      payload.spec.type = service.Type;\n    }\n\n    return payload;\n  }\n\n  static patchPayload(oldService, newService) {\n    const oldPayload = KubernetesServiceConverter.createPayload(oldService);\n    const newPayload = KubernetesServiceConverter.createPayload(newService);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_4__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesServiceConverter);//# sourceURL=webpack-internal:///86998\n");

}),

15986:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/stateful-set/models */ 91920);\n/* harmony import */ var Kubernetes_models_stateful_set_payloads__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/stateful-set/payloads */ 13871);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Docker/helpers/imageHelper */ 20886);\n/* harmony import */ var _persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./persistentVolumeClaim */ 56636);\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesStatefulSetConverter {\n  /**\n   * Generate KubernetesStatefulSet from KubernetesApplicationFormValues\n   * @param {KubernetesApplicationFormValues} formValues\n   */\n  static applicationFormValuesToStatefulSet(formValues, volumeClaims) {\n    const res = new Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesStatefulSet();\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.Name = formValues.Name;\n    res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n    res.ApplicationOwner = formValues.ApplicationOwner;\n    res.ApplicationName = formValues.Name;\n    res.ReplicaCount = formValues.ReplicaCount;\n    res.ImageModel = formValues.ImageModel;\n    res.CpuLimit = formValues.CpuLimit;\n    res.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bytesValue(formValues.MemoryLimit);\n    res.Env = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].generateEnvOrVolumesFromConfigurations(res, formValues.Configurations);\n    Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].generateAffinityFromPlacements(res, formValues);\n    return res;\n  }\n  /**\n   * Generate CREATE payload from StatefulSet\n   * @param {KubernetesStatefulSetPayload} model StatefulSet to genereate payload from\n   */\n\n\n  static createPayload(statefulSet) {\n    const payload = new Kubernetes_models_stateful_set_payloads__WEBPACK_IMPORTED_MODULE_3__.KubernetesStatefulSetCreatePayload();\n    payload.metadata.name = statefulSet.Name;\n    payload.metadata.namespace = statefulSet.Namespace;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerApplicationStackNameLabel] = statefulSet.StackName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;\n    payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerApplicationOwnerLabel] = statefulSet.ApplicationOwner;\n    payload.metadata.annotations[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerApplicationNote] = statefulSet.Note;\n    payload.spec.replicas = statefulSet.ReplicaCount;\n    payload.spec.serviceName = statefulSet.ServiceName;\n    payload.spec.selector.matchLabels.app = statefulSet.Name;\n    payload.spec.volumeClaimTemplates = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(statefulSet.VolumeClaims, item => _persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_9__[\"default\"].createPayload(item));\n    payload.spec.template.metadata.labels.app = statefulSet.Name;\n    payload.spec.template.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;\n    payload.spec.template.spec.containers[0].name = statefulSet.Name;\n\n    if (statefulSet.ImageModel.Image) {\n      payload.spec.template.spec.containers[0].image = (0,Docker_helpers_imageHelper__WEBPACK_IMPORTED_MODULE_8__.buildImageFullURI)(statefulSet.ImageModel);\n\n      if (statefulSet.ImageModel.Registry && statefulSet.ImageModel.Registry.Authentication) {\n        payload.spec.template.spec.imagePullSecrets = [{\n          name: `registry-${statefulSet.ImageModel.Registry.Id}`\n        }];\n      }\n    }\n\n    payload.spec.template.spec.affinity = statefulSet.Affinity;\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', statefulSet.Env);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', statefulSet.VolumeMounts);\n    Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', statefulSet.Volumes);\n\n    if (statefulSet.MemoryLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.memory = statefulSet.MemoryLimit;\n      payload.spec.template.spec.containers[0].resources.requests.memory = statefulSet.MemoryLimit;\n    }\n\n    if (statefulSet.CpuLimit) {\n      payload.spec.template.spec.containers[0].resources.limits.cpu = statefulSet.CpuLimit;\n      payload.spec.template.spec.containers[0].resources.requests.cpu = statefulSet.CpuLimit;\n    }\n\n    if (!statefulSet.CpuLimit && !statefulSet.MemoryLimit) {\n      delete payload.spec.template.spec.containers[0].resources;\n    }\n\n    return payload;\n  }\n\n  static patchPayload(oldSFS, newSFS) {\n    const oldPayload = KubernetesStatefulSetConverter.createPayload(oldSFS);\n    const newPayload = KubernetesStatefulSetConverter.createPayload(newSFS);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_1__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStatefulSetConverter);//# sourceURL=webpack-internal:///15986\n");

}),

17981:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/storage-class/models */ 86871);\n/* harmony import */ var Kubernetes_models_storage_class_payload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/storage-class/payload */ 79824);\n\n\n\n\nclass KubernetesStorageClassConverter {\n  /**\n   * API StorageClass to front StorageClass\n   */\n  static apiToStorageClass(data) {\n    const res = new Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesStorageClass();\n    res.Name = data.metadata.name;\n    res.Provisioner = data.provisioner;\n    res.AllowVolumeExpansion = data.allowVolumeExpansion;\n    return res;\n  }\n\n  static createPayload(storageClass) {\n    const res = new Kubernetes_models_storage_class_payload__WEBPACK_IMPORTED_MODULE_2__.KubernetesStorageClassCreatePayload();\n    res.metadata.name = storageClass.Name;\n    res.provisioner = storageClass.Provisioner;\n    res.allowVolumeExpansion = storageClass.AllowVolumeExpansion;\n    return res;\n  }\n\n  static patchPayload(oldStorageClass, newStorageClass) {\n    const oldPayload = KubernetesStorageClassConverter.createPayload(oldStorageClass);\n    const newPayload = KubernetesStorageClassConverter.createPayload(newStorageClass);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_0__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStorageClassConverter);//# sourceURL=webpack-internal:///17981\n");

}),

92192:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_volume_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/volume/models */ 72913);\n\n\nclass KubernetesVolumeConverter {\n  static pvcToVolume(claim, pool) {\n    const res = new Kubernetes_models_volume_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesVolume();\n    res.PersistentVolumeClaim = claim;\n    res.ResourcePool = pool;\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumeConverter);//# sourceURL=webpack-internal:///92192\n");

}),

79023:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kube_custom_templates_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kube-custom-templates-view */ 79403);\n/* harmony import */ var _kube_edit_custom_template_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./kube-edit-custom-template-view */ 52657);\n/* harmony import */ var _kube_create_custom_template_view__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kube-create-custom-template-view */ 6793);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes.custom-templates', []).config(config).component('kubeCustomTemplatesView', _kube_custom_templates_view__WEBPACK_IMPORTED_MODULE_1__.kubeCustomTemplatesView).component('kubeEditCustomTemplateView', _kube_edit_custom_template_view__WEBPACK_IMPORTED_MODULE_2__.kubeEditCustomTemplateView).component('kubeCreateCustomTemplateView', _kube_create_custom_template_view__WEBPACK_IMPORTED_MODULE_3__.kubeCreateCustomTemplateView).name);\n\nfunction config($stateRegistryProvider) {\n  const templates = {\n    name: 'kubernetes.templates',\n    url: '/templates',\n    abstract: true\n  };\n  const customTemplates = {\n    name: 'kubernetes.templates.custom',\n    url: '/custom',\n    views: {\n      'content@': {\n        component: 'kubeCustomTemplatesView'\n      }\n    }\n  };\n  const customTemplatesNew = {\n    name: 'kubernetes.templates.custom.new',\n    url: '/new?fileContent',\n    views: {\n      'content@': {\n        component: 'kubeCreateCustomTemplateView'\n      }\n    },\n    params: {\n      fileContent: ''\n    }\n  };\n  const customTemplatesEdit = {\n    name: 'kubernetes.templates.custom.edit',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'kubeEditCustomTemplateView'\n      }\n    }\n  };\n  $stateRegistryProvider.register(templates);\n  $stateRegistryProvider.register(customTemplates);\n  $stateRegistryProvider.register(customTemplatesNew);\n  $stateRegistryProvider.register(customTemplatesEdit);\n}//# sourceURL=webpack-internal:///79023\n");

}),

6793:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubeCreateCustomTemplateView\": function() { return /* binding */ kubeCreateCustomTemplateView; }\n/* harmony export */ });\n/* harmony import */ var _kube_create_custom_template_view_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-create-custom-template-view.controller.js */ 2267);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-create-custom-template-view.html */ 21843);\n\n\nconst kubeCreateCustomTemplateView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_create_custom_template_view_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///6793\n");

}),

2267:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @@/BoxSelector/common-options/build-methods */ 37463);\n\n\n\n\n\nclass KubeCreateCustomTemplateViewController {\n  /* @ngInject */\n  constructor($async, $state, Authentication, CustomTemplateService, FormValidator, ModalService, Notifications, ResourceControlService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      Authentication,\n      CustomTemplateService,\n      FormValidator,\n      ModalService,\n      Notifications,\n      ResourceControlService\n    });\n    this.methodOptions = [_BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_3__.editor, _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_3__.upload];\n    this.templates = null;\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__.isBE;\n    this.state = {\n      method: 'editor',\n      actionInProgress: false,\n      formValidationError: '',\n      isEditorDirty: false,\n      isTemplateValid: true\n    };\n    this.formValues = {\n      FileContent: '',\n      File: null,\n      Title: '',\n      Description: '',\n      Note: '',\n      Logo: '',\n      AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_0__.AccessControlFormData(),\n      Variables: []\n    };\n    this.onChangeFile = this.onChangeFile.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onChangeMethod = this.onChangeMethod.bind(this);\n    this.onBeforeOnload = this.onBeforeOnload.bind(this);\n    this.handleChange = this.handleChange.bind(this);\n    this.onVariablesChange = this.onVariablesChange.bind(this);\n  }\n\n  onChangeMethod(method) {\n    this.state.method = method;\n    this.formValues.Variables = [];\n  }\n\n  onChangeFileContent(content) {\n    this.handleChange({\n      FileContent: content\n    });\n    this.parseTemplate(content);\n    this.state.isEditorDirty = true;\n  }\n\n  parseTemplate(templateStr) {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const variables = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_1__.getTemplateVariables)(templateStr);\n    const isValid = !!variables;\n    this.state.isTemplateValid = isValid;\n\n    if (isValid) {\n      this.onVariablesChange((0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_1__.intersectVariables)(this.formValues.Variables, variables));\n    }\n  }\n\n  onVariablesChange(value) {\n    this.handleChange({\n      Variables: value\n    });\n  }\n\n  onChangeFile(file) {\n    this.handleChange({\n      File: file\n    });\n  }\n\n  handleChange(values) {\n    return this.$async(async () => {\n      this.formValues = { ...this.formValues,\n        ...values\n      };\n    });\n  }\n\n  async createCustomTemplate() {\n    return this.$async(async () => {\n      const {\n        method\n      } = this.state;\n\n      if (!this.validateForm(method)) {\n        return;\n      }\n\n      this.state.actionInProgress = true;\n\n      try {\n        const customTemplate = await this.createCustomTemplateByMethod(method, this.formValues);\n        const accessControlData = this.formValues.AccessControlData;\n        const userDetails = this.Authentication.getUserDetails();\n        const userId = userDetails.ID;\n        await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl);\n        this.Notifications.success('Success', 'Custom template successfully created');\n        this.state.isEditorDirty = false;\n        this.$state.go('kubernetes.templates.custom');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed creating custom template');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  createCustomTemplateByMethod(method, template) {\n    template.Type = 3;\n\n    switch (method) {\n      case 'editor':\n        return this.createCustomTemplateFromFileContent(template);\n\n      case 'upload':\n        return this.createCustomTemplateFromFileUpload(template);\n    }\n  }\n\n  createCustomTemplateFromFileContent(template) {\n    return this.CustomTemplateService.createCustomTemplateFromFileContent(template);\n  }\n\n  createCustomTemplateFromFileUpload(template) {\n    return this.CustomTemplateService.createCustomTemplateFromFileUpload(template);\n  }\n\n  validateForm(method) {\n    this.state.formValidationError = '';\n\n    if (method === 'editor' && this.formValues.FileContent === '') {\n      this.state.formValidationError = 'Template file content must not be empty';\n      return false;\n    }\n\n    const title = this.formValues.Title;\n    const isNotUnique = this.templates.some(template => template.Title === title);\n\n    if (isNotUnique) {\n      this.state.formValidationError = 'A template with the same name already exists';\n      return false;\n    }\n\n    if (!this.state.isTemplateValid) {\n      this.state.formValidationError = 'Template is not valid';\n      return false;\n    }\n\n    const isAdmin = this.Authentication.isAdmin();\n    const accessControlData = this.formValues.AccessControlData;\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  async $onInit() {\n    return this.$async(async () => {\n      const {\n        fileContent,\n        type\n      } = this.$state.params;\n      this.formValues.FileContent = fileContent;\n      this.parseTemplate(fileContent);\n\n      if (type) {\n        this.formValues.Type = +type;\n      }\n\n      try {\n        this.templates = await this.CustomTemplateService.customTemplates(3);\n      } catch (err) {\n        this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n      }\n\n      this.state.loading = false;\n      window.addEventListener('beforeunload', this.onBeforeOnload);\n    });\n  }\n\n  $onDestroy() {\n    window.removeEventListener('beforeunload', this.onBeforeOnload);\n  }\n\n  isEditorDirty() {\n    return this.state.method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty;\n  }\n\n  onBeforeOnload(event) {\n    if (this.isEditorDirty()) {\n      event.preventDefault();\n      event.returnValue = '';\n    }\n  }\n\n  uiCanExit() {\n    if (this.isEditorDirty()) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n}\n\nKubeCreateCustomTemplateViewController.$inject = [\"$async\", \"$state\", \"Authentication\", \"CustomTemplateService\", \"FormValidator\", \"ModalService\", \"Notifications\", \"ResourceControlService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubeCreateCustomTemplateViewController);//# sourceURL=webpack-internal:///2267\n");

}),

79403:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubeCustomTemplatesView\": function() { return /* binding */ kubeCustomTemplatesView; }\n/* harmony export */ });\n/* harmony import */ var _kube_custom_templates_view_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-custom-templates-view.controller.js */ 11916);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-custom-templates-view.html */ 66295);\n\n\nconst kubeCustomTemplatesView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_custom_templates_view_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///79403\n");

}),

11916:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubeCustomTemplatesViewController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass KubeCustomTemplatesViewController {\n  /* @ngInject */\n  constructor($async, $state, Authentication, CustomTemplateService, FormValidator, ModalService, Notifications) {\n    Object.assign(this, {\n      $async,\n      $state,\n      Authentication,\n      CustomTemplateService,\n      FormValidator,\n      ModalService,\n      Notifications\n    });\n    this.state = {\n      selectedTemplate: null,\n      formValidationError: '',\n      actionInProgress: false\n    };\n    this.currentUser = {\n      isAdmin: false,\n      id: null\n    };\n    this.isEditAllowed = this.isEditAllowed.bind(this);\n    this.getTemplates = this.getTemplates.bind(this);\n    this.validateForm = this.validateForm.bind(this);\n    this.confirmDelete = this.confirmDelete.bind(this);\n    this.selectTemplate = this.selectTemplate.bind(this);\n  }\n\n  selectTemplate(template) {\n    this.$state.go('kubernetes.deploy', {\n      templateId: template.Id\n    });\n  }\n\n  isEditAllowed(template) {\n    // todo - check if current user is admin/endpointadmin/owner\n    return this.currentUser.isAdmin || this.currentUser.id === template.CreatedByUserId;\n  }\n\n  getTemplates() {\n    return this.$async(async () => {\n      try {\n        this.templates = await this.CustomTemplateService.customTemplates(3);\n      } catch (err) {\n        this.Notifications.error('Failed loading templates', err, 'Unable to load custom templates');\n      }\n    });\n  }\n\n  validateForm(accessControlData, isAdmin) {\n    this.state.formValidationError = '';\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  confirmDelete(templateId) {\n    return this.$async(async () => {\n      const confirmed = await this.ModalService.confirmDeletionAsync('Are you sure that you want to delete this template?');\n\n      if (!confirmed) {\n        return;\n      }\n\n      try {\n        var template = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(this.templates, {\n          Id: templateId\n        });\n\n        await this.CustomTemplateService.remove(templateId);\n        this.Notifications.success('Template successfully deleted', template && template.Title);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()(this.templates, {\n          Id: templateId\n        });\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed to delete template');\n      }\n    });\n  }\n\n  $onInit() {\n    this.getTemplates();\n    this.currentUser.isAdmin = this.Authentication.isAdmin();\n    const user = this.Authentication.getUserDetails();\n    this.currentUser.id = user.ID;\n  }\n\n}\nKubeCustomTemplatesViewController.$inject = [\"$async\", \"$state\", \"Authentication\", \"CustomTemplateService\", \"FormValidator\", \"ModalService\", \"Notifications\"];//# sourceURL=webpack-internal:///11916\n");

}),

52657:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubeEditCustomTemplateView\": function() { return /* binding */ kubeEditCustomTemplateView; }\n/* harmony export */ });\n/* harmony import */ var _kube_edit_custom_template_view_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-edit-custom-template-view.controller.js */ 69199);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-edit-custom-template-view.html */ 13968);\n\n\nconst kubeEditCustomTemplateView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_edit_custom_template_view_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///52657\n");

}),

69199:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n\n\n\n\n\nclass KubeEditCustomTemplateViewController {\n  /* @ngInject */\n  constructor($async, $state, ModalService, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      ModalService,\n      Authentication,\n      CustomTemplateService,\n      FormValidator,\n      Notifications,\n      ResourceControlService\n    });\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__.isBE;\n    this.formValues = null;\n    this.state = {\n      formValidationError: '',\n      isEditorDirty: false,\n      isTemplateValid: true\n    };\n    this.templates = [];\n    this.getTemplate = this.getTemplate.bind(this);\n    this.submitAction = this.submitAction.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onBeforeUnload = this.onBeforeUnload.bind(this);\n    this.handleChange = this.handleChange.bind(this);\n    this.onVariablesChange = this.onVariablesChange.bind(this);\n  }\n\n  getTemplate() {\n    return this.$async(async () => {\n      try {\n        const {\n          id\n        } = this.$state.params;\n        const [template, file] = await Promise.all([this.CustomTemplateService.customTemplate(id), this.CustomTemplateService.customTemplateFile(id)]);\n        template.FileContent = file;\n        template.Variables = template.Variables || [];\n        this.formValues = template;\n        this.parseTemplate(file);\n        this.oldFileContent = this.formValues.FileContent;\n        this.formValues.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(template.ResourceControl);\n        this.formValues.AccessControlData = new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__.AccessControlFormData();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve custom template data');\n      }\n    });\n  }\n\n  onVariablesChange(values) {\n    this.handleChange({\n      Variables: values\n    });\n  }\n\n  handleChange(values) {\n    return this.$async(async () => {\n      this.formValues = { ...this.formValues,\n        ...values\n      };\n    });\n  }\n\n  parseTemplate(templateStr) {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const variables = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.getTemplateVariables)(templateStr);\n    const isValid = !!variables;\n    this.state.isTemplateValid = isValid;\n\n    if (isValid) {\n      this.onVariablesChange((0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.intersectVariables)(this.formValues.Variables, variables));\n    }\n  }\n\n  validateForm() {\n    this.state.formValidationError = '';\n\n    if (!this.formValues.FileContent) {\n      this.state.formValidationError = 'Template file content must not be empty';\n      return false;\n    }\n\n    const title = this.formValues.Title;\n    const id = this.$state.params.id;\n    const isNotUnique = this.templates.some(template => template.Title === title && template.Id != id);\n\n    if (isNotUnique) {\n      this.state.formValidationError = `A template with the name ${title} already exists`;\n      return false;\n    }\n\n    const isAdmin = this.Authentication.isAdmin();\n    const accessControlData = this.formValues.AccessControlData;\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  submitAction() {\n    return this.$async(async () => {\n      if (!this.validateForm()) {\n        return;\n      }\n\n      this.actionInProgress = true;\n\n      try {\n        await this.CustomTemplateService.updateCustomTemplate(this.formValues.Id, this.formValues);\n        const userDetails = this.Authentication.getUserDetails();\n        const userId = userDetails.ID;\n        await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl);\n        this.Notifications.success('Success', 'Custom template successfully updated');\n        this.state.isEditorDirty = false;\n        this.$state.go('kubernetes.templates.custom');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to update custom template');\n      } finally {\n        this.actionInProgress = false;\n      }\n    });\n  }\n\n  onChangeFileContent(value) {\n    if (stripSpaces(this.formValues.FileContent) !== stripSpaces(value)) {\n      this.formValues.FileContent = value;\n      this.parseTemplate(value);\n      this.state.isEditorDirty = true;\n    }\n  }\n\n  async $onInit() {\n    this.$async(async () => {\n      this.getTemplate();\n\n      try {\n        this.templates = await this.CustomTemplateService.customTemplates();\n      } catch (err) {\n        this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n      }\n\n      window.addEventListener('beforeunload', this.onBeforeUnload);\n    });\n  }\n\n  isEditorDirty() {\n    return this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty;\n  }\n\n  uiCanExit() {\n    if (this.isEditorDirty()) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  onBeforeUnload(event) {\n    if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n      event.preventDefault();\n      event.returnValue = '';\n      return '';\n    }\n  }\n\n  $onDestroy() {\n    window.removeEventListener('beforeunload', this.onBeforeUnload);\n  }\n\n}\n\nKubeEditCustomTemplateViewController.$inject = [\"$async\", \"$state\", \"ModalService\", \"Authentication\", \"CustomTemplateService\", \"FormValidator\", \"Notifications\", \"ResourceControlService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubeEditCustomTemplateViewController);\n\nfunction stripSpaces(str = '') {\n  return str.replace(/(\\r\\n|\\n|\\r)/gm, '');\n}//# sourceURL=webpack-internal:///69199\n");

}),

59041:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_endpoint_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/endpoint/models */ 5264);\n\n\n\n\n\nclass KubernetesEndpointConverter {\n  static apiToEndpoint(data) {\n    const res = new Kubernetes_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesEndpoint();\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.Namespace = data.metadata.namespace;\n    const leaderAnnotation = data.metadata.annotations ? data.metadata.annotations[Kubernetes_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesEndpointAnnotationLeader] : '';\n\n    if (leaderAnnotation) {\n      const parsedJson = JSON.parse(leaderAnnotation);\n\n      const split = lodash_es_split__WEBPACK_IMPORTED_MODULE_2___default()(parsedJson.holderIdentity, '_');\n\n      res.HolderIdentity = split[0];\n    }\n\n    if (data.subsets) {\n      res.Subsets = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(data.subsets, item => {\n        const subset = new Kubernetes_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesEndpointSubset();\n        subset.Ips = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(item.addresses, 'ip');\n\n        const port = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(item.ports, {\n          name: 'https'\n        });\n\n        subset.Port = port ? port.port : undefined;\n        return subset;\n      });\n    }\n\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesEndpointConverter);//# sourceURL=webpack-internal:///59041\n");

}),

5264:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesEndpointAnnotationLeader\": function() { return /* binding */ KubernetesEndpointAnnotationLeader; },\n/* harmony export */   \"KubernetesEndpoint\": function() { return /* binding */ KubernetesEndpoint; },\n/* harmony export */   \"KubernetesEndpointSubset\": function() { return /* binding */ KubernetesEndpointSubset; }\n/* harmony export */ });\nconst KubernetesEndpointAnnotationLeader = 'control-plane.alpha.kubernetes.io/leader';\n/**\n * KubernetesEndpoint Model\n */\n\nconst _KubernetesEndpoint = Object.freeze({\n  Id: '',\n  Name: '',\n  Namespace: '',\n  HolderIdentity: '',\n  Subsets: []\n});\n\nclass KubernetesEndpoint {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEndpoint)));\n  }\n\n}\n\nconst _KubernetesEndpointSubset = Object.freeze({\n  Ips: [],\n  Port: 0\n});\n\nclass KubernetesEndpointSubset {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEndpointSubset)));\n  }\n\n}//# sourceURL=webpack-internal:///5264\n");

}),

42964:

(function() {

eval("angular.module('portainer.kubernetes').factory('KubernetesEndpoints', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesEndpointsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/endpoints/:id';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///42964\n");

}),

5427:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_endpoint_converter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/endpoint/converter */ 59041);\n\n\n\n\n\nclass KubernetesEndpointService {\n  /* @ngInject */\n  constructor($async, KubernetesEndpoints) {\n    this.$async = $async;\n    this.KubernetesEndpoints = KubernetesEndpoints;\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesEndpoints(namespace).get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_endpoint_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToEndpoint(item));\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve environments', err);\n    }\n  }\n\n  get(namespace) {\n    return this.$async(this.getAllAsync, namespace);\n  }\n\n}\n\nKubernetesEndpointService.$inject = [\"$async\", \"KubernetesEndpoints\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesEndpointService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesEndpointService', KubernetesEndpointService);//# sourceURL=webpack-internal:///5427\n");

}),

11518:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_round__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/round */ 18622);\n/* harmony import */ var lodash_es_round__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_round__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/pod/models */ 31275);\n\n\n\n\n\nangular.module('portainer.kubernetes').filter('kubernetesApplicationServiceTypeIcon', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_1___default()(text);\n\n    switch (status) {\n      case 'loadbalancer':\n        return 'fa-project-diagram';\n\n      case 'clusterip':\n        return 'fa-list-alt';\n\n      case 'nodeport':\n        return 'fa-list';\n    }\n  };\n}).filter('kubernetesApplicationServiceTypeText', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_1___default()(text);\n\n    switch (status) {\n      case 'loadbalancer':\n        return 'LoadBalancer';\n\n      case 'clusterip':\n        return 'ClusterIP';\n\n      case 'nodeport':\n        return 'NodePort';\n    }\n  };\n}).filter('kubernetesApplicationTypeText', function () {\n  'use strict';\n\n  return function (type) {\n    switch (type) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.DEPLOYMENT:\n        return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.DEPLOYMENT;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.DAEMONSET:\n        return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.DAEMONSET;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.STATEFULSET:\n        return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.STATEFULSET;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.POD:\n        return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.POD;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.HELM:\n        return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.HELM;\n\n      default:\n        return '-';\n    }\n  };\n}).filter('kubernetesApplicationCPUValue', function () {\n  'use strict';\n\n  return function (value) {\n    return lodash_es_round__WEBPACK_IMPORTED_MODULE_0___default()(value, 2);\n  };\n}).filter('kubernetesApplicationDataAccessPolicyIcon', function () {\n  'use strict';\n\n  return function (value) {\n    switch (value) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.ISOLATED:\n        return 'svg-cubes';\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.SHARED:\n        return 'box';\n    }\n  };\n}).filter('kubernetesApplicationDataAccessPolicyText', function () {\n  'use strict';\n\n  return function (value) {\n    switch (value) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.ISOLATED:\n        return 'Isolated';\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.SHARED:\n        return 'Shared';\n    }\n  };\n}).filter('kubernetesApplicationDataAccessPolicyTooltip', function () {\n  'use strict';\n\n  return function (value) {\n    switch (value) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.ISOLATED:\n        return 'All the instances of this application are using their own data.';\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationDataAccessPolicies.SHARED:\n        return 'All the instances of this application are sharing the same data.';\n    }\n  };\n}).filter('kubernetesApplicationConstraintNodeAffinityValue', function () {\n  'use strict';\n\n  return function (values, operator) {\n    if (operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN || operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.NOT_IN) {\n      return values;\n    } else if (operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS || operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.DOES_NOT_EXIST) {\n      return '';\n    } else if (operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.GREATER_THAN || operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.LOWER_THAN) {\n      return values[0];\n    }\n\n    return '';\n  };\n}).filter('kubernetesNodeLabelHumanReadbleText', function () {\n  'use strict';\n\n  return function (text) {\n    const values = {\n      'kubernetes.io/os': 'Operating system',\n      'kubernetes.io/arch': 'Architecture',\n      'kubernetes.io/hostname': 'Node'\n    };\n    return values[text] || text;\n  };\n}).filter('kubernetesApplicationIngressEmptyHostname', function () {\n  'use strict';\n\n  return function (value) {\n    if (value === '') {\n      return '<use IP>';\n    } else {\n      return value;\n    }\n  };\n});//# sourceURL=webpack-internal:///11518\n");

}),

63642:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\nangular.module('portainer.kubernetes').filter('kubernetesConfigurationKindText', function () {\n  'use strict';\n\n  return function (type) {\n    switch (type) {\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesConfigurationKinds.SECRET:\n        return 'Secret';\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesConfigurationKinds.CONFIGMAP:\n        return 'ConfigMap';\n    }\n  };\n});//# sourceURL=webpack-internal:///63642\n");

}),

58311:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.kubernetes').filter('kubernetesEventTypeColor', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default()(text);\n\n    switch (status) {\n      case 'normal':\n        return 'info';\n\n      case 'warning':\n        return 'warning';\n\n      default:\n        return 'danger';\n    }\n  };\n});//# sourceURL=webpack-internal:///58311\n");

}),

11634:

(function() {

eval("angular.module('portainer.kubernetes').filter('kubernetesUsageLevelInfo', function () {\n  return function (usage) {\n    if (usage >= 80) {\n      return 'danger';\n    } else if (usage > 50 && usage < 80) {\n      return 'warning';\n    } else {\n      return 'success';\n    }\n  };\n});//# sourceURL=webpack-internal:///11634\n");

}),

65744:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nHelmFactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').factory('HelmFactory', HelmFactory);\n/* @ngInject */\n\nfunction HelmFactory($resource, API_ENDPOINT_ENDPOINTS) {\n  const helmUrl = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/helm';\n  const templatesUrl = 'api/templates/helm';\n  return $resource(helmUrl, {}, {\n    templates: {\n      url: templatesUrl,\n      method: 'GET',\n      params: {\n        repo: '@repo'\n      },\n      cache: true\n    },\n    show: {\n      url: `${templatesUrl}/:type`,\n      method: 'GET',\n      params: {\n        repo: '@repo',\n        chart: '@chart'\n      },\n      transformResponse: function (data) {\n        return {\n          values: data\n        };\n      }\n    },\n    getHelmRepositories: {\n      method: 'GET',\n      url: `${helmUrl}/repositories`\n    },\n    addHelmRepository: {\n      method: 'POST',\n      url: `${helmUrl}/repositories`\n    },\n    list: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        namespace: '@namespace',\n        selector: '@selector',\n        filter: '@filter',\n        output: '@output'\n      }\n    },\n    install: {\n      method: 'POST'\n    },\n    uninstall: {\n      url: `${helmUrl}/:release`,\n      method: 'DELETE',\n      params: {\n        namespace: '@namespace'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///65744\n");

}),

40846:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HelmService\": function() { return /* binding */ HelmService; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\nHelmService.$inject = [\"HelmFactory\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').factory('HelmService', HelmService);\n/* @ngInject */\n\nfunction HelmService(HelmFactory) {\n  return {\n    search,\n    values,\n    getHelmRepositories,\n    addHelmRepository,\n    install,\n    uninstall,\n    listReleases\n  };\n  /**\n   * @description: Searches for all helm charts in a helm repo\n   * @param {string} repo - repo url to search charts for\n   * @returns {Promise} - Resolves with `index.yaml` of helm charts for a repo\n   * @throws {PortainerError} - Rejects with error if searching for the `index.yaml` fails\n   */\n\n  async function search(repo) {\n    try {\n      return await HelmFactory.templates({\n        repo\n      }).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve helm charts', err);\n    }\n  }\n  /**\n   * @description: Show values helm of a helm chart, this basically runs `helm show values`\n   * @param {string} repo - repo url to search charts values for\n   * @param {string} chart - chart within the repo to retrieve default values\n   * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n   * @throws {PortainerError} - Rejects with error if helm show fails\n   */\n\n\n  async function values(repo, chart) {\n    try {\n      return await HelmFactory.show({\n        repo,\n        chart,\n        type: 'values'\n      }).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve values from chart', err);\n    }\n  }\n  /**\n   * @description: Get a list of all the helm repositories available for the current user\n   * @returns {Promise} - Resolves with an object containing list of user helm repos and default/global settings helm repo\n   * @throws {PortainerError} - Rejects with error if helm show fails\n   */\n\n\n  async function getHelmRepositories(endpointId) {\n    return await HelmFactory.getHelmRepositories({\n      endpointId\n    }).$promise;\n  }\n  /**\n   * @description: Adds a helm repo for the calling user\n   * @param {Object} payload - helm repo url to add for the user\n   * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n   * @throws {PortainerError} - Rejects with error if helm show fails\n   */\n\n\n  async function addHelmRepository(endpointId, payload) {\n    return await HelmFactory.addHelmRepository({\n      endpointId\n    }, payload).$promise;\n  }\n  /**\n   * @description: Installs a helm chart, this basically runs `helm install`\n   * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n   * @throws {PortainerError} - Rejects with error if helm show fails\n   */\n\n\n  async function install(endpointId, payload) {\n    return await HelmFactory.install({\n      endpointId\n    }, payload).$promise;\n  }\n  /**\n   * @description: Uninstall a helm chart, this basically runs `helm uninstall`\n   * @param {Object} options - Options object, release `Name` is the only required option\n   * @throws {PortainerError} - Rejects with error if helm show fails\n   */\n\n\n  async function uninstall(endpointId, {\n    Name,\n    ResourcePool\n  }) {\n    try {\n      await HelmFactory.uninstall({\n        endpointId,\n        release: Name,\n        namespace: ResourcePool\n      }).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to delete release', err);\n    }\n  }\n  /**\n   * @description: List all helm releases based on passed in options, this basically runs `helm list`\n   * @param {Object} options - Supported CLI flags to pass to Helm (binary) - flags to `helm list`\n   * @returns {Promise} - Resolves with list of helm releases\n   * @throws {PortainerError} - Rejects with error if helm list fails\n   */\n\n\n  async function listReleases(endpointId, {\n    namespace,\n    selector,\n    filter,\n    output\n  }) {\n    try {\n      const releases = await HelmFactory.list({\n        endpointId,\n        selector,\n        namespace,\n        filter,\n        output\n      }).$promise;\n      return releases;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve release list', err);\n    }\n  }\n}//# sourceURL=webpack-internal:///40846\n");

}),

57947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PodKubernetesInstanceLabel\": function() { return /* binding */ PodKubernetesInstanceLabel; },\n/* harmony export */   \"PodManagedByLabel\": function() { return /* binding */ PodManagedByLabel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_max__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/max */ 47915);\n/* harmony import */ var lodash_es_max__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_max__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/keys */ 68260);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_keys__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var Kubernetes_models_port_models__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/models/port/models */ 83270);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Kubernetes/models/application/payloads */ 11505);\n/* harmony import */ var Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Kubernetes/helpers/volumeHelper */ 11507);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Kubernetes/pod/models */ 31275);\n/* harmony import */ var Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Kubernetes/pod/payloads/affinities */ 78398);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PodKubernetesInstanceLabel = 'app.kubernetes.io/instance';\nconst PodManagedByLabel = 'app.kubernetes.io/managed-by';\n\nclass KubernetesApplicationHelper {\n  /* #region  UTILITY FUNCTIONS */\n  static isExternalApplication(application) {\n    return !application.ApplicationOwner;\n  }\n\n  static associatePodsAndApplication(pods, selector) {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(pods, ['metadata.labels', selector.matchLabels]);\n  }\n\n  static associateContainerPersistedFoldersAndConfigurations(app, containers) {\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(containers, container => {\n      container.PersistedFolders = lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(app.PersistedFolders, pf => {\n        if (pf.MountPath && lodash_es_includes__WEBPACK_IMPORTED_MODULE_10___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(container.VolumeMounts, 'mountPath'), pf.MountPath)) {\n          return pf;\n        }\n      }), undefined);\n      container.ConfigurationVolumes = lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(app.ConfigurationVolumes, cv => {\n        if (cv.rootMountPath && lodash_es_includes__WEBPACK_IMPORTED_MODULE_10___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(container.VolumeMounts, 'mountPath'), cv.rootMountPath)) {\n          return cv;\n        }\n      }), undefined);\n    });\n  }\n\n  static associateContainersAndApplication(app) {\n    if (!app.Pods || app.Pods.length === 0) {\n      return [];\n    }\n\n    const containers = app.Pods[0].Containers;\n    KubernetesApplicationHelper.associateContainerPersistedFoldersAndConfigurations(app, containers);\n    return containers;\n  }\n\n  static associateAllContainersAndApplication(app) {\n    const containers = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(app.Pods, 'containers'));\n\n    KubernetesApplicationHelper.associateContainerPersistedFoldersAndConfigurations(app, containers);\n    return containers;\n  }\n\n  static portMappingsFromApplications(applications) {\n    const res = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_8___default()(applications, (acc, app) => {\n      if (app.PublishedPorts.length > 0) {\n        const mapping = new Kubernetes_models_port_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPortMapping();\n        mapping.Name = app.Name;\n        mapping.ResourcePool = app.ResourcePool;\n        mapping.ServiceType = app.ServiceType;\n        mapping.LoadBalancerIPAddress = app.LoadBalancerIPAddress;\n        mapping.ApplicationOwner = app.ApplicationOwner;\n        mapping.Ports = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(app.PublishedPorts, item => {\n          const port = new Kubernetes_models_port_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPortMappingPort();\n          port.Port = mapping.ServiceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.NODE_PORT ? item.NodePort : item.Port;\n          port.TargetPort = item.TargetPort;\n          port.Protocol = item.Protocol;\n          port.IngressRules = item.IngressRules;\n          return port;\n        });\n        acc.push(mapping);\n      }\n\n      return acc;\n    }, []);\n\n    return res;\n  }\n  /* #endregion */\n\n  /* #region  ENV VARIABLES FV <> ENV */\n\n\n  static generateEnvFromEnvVariables(envVariables) {\n    lodash_es_remove__WEBPACK_IMPORTED_MODULE_7___default()(envVariables, item => item.NeedsDeletion);\n\n    const env = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(envVariables, item => {\n      const res = new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvPayload();\n      res.name = item.Name;\n\n      if (item.Value === undefined) {\n        delete res.value;\n      } else {\n        res.value = item.Value;\n      }\n\n      return res;\n    });\n\n    return env;\n  }\n\n  static generateEnvVariablesFromEnv(env) {\n    const envVariables = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(env, item => {\n      if (item.valueFrom) {\n        return;\n      }\n\n      const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationEnvironmentVariableFormValue();\n      res.Name = item.name;\n      res.Value = item.value;\n      res.IsNew = false;\n      res.NameIndex = item.name;\n      return res;\n    });\n\n    return lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default()(envVariables, undefined);\n  }\n  /* #endregion */\n\n  /* #region  CONFIGURATIONS FV <> ENV & VOLUMES */\n\n\n  static generateConfigurationFormValuesFromEnvAndVolumes(env, volumes, configurations) {\n    const finalRes = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9___default()(configurations, cfg => {\n      const filterCondition = cfg.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_17__.KubernetesConfigurationKinds.CONFIGMAP ? 'valueFrom.configMapKeyRef.name' : 'valueFrom.secretKeyRef.name';\n\n      const cfgEnv = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(env, [filterCondition, cfg.Name]);\n\n      const cfgVol = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(volumes, {\n        configurationName: cfg.Name\n      });\n\n      if (!cfgEnv.length && !cfgVol.length) {\n        return;\n      }\n\n      const keys = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_8___default()(lodash_es_keys__WEBPACK_IMPORTED_MODULE_6___default()(cfg.Data), (acc, k) => {\n        const keyEnv = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(cfgEnv, {\n          name: k\n        });\n\n        const keyVol = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(cfgVol, {\n          configurationKey: k\n        });\n\n        const key = {\n          Key: k,\n          Count: keyEnv.length + keyVol.length,\n          Sum: lodash_es_concat__WEBPACK_IMPORTED_MODULE_5___default()(keyEnv, keyVol),\n          EnvCount: keyEnv.length,\n          VolCount: keyVol.length\n        };\n        acc.push(key);\n        return acc;\n      }, []);\n\n      const max = lodash_es_max__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(keys, 'Count'));\n\n      const overrideThreshold = max - lodash_es_max__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(keys, 'VolCount'));\n\n      const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(new Array(max), () => new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValue());\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(res, (item, index) => {\n        item.SelectedConfiguration = cfg;\n        const overriden = index >= overrideThreshold;\n\n        if (overriden) {\n          item.Overriden = true;\n          item.OverridenKeys = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(keys, k => {\n            const fvKey = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKey();\n            fvKey.Key = k.Key;\n\n            if (!k.Count) {\n              // !k.Count indicates k.Key is new added to the configuration and has not been loaded to the application yet\n              fvKey.Type = Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes.NONE;\n            } else if (index < k.EnvCount) {\n              fvKey.Type = Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT;\n            } else {\n              fvKey.Type = Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM;\n              fvKey.Path = k.Sum[index].rootMountPath;\n            }\n\n            return fvKey;\n          });\n        }\n      });\n\n      return res;\n    });\n\n    return lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default()(finalRes, undefined);\n  }\n\n  static generateEnvOrVolumesFromConfigurations(app, configurations) {\n    let finalEnv = [];\n    let finalVolumes = [];\n    let finalMounts = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(configurations, config => {\n      const isBasic = config.SelectedConfiguration.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_17__.KubernetesConfigurationKinds.CONFIGMAP;\n\n      if (!config.Overriden) {\n        const envKeys = lodash_es_keys__WEBPACK_IMPORTED_MODULE_6___default()(config.SelectedConfiguration.Data);\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(envKeys, item => {\n          const res = isBasic ? new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvConfigMapPayload() : new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvSecretPayload();\n          res.name = item;\n\n          if (isBasic) {\n            res.valueFrom.configMapKeyRef.name = config.SelectedConfiguration.Name;\n            res.valueFrom.configMapKeyRef.key = item;\n          } else {\n            res.valueFrom.secretKeyRef.name = config.SelectedConfiguration.Name;\n            res.valueFrom.secretKeyRef.key = item;\n          }\n\n          finalEnv.push(res);\n        });\n      } else {\n        const envKeys = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(config.OverridenKeys, item => item.Type === Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT);\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(envKeys, item => {\n          const res = isBasic ? new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvConfigMapPayload() : new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvSecretPayload();\n          res.name = item.Key;\n\n          if (isBasic) {\n            res.valueFrom.configMapKeyRef.name = config.SelectedConfiguration.Name;\n            res.valueFrom.configMapKeyRef.key = item.Key;\n          } else {\n            res.valueFrom.secretKeyRef.name = config.SelectedConfiguration.Name;\n            res.valueFrom.secretKeyRef.key = item.Key;\n          }\n\n          finalEnv.push(res);\n        });\n\n        const volKeys = lodash_es_filter__WEBPACK_IMPORTED_MODULE_14___default()(config.OverridenKeys, item => item.Type === Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM);\n\n        const groupedVolKeys = lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_3___default()(volKeys, 'Path');\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(groupedVolKeys, (items, path) => {\n          const volumeName = Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].generatedApplicationConfigVolumeName(app.Name);\n          const configurationName = config.SelectedConfiguration.Name;\n\n          const itemsMap = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(items, item => {\n            const entry = new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeEntryPayload();\n            entry.key = item.Key;\n            entry.path = item.Key;\n            return entry;\n          });\n\n          const mount = isBasic ? new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeMountPayload() : new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeMountPayload(true);\n          const volume = isBasic ? new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeConfigMapPayload() : new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeSecretPayload();\n          mount.name = volumeName;\n          mount.mountPath = path;\n          volume.name = volumeName;\n\n          if (isBasic) {\n            volume.configMap.name = configurationName;\n            volume.configMap.items = itemsMap;\n          } else {\n            volume.secret.secretName = configurationName;\n            volume.secret.items = itemsMap;\n          }\n\n          finalMounts.push(mount);\n          finalVolumes.push(volume);\n        });\n      }\n    });\n\n    app.Env = lodash_es_concat__WEBPACK_IMPORTED_MODULE_5___default()(app.Env, finalEnv);\n    app.Volumes = lodash_es_concat__WEBPACK_IMPORTED_MODULE_5___default()(app.Volumes, finalVolumes);\n    app.VolumeMounts = lodash_es_concat__WEBPACK_IMPORTED_MODULE_5___default()(app.VolumeMounts, finalMounts);\n    return app;\n  }\n  /* #endregion */\n\n  /* #region  SERVICES -> SERVICES FORM VALUES */\n\n\n  static generateServicesFormValuesFromServices(app) {\n    let services = [];\n\n    if (app.Services) {\n      app.Services.forEach(function (service) {\n        //skip generate formValues if service = headless service ( clusterIp === \"None\" )\n        if (service.spec.clusterIP !== 'None') {\n          const svc = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesService();\n          svc.Namespace = service.metadata.namespace;\n          svc.Name = service.metadata.name;\n          svc.StackName = service.StackName;\n          svc.ApplicationOwner = app.ApplicationOwner;\n          svc.ApplicationName = app.ApplicationName;\n          svc.Type = service.spec.type;\n\n          if (service.spec.type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.CLUSTER_IP) {\n            svc.Type = 1;\n          } else if (service.spec.type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.NODE_PORT) {\n            svc.Type = 2;\n          } else if (service.spec.type === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.LOAD_BALANCER) {\n            svc.Type = 3;\n          }\n\n          let ports = [];\n          service.spec.ports.forEach(function (port) {\n            const svcport = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServicePort();\n            svcport.name = port.name;\n            svcport.port = port.port;\n            svcport.nodePort = port.nodePort;\n            svcport.protocol = port.protocol;\n            svcport.targetPort = port.targetPort;\n            app.Ingresses.value.forEach(ingress => {\n              const ingressNameMatched = ingress.Paths.find(ingPath => ingPath.ServiceName === service.metadata.name);\n              const ingressPortMatched = ingress.Paths.find(ingPath => ingPath.Port === port.port); // only add ingress info to the port if the ingress serviceport matches the port in the service\n\n              if (ingressPortMatched) {\n                svcport.ingress = {\n                  IngressName: ingressPortMatched.IngressName,\n                  Host: ingressPortMatched.Host,\n                  Path: ingressPortMatched.Path\n                };\n              }\n\n              if (ingressNameMatched) {\n                svc.Ingress = true;\n              }\n            });\n            ports.push(svcport);\n          });\n          svc.Ports = ports;\n          svc.Selector = app.Raw.spec.selector.matchLabels;\n          services.push(svc);\n        }\n      });\n      return services;\n    }\n  }\n  /* #endregion */\n\n\n  static generateSelectorFromService(app) {\n    if (app.Raw.kind !== 'Pod') {\n      const selector = app.Raw.spec.selector.matchLabels;\n      return selector;\n    }\n  }\n  /* #region  PUBLISHED PORTS FV <> PUBLISHED PORTS */\n\n\n  static generatePublishedPortsFormValuesFromPublishedPorts(serviceType, publishedPorts, ingress) {\n    const generatePort = (port, rule) => {\n      const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishedPortFormValue();\n      res.IsNew = false;\n\n      if (rule) {\n        res.IngressName = rule.IngressName;\n        res.IngressRoute = rule.Path;\n        res.IngressHost = rule.Host;\n        res.IngressHosts = ingress && ingress.find(i => i.Name === rule.IngressName).Hosts;\n      }\n\n      res.Protocol = port.Protocol;\n      res.ContainerPort = port.TargetPort;\n\n      if (serviceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.LOAD_BALANCER) {\n        res.LoadBalancerPort = port.Port;\n        res.LoadBalancerNodePort = port.NodePort;\n      } else if (serviceType === Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesServiceTypes.NODE_PORT) {\n        res.NodePort = port.NodePort;\n      }\n\n      return res;\n    };\n\n    const finalRes = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_9___default()(publishedPorts, port => {\n      if (port.IngressRules.length) {\n        return lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(port.IngressRules, rule => generatePort(port, rule));\n      }\n\n      return generatePort(port);\n    });\n\n    return finalRes;\n  }\n  /* #endregion */\n\n  /* #region  AUTOSCALER FV <> HORIZONTAL POD AUTOSCALER */\n\n\n  static generateAutoScalerFormValueFromHorizontalPodAutoScaler(autoScaler, replicasCount) {\n    const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationAutoScalerFormValue();\n\n    if (autoScaler) {\n      res.IsUsed = true;\n      res.MinReplicas = autoScaler.MinReplicas;\n      res.MaxReplicas = autoScaler.MaxReplicas;\n      res.TargetCPUUtilization = autoScaler.TargetCPUUtilization;\n      res.ApiVersion = autoScaler.ApiVersion;\n    } else {\n      res.ApiVersion = 'apps/v1';\n      res.MinReplicas = replicasCount;\n      res.MaxReplicas = replicasCount;\n    }\n\n    return res;\n  }\n  /* #endregion */\n\n  /* #region  PERSISTED FOLDERS FV <> VOLUMES */\n\n\n  static generatePersistedFoldersFormValuesFromPersistedFolders(persistedFolders, persistentVolumeClaims) {\n    const finalRes = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(persistedFolders, folder => {\n      const pvc = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(persistentVolumeClaims, item => lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default()(item.Name, folder.PersistentVolumeClaimName));\n\n      const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPersistedFolderFormValue(pvc.StorageClass);\n      res.PersistentVolumeClaimName = folder.PersistentVolumeClaimName;\n      res.Size = parseInt(pvc.Storage, 10);\n      res.SizeUnit = pvc.Storage.slice(-2);\n      res.ContainerPath = folder.MountPath;\n      return res;\n    });\n\n    return finalRes;\n  }\n\n  static generateVolumesFromPersistentVolumClaims(app, volumeClaims) {\n    app.VolumeMounts = [];\n    app.Volumes = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(volumeClaims, item => {\n      const volumeMount = new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumeMountPayload();\n      const name = item.Name;\n      volumeMount.name = name;\n      volumeMount.mountPath = item.MountPath;\n      app.VolumeMounts.push(volumeMount);\n      const volume = new Kubernetes_models_application_payloads__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationVolumePersistentPayload();\n      volume.name = name;\n      volume.persistentVolumeClaim.claimName = name;\n      app.Volumes.push(volume);\n    });\n  }\n\n  static hasRWOOnly(formValues) {\n    return lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(formValues.PersistedFolders, item => item.StorageClass && lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(item.StorageClass.AccessModes, ['RWO']));\n  }\n\n  static hasRWX(claims) {\n    return lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(claims, item => item.StorageClass && lodash_es_includes__WEBPACK_IMPORTED_MODULE_10___default()(item.StorageClass.AccessModes, 'RWX')) !== undefined;\n  }\n  /* #endregion */\n\n  /* #region  PLACEMENTS FV <> AFFINITY */\n\n\n  static generatePlacementsFormValuesFromAffinity(formValues, podAffinity, nodesLabels) {\n    let placements = formValues.Placements;\n    let type = formValues.PlacementType;\n    const affinity = podAffinity.nodeAffinity;\n\n    if (affinity && affinity.requiredDuringSchedulingIgnoredDuringExecution) {\n      type = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationPlacementTypes.MANDATORY;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(affinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms, term => {\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(term.matchExpressions, exp => {\n          const placement = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPlacementFormValue();\n\n          const label = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(nodesLabels, {\n            Key: exp.key\n          });\n\n          placement.Label = label;\n          placement.Value = exp.values[0];\n          placement.IsNew = false;\n          placements.push(placement);\n        });\n      });\n    } else if (affinity && affinity.preferredDuringSchedulingIgnoredDuringExecution) {\n      type = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationPlacementTypes.PREFERRED;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(affinity.preferredDuringSchedulingIgnoredDuringExecution, term => {\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_13___default()(term.preference.matchExpressions, exp => {\n          const placement = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPlacementFormValue();\n\n          const label = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(nodesLabels, {\n            Key: exp.key\n          });\n\n          placement.Label = label;\n          placement.Value = exp.values[0];\n          placement.IsNew = false;\n          placements.push(placement);\n        });\n      });\n    }\n\n    formValues.Placements = placements;\n    formValues.PlacementType = type;\n  }\n\n  static generateAffinityFromPlacements(app, formValues) {\n    if (formValues.DeploymentType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationDeploymentTypes.REPLICATED) {\n      const placements = formValues.Placements;\n      const res = new Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__.KubernetesPodNodeAffinityPayload();\n\n      let expressions = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(placements, p => {\n        if (!p.NeedsDeletion) {\n          const exp = new Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__.KubernetesNodeSelectorRequirementPayload();\n          exp.key = p.Label.Key;\n\n          if (p.Value) {\n            exp.operator = Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_22__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN;\n            exp.values = [p.Value];\n          } else {\n            exp.operator = Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_22__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS;\n            delete exp.values;\n          }\n\n          return exp;\n        }\n      });\n\n      expressions = lodash_es_without__WEBPACK_IMPORTED_MODULE_12___default()(expressions, undefined);\n\n      if (expressions.length) {\n        if (formValues.PlacementType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationPlacementTypes.MANDATORY) {\n          const term = new Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__.KubernetesNodeSelectorTermPayload();\n          term.matchExpressions = expressions;\n          res.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.push(term);\n          delete res.preferredDuringSchedulingIgnoredDuringExecution;\n        } else if (formValues.PlacementType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationPlacementTypes.PREFERRED) {\n          const term = new Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__.KubernetesPreferredSchedulingTermPayload();\n          term.preference = new Kubernetes_pod_payloads_affinities__WEBPACK_IMPORTED_MODULE_23__.KubernetesNodeSelectorTermPayload();\n          term.preference.matchExpressions = expressions;\n          res.preferredDuringSchedulingIgnoredDuringExecution.push(term);\n          delete res.requiredDuringSchedulingIgnoredDuringExecution;\n        }\n\n        app.Affinity = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_22__.KubernetesPodAffinity();\n        app.Affinity.nodeAffinity = res;\n      }\n    }\n  }\n  /* #endregion */\n\n  /**\n   * Get Helm managed applications\n   * @param {KubernetesApplication[]} applications Application list\n   * @returns {Object} { [releaseName]: [app1, app2, ...], [releaseName2]: [app3, app4, ...] }\n   */\n\n\n  static getHelmApplications(applications) {\n    // filter out all the applications that are managed by helm\n    // to identify the helm managed applications, we need to check if the applications pod labels include\n    // `app.kubernetes.io/instance` and `app.kubernetes.io/managed-by` = `helm`\n    const helmManagedApps = applications.filter(app => app.Metadata.labels && app.Metadata.labels[PodKubernetesInstanceLabel] && app.Metadata.labels[PodManagedByLabel] === 'Helm'); // groups the helm managed applications by helm release name\n    // the release name is retrieved from the `app.kubernetes.io/instance` label on the pods within the apps\n    // `namespacedHelmReleases` object structure:\n    // {\n    //   [namespace1]: {\n    //     [releaseName]: [app1, app2, ...],\n    //   },\n    //   [namespace2]: {\n    //     [releaseName2]: [app1, app2, ...],\n    //   }\n    // }\n\n    const namespacedHelmReleases = {};\n    helmManagedApps.forEach(app => {\n      const namespace = app.ResourcePool;\n      const instanceLabel = app.Metadata.labels[PodKubernetesInstanceLabel];\n\n      if (namespacedHelmReleases[namespace]) {\n        namespacedHelmReleases[namespace][instanceLabel] = [...(namespacedHelmReleases[namespace][instanceLabel] || []), app];\n      } else {\n        namespacedHelmReleases[namespace] = {\n          [instanceLabel]: [app]\n        };\n      }\n    }); // `helmAppsEntriesList` object structure:\n    // [\n    //   [\"airflow-test\", Array(5)],\n    //   [\"traefik\", Array(1)],\n    //   [\"airflow-test\", Array(2)],\n    //   ...,\n    // ]\n\n    const helmAppsEntriesList = Object.values(namespacedHelmReleases).flatMap(r => Object.entries(r));\n    const helmAppsList = helmAppsEntriesList.map(([helmInstance, applications]) => {\n      const helmApp = new Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.HelmApplication();\n      helmApp.Name = helmInstance;\n      helmApp.ApplicationType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_21__.KubernetesApplicationTypes.HELM;\n      helmApp.ApplicationOwner = applications[0].ApplicationOwner;\n      helmApp.KubernetesApplications = applications; // the status of helm app is `Ready` based on whether the underlying RunningPodsCount of the k8s app\n      // reaches the TotalPodsCount of the app\n\n      const appsNotReady = applications.some(app => app.RunningPodsCount < app.TotalPodsCount);\n      helmApp.Status = appsNotReady ? 'Not ready' : 'Ready'; // use earliest date\n\n      helmApp.CreationDate = applications.map(app => app.CreationDate).sort((a, b) => new Date(a) - new Date(b))[0]; // use first app namespace as helm app namespace\n\n      helmApp.ResourcePool = applications[0].ResourcePool; // required for persisting table expansion state and differenting same named helm apps across different namespaces\n\n      helmApp.Id = helmApp.ResourcePool + '-' + helmApp.Name.toLowerCase().replaceAll(' ', '-');\n      return helmApp;\n    });\n    return helmAppsList;\n  }\n  /**\n   * Get nested applications -\n   * @param {KubernetesApplication[]} applications Application list\n   * @returns {Object} { helmApplications: [app1, app2, ...], nonHelmApplications: [app3, app4, ...] }\n   */\n\n\n  static getNestedApplications(applications) {\n    const helmApplications = KubernetesApplicationHelper.getHelmApplications(applications); // filter out helm managed applications\n\n    const helmAppNames = [...new Set(helmApplications.map(hma => hma.Name))]; // distinct helm app names\n\n    const nonHelmApplications = applications.filter(app => {\n      if (app.Metadata.labels) {\n        return !helmAppNames.includes(app.Metadata.labels[PodKubernetesInstanceLabel]);\n      }\n\n      return true;\n    });\n    return {\n      helmApplications,\n      nonHelmApplications\n    };\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationHelper);//# sourceURL=webpack-internal:///57947\n");

}),

65011:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/history/models */ 24601);\n\n\n\n\n\n\nclass KubernetesApplicationRollbackHelper {\n  static getPatchPayload(application, targetRevision) {\n    let result;\n\n    switch (application.ApplicationType) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.DEPLOYMENT:\n        result = KubernetesApplicationRollbackHelper._getDeploymentPayload(application, targetRevision);\n        break;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.DAEMONSET:\n        result = KubernetesApplicationRollbackHelper._getDaemonSetPayload(application, targetRevision);\n        break;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.STATEFULSET:\n        result = KubernetesApplicationRollbackHelper._getStatefulSetPayload(application, targetRevision);\n        break;\n\n      default:\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to determine which association to use to convert patch');\n    }\n\n    return result;\n  }\n\n  static _getDeploymentPayload(deploymentApp, targetRevision) {\n    const target = angular__WEBPACK_IMPORTED_MODULE_1___default().copy(targetRevision);\n    const deployment = deploymentApp.Raw; // remove hash label before patching back into the deployment\n\n    delete target.spec.template.metadata.labels[Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSystem_DefaultDeploymentUniqueLabelKey]; // compute deployment annotations\n\n    const annotations = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSystem_AnnotationsToSkip, (_, k) => {\n      const v = deployment.metadata.annotations[k];\n\n      if (v) {\n        annotations[k] = v;\n      }\n    });\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(target.metadata.annotations, (v, k) => {\n      if (!Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSystem_AnnotationsToSkip[k]) {\n        annotations[k] = v;\n      }\n    }); // Create a patch of the Deployment that replaces spec.template\n\n\n    const patch = [{\n      op: 'replace',\n      path: '/spec/template',\n      value: target.spec.template\n    }, {\n      op: 'replace',\n      path: '/metadata/annotations',\n      value: annotations\n    }];\n    return patch;\n  }\n\n  static _getDaemonSetPayload(daemonSet, targetRevision) {\n    void daemonSet;\n    return targetRevision.data;\n  }\n\n  static _getStatefulSetPayload(statefulSet, targetRevision) {\n    void statefulSet;\n    return targetRevision.data;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationRollbackHelper);//# sourceURL=webpack-internal:///65011\n");

}),

61515:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/truncate */ 80738);\n/* harmony import */ var lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/replace */ 30465);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_replace__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_set__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/set */ 5354);\n/* harmony import */ var lodash_es_set__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_set__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_unset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/unset */ 59712);\n/* harmony import */ var lodash_es_unset__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_unset__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nclass KubernetesCommonHelper {\n  static assignOrDeleteIfEmpty(obj, path, value) {\n    if (!value || value instanceof Array && !value.length) {\n      lodash_es_unset__WEBPACK_IMPORTED_MODULE_3___default()(obj, path);\n    } else {\n      lodash_es_set__WEBPACK_IMPORTED_MODULE_2___default()(obj, path, value);\n    }\n  }\n\n  static ownerToLabel(owner) {\n    let label = lodash_es_replace__WEBPACK_IMPORTED_MODULE_1___default()(owner, /[^-A-Za-z0-9_.]/g, '.');\n\n    label = lodash_es_truncate__WEBPACK_IMPORTED_MODULE_0___default()(label, {\n      length: 63,\n      omission: ''\n    });\n    label = lodash_es_replace__WEBPACK_IMPORTED_MODULE_1___default()(label, /^[-_.]*/g, '');\n    label = lodash_es_replace__WEBPACK_IMPORTED_MODULE_1___default()(label, /[-_.]*$/g, '');\n    return label;\n  }\n\n  static assignOrDeleteIfEmptyOrZero(obj, path, value) {\n    if (!value || value === 0 || value instanceof Array && !value.length) {\n      lodash_es_unset__WEBPACK_IMPORTED_MODULE_3___default()(obj, path);\n    } else {\n      lodash_es_set__WEBPACK_IMPORTED_MODULE_2___default()(obj, path, value);\n    }\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesCommonHelper);//# sourceURL=webpack-internal:///61515\n");

}),

58007:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forIn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forIn */ 5777);\n/* harmony import */ var lodash_es_forIn__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forIn__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/config-map/models */ 13978);\n/* harmony import */ var Portainer_models_access__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Portainer/models/access */ 93133);\n\n\n\n\n\nclass KubernetesConfigMapHelper {\n  static parseJSONData(configMap) {\n    lodash_es_forIn__WEBPACK_IMPORTED_MODULE_1___default()(configMap.Data, (value, key) => {\n      try {\n        configMap.Data[key] = JSON.parse(value);\n      } catch (err) {\n        configMap.Data[key] = value;\n      }\n    });\n\n    return configMap;\n  }\n\n  static modifiyNamespaceAccesses(configMap, namespace, accesses) {\n    configMap.Data[Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerConfigMapAccessKey][namespace] = {\n      UserAccessPolicies: {},\n      TeamAccessPolicies: {}\n    };\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(accesses, item => {\n      if (item instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_3__.UserAccessViewModel) {\n        configMap.Data[Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerConfigMapAccessKey][namespace].UserAccessPolicies[item.Id] = {\n          RoleId: 0\n        };\n      } else if (item instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_3__.TeamAccessViewModel) {\n        configMap.Data[Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesPortainerConfigMapAccessKey][namespace].TeamAccessPolicies[item.Id] = {\n          RoleId: 0\n        };\n      }\n    });\n\n    lodash_es_forIn__WEBPACK_IMPORTED_MODULE_1___default()(configMap.Data, (value, key) => {\n      configMap.Data[key] = JSON.stringify(value);\n    });\n\n    return configMap;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigMapHelper);//# sourceURL=webpack-internal:///58007\n");

}),

51780:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! yaml */ 78879);\n/* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(yaml__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigurationHelper {\n  static getUsingApplications(config, applications) {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(applications, app => {\n      let envFind;\n      let volumeFind;\n\n      if (config.Type === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesConfigurationKinds.CONFIGMAP) {\n        envFind = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(app.Env, {\n          valueFrom: {\n            configMapKeyRef: {\n              name: config.Name\n            }\n          }\n        });\n        volumeFind = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(app.Volumes, {\n          configMap: {\n            name: config.Name\n          }\n        });\n      } else {\n        envFind = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(app.Env, {\n          valueFrom: {\n            secretKeyRef: {\n              name: config.Name\n            }\n          }\n        });\n        volumeFind = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(app.Volumes, {\n          secret: {\n            secretName: config.Name\n          }\n        });\n      }\n\n      return envFind || volumeFind;\n    });\n  }\n\n  static isSystemToken(config) {\n    return lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_4___default()(config.Name, 'default-token-');\n  }\n\n  static isBinary(encoding) {\n    return encoding !== '' && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_3___default()(encoding, 'ISO') && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_3___default()(encoding, 'UTF');\n  }\n\n  static setConfigurationUsed(config) {\n    config.Used = config.Applications && config.Applications.length !== 0;\n  }\n\n  static setConfigurationsUsed(configurations, applications) {\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(configurations, config => {\n      config.Applications = KubernetesConfigurationHelper.getUsingApplications(config, applications);\n      KubernetesConfigurationHelper.setConfigurationUsed(config);\n    });\n  }\n\n  static getApplicationConfigurations(applications, configurations) {\n    const configurationsUsed = configurations.filter(config => KubernetesConfigurationHelper.getUsingApplications(config, applications).length !== 0); // set the configurations used for each application in the list\n\n    const configuredApps = applications.map(app => {\n      const configMappedByName = configurationsUsed.filter(config => app.ApplicationName === config.Name && app.ResourcePool === config.Namespace);\n      const configMappedByVolume = configurationsUsed.filter(config => app.ConfigurationVolumes.some(cv => cv.configurationName === config.Name)).filter(config => !configMappedByName.some(c => c.Name === config.Name)); // filter out duplicates that are mapped by name\n\n      app.Configurations = [...configMappedByName, ...configMappedByVolume];\n      return app;\n    });\n    return configuredApps;\n  }\n\n  static parseYaml(formValues) {\n    (yaml__WEBPACK_IMPORTED_MODULE_7___default().defaultOptions.customTags) = ['binary'];\n\n    const data = lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(yaml__WEBPACK_IMPORTED_MODULE_7___default().parse(formValues.DataYaml), (value, key) => {\n      const entry = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_9__.KubernetesConfigurationFormValuesEntry();\n      entry.Key = key;\n      entry.Value = value;\n\n      const oldEntry = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(formValues.Data, {\n        Key: entry.Key\n      });\n\n      entry.IsBinary = oldEntry ? oldEntry.IsBinary : false;\n      return entry;\n    });\n\n    return data;\n  }\n\n  static parseData(formValues) {\n    if (!formValues.Data.length) return '';\n\n    const data = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(formValues.Data, (acc, entry) => {\n      acc[entry.Key] = entry.Value;\n      return acc;\n    }, {});\n\n    return yaml__WEBPACK_IMPORTED_MODULE_7___default().stringify(data);\n  }\n\n  static isExternalConfiguration(configuration) {\n    return !configuration.ConfigurationOwner;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationHelper);//# sourceURL=webpack-internal:///51780\n");

}),

52929:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass KubernetesEventHelper {\n  static warningCount(events) {\n    const warnings = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(events, event => event.Type === 'Warning');\n\n    return warnings.length;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesEventHelper);//# sourceURL=webpack-internal:///52929\n");

}),

54241:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass KubernetesFormValidationHelper {\n  static getInvalidKeys(names) {\n    const res = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(names, (name, index) => {\n      const valid = /^[-._a-zA-Z0-9]+$/.test(name);\n\n      if (!valid) {\n        res[index] = true;\n      }\n    });\n\n    return res;\n  }\n\n  static getDuplicates(names) {\n    const grouped = lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(names);\n\n    const res = {};\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(names, (name, index) => {\n      if (name && grouped[name].length > 1) {\n        res[index] = name;\n      }\n    });\n\n    return res;\n  }\n\n  static getDuplicateNodePorts(serviceNodePorts, allOtherNodePorts) {\n    const res = {};\n    serviceNodePorts.forEach((sNodePort, index) => {\n      if (allOtherNodePorts.includes(sNodePort) || serviceNodePorts.filter(snp => snp === sNodePort).length > 1) {\n        res[index] = sNodePort;\n      }\n    });\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesFormValidationHelper);//# sourceURL=webpack-internal:///54241\n");

}),

48367:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/last */ 11600);\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_last__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nclass KubernetesDaemonSetHistoryHelper {\n  static _isControlledBy(daemonSet) {\n    return item => lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()(item.metadata.ownerReferences, {\n      uid: daemonSet.metadata.uid\n    }) !== undefined;\n  }\n\n  static filterOwnedRevisions(crList, daemonSet) {\n    // filter ControllerRevisions that has the same selector as the DaemonSet\n    // NOTE : this should be done in HTTP request based on daemonSet.spec.selector.matchLabels\n    // instead of getting all CR and filtering them here\n    const sameLabelsCR = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(crList, ['metadata.labels', daemonSet.spec.selector.matchLabels]); // Only include the RS whose ControllerRef matches the DaemonSet.\n\n\n    const controlledCR = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(sameLabelsCR, KubernetesDaemonSetHistoryHelper._isControlledBy(daemonSet)); // sorts the list of ControllerRevisions by revision, using the creationTimestamp as a tie breaker (old to new)\n\n\n    const sortedList = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default()(controlledCR, ['revision', 'metadata.creationTimestamp']);\n\n    return sortedList;\n  } // getCurrentRS returns the newest CR the given daemonSet targets (latest version)\n\n\n  static getCurrentRevision(crList) {\n    const current = lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default()(crList);\n\n    return current;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDaemonSetHistoryHelper);//# sourceURL=webpack-internal:///48367\n");

}),

38215:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/history/models */ 24601);\n\n\n\n\n\n\n\n\nclass KubernetesDeploymentHistoryHelper {\n  static _isControlledBy(deployment) {\n    return item => lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(item.metadata.ownerReferences, {\n      uid: deployment.metadata.uid\n    }) !== undefined;\n  }\n\n  static filterOwnedRevisions(rsList, deployment) {\n    // filter RS that has the same selector as the Deployment\n    // NOTE : this should be done in HTTP request based on deployment.spec.selector\n    // instead of getting all RS and filtering them here\n    const sameLabelsRS = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(rsList, ['spec.selector', deployment.spec.selector]); // Only include the RS whose ControllerRef matches the Deployment.\n\n\n    const controlledRS = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(sameLabelsRS, KubernetesDeploymentHistoryHelper._isControlledBy(deployment)); // sorts the list of ReplicaSet by creation timestamp, using the names as a tie breaker (old to new)\n\n\n    const sortedList = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_2___default()(controlledRS, ['metadata.creationTimestamp', 'metadata.name']);\n\n    return sortedList;\n  } // getCurrentRS returns the new RS the given deployment targets (the one with the same pod template).\n\n\n  static getCurrentRevision(rsListOriginal, deployment) {\n    const rsList = angular__WEBPACK_IMPORTED_MODULE_5___default().copy(rsListOriginal); // In rare cases, such as after cluster upgrades, Deployment may end up with\n    // having more than one new ReplicaSets that have the same template as its template,\n    // see https://github.com/kubernetes/kubernetes/issues/40415\n    // We deterministically choose the oldest new ReplicaSet (first match)\n\n    const current = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(rsList, item => {\n      // returns true if two given template.spec are equal, ignoring the diff in value of Labels[pod-template-hash]\n      // We ignore pod-template-hash because:\n      // 1. The hash result would be different upon podTemplateSpec API changes\n      //    (例如 the addition of a new field will cause the hash code to change)\n      // 2. The deployment template won't have hash labels\n      delete item.spec.template.metadata.labels[Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSystem_DefaultDeploymentUniqueLabelKey];\n      return lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_1___default()(deployment.spec.template, item.spec.template);\n    });\n\n    current.revision = current.metadata.annotations[Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSystem_RevisionAnnotation];\n    return current;\n  } // filters the RSList to drop all RS that have never been a version of the Deployment\n  // also add the revision as a field inside the RS\n  // Note: this should not impact rollback process as we only patch\n  // metadata.annotations and spec.template\n\n\n  static filterVersionedRevisions(rsList) {\n    const filteredRS = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(rsList, item => item.metadata.annotations[Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSystem_RevisionAnnotation] !== undefined);\n\n    return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(filteredRS, item => {\n      item.revision = item.metadata.annotations[Kubernetes_models_history_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesSystem_RevisionAnnotation];\n      return item;\n    });\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDeploymentHistoryHelper);//# sourceURL=webpack-internal:///38215\n");

}),

70224:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_helpers_history_deployment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/helpers/history/deployment */ 38215);\n/* harmony import */ var Kubernetes_helpers_history_daemonset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/history/daemonset */ 48367);\n/* harmony import */ var Kubernetes_helpers_history_statefulset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/history/statefulset */ 47220);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n\n\n\n\n\n\n\nclass KubernetesHistoryHelper {\n  static getRevisions(rawRevisions, application) {\n    let currentRevision, revisionsList;\n\n    switch (application.ApplicationType) {\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesApplicationTypes.DEPLOYMENT:\n        [currentRevision, revisionsList] = KubernetesHistoryHelper._getDeploymentRevisions(rawRevisions, application.Raw);\n        break;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesApplicationTypes.DAEMONSET:\n        [currentRevision, revisionsList] = KubernetesHistoryHelper._getDaemonSetRevisions(rawRevisions, application.Raw);\n        break;\n\n      case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesApplicationTypes.STATEFULSET:\n        [currentRevision, revisionsList] = KubernetesHistoryHelper._getStatefulSetRevisions(rawRevisions, application.Raw);\n        break;\n\n      default:\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to determine which association to use to get revisions');\n    }\n\n    revisionsList = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default()(revisionsList, 'revision');\n    return [currentRevision, revisionsList];\n  }\n\n  static _getDeploymentRevisions(rsList, deployment) {\n    const appRS = Kubernetes_helpers_history_deployment__WEBPACK_IMPORTED_MODULE_2__[\"default\"].filterOwnedRevisions(rsList, deployment);\n    const currentRS = Kubernetes_helpers_history_deployment__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCurrentRevision(appRS, deployment);\n    const versionedRS = Kubernetes_helpers_history_deployment__WEBPACK_IMPORTED_MODULE_2__[\"default\"].filterVersionedRevisions(appRS);\n    return [currentRS, versionedRS];\n  }\n\n  static _getDaemonSetRevisions(crList, daemonSet) {\n    const appCR = Kubernetes_helpers_history_daemonset__WEBPACK_IMPORTED_MODULE_3__[\"default\"].filterOwnedRevisions(crList, daemonSet);\n    const currentCR = Kubernetes_helpers_history_daemonset__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCurrentRevision(appCR, daemonSet);\n    return [currentCR, appCR];\n  }\n\n  static _getStatefulSetRevisions(crList, statefulSet) {\n    const appCR = Kubernetes_helpers_history_statefulset__WEBPACK_IMPORTED_MODULE_4__[\"default\"].filterOwnedRevisions(crList, statefulSet);\n    const currentCR = Kubernetes_helpers_history_statefulset__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getCurrentRevision(appCR, statefulSet);\n    return [currentCR, appCR];\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesHistoryHelper);//# sourceURL=webpack-internal:///70224\n");

}),

47220:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/last */ 11600);\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_last__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nclass KubernetesStatefulSetHistoryHelper {\n  static _isControlledBy(statefulSet) {\n    return item => lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()(item.metadata.ownerReferences, {\n      uid: statefulSet.metadata.uid\n    }) !== undefined;\n  }\n\n  static filterOwnedRevisions(crList, statefulSet) {\n    // filter ControllerRevisions that has the same selector as the StatefulSet\n    // NOTE : this should be done in HTTP request based on statefulSet.spec.selector.matchLabels\n    // instead of getting all CR and filtering them here\n    const sameLabelsCR = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(crList, ['metadata.labels', statefulSet.spec.selector.matchLabels]); // Only include the RS whose ControllerRef matches the StatefulSet.\n\n\n    const controlledCR = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(sameLabelsCR, KubernetesStatefulSetHistoryHelper._isControlledBy(statefulSet)); // sorts the list of ControllerRevisions by revision, using the creationTimestamp as a tie breaker (old to new)\n\n\n    const sortedList = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_1___default()(controlledCR, ['revision', 'metadata.creationTimestamp']);\n\n    return sortedList;\n  } // getCurrentRS returns the newest CR the given statefulSet targets (latest version)\n\n\n  static getCurrentRevision(crList) {\n    const current = lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default()(crList);\n\n    return current;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStatefulSetHistoryHelper);//# sourceURL=webpack-internal:///47220\n");

}),

7506:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesNamespaceHelper; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/namespace/models */ 35076);\n/* harmony import */ var Kubernetes_store_namespace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/store/namespace */ 22823);\n\n\n\nclass KubernetesNamespaceHelper {\n  /**\n   * Check if namespace is system or not\n   * @param {String} namespace Namespace (string name) to evaluate\n   * @returns Boolean\n   */\n  static isSystemNamespace(namespace) {\n    return (0,Kubernetes_store_namespace__WEBPACK_IMPORTED_MODULE_2__.isSystem)(namespace);\n  }\n  /**\n   * Check if namespace is default or not\n   * @param {String} namespace Namespace (string name) to evaluate\n   * @returns Boolean\n   */\n\n\n  static isDefaultNamespace(namespace) {\n    return namespace === Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_1__.KUBERNETES_DEFAULT_NAMESPACE;\n  }\n  /**\n   * Check if namespace is one of the default system namespaces\n   * @param {String} namespace Namespace (string name) to evaluate\n   * @returns Boolean\n   */\n\n\n  static isDefaultSystemNamespace(namespace) {\n    return lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(Kubernetes_models_namespace_models__WEBPACK_IMPORTED_MODULE_1__.KUBERNETES_DEFAULT_SYSTEM_NAMESPACES, namespace);\n  }\n\n}//# sourceURL=webpack-internal:///7506\n");

}),

21458:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/resource-quota/models */ 47685);\n\n\nclass KubernetesResourceQuotaHelper {\n  static generateResourceQuotaName(name) {\n    return Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerResourceQuotaPrefix + name;\n  }\n\n  static formatBytes(bytes, decimals = 0, base10 = true) {\n    const res = {\n      Size: 0,\n      SizeUnit: 'B'\n    };\n\n    if (bytes === 0) {\n      return res;\n    }\n\n    const k = base10 ? 1000 : 1024;\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n    return {\n      Size: parseFloat((bytes / Math.pow(k, i)).toFixed(dm)),\n      SizeUnit: sizes[i]\n    };\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourceQuotaHelper);//# sourceURL=webpack-internal:///21458\n");

}),

22229:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_endsWith__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/endsWith */ 94467);\n/* harmony import */ var lodash_es_endsWith__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_endsWith__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/resource-reservation/models */ 46685);\n\n\n\n\n\n\nclass KubernetesResourceReservationHelper {\n  static computeResourceReservation(pods) {\n    const containers = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()(pods, (acc, pod) => lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(acc, pod.Containers), []);\n\n    return lodash_es_reduce__WEBPACK_IMPORTED_MODULE_2___default()(containers, (acc, container) => {\n      if (container.Requests) {\n        if (container.Requests.memory) {\n          acc.Memory += filesize_parser__WEBPACK_IMPORTED_MODULE_3___default()(container.Requests.memory, {\n            base: 10\n          });\n        }\n\n        if (container.Requests.cpu) {\n          acc.CPU += KubernetesResourceReservationHelper.parseCPU(container.Requests.cpu);\n        }\n      }\n\n      return acc;\n    }, new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesResourceReservation());\n  }\n\n  static parseCPU(cpu) {\n    let res = parseInt(cpu, 10);\n\n    if (lodash_es_endsWith__WEBPACK_IMPORTED_MODULE_0___default()(cpu, 'm')) {\n      res /= 1000;\n    } else if (lodash_es_endsWith__WEBPACK_IMPORTED_MODULE_0___default()(cpu, 'n')) {\n      res /= 1000000000;\n    }\n\n    return res;\n  }\n\n  static megaBytesValue(value) {\n    return Math.floor(filesize_parser__WEBPACK_IMPORTED_MODULE_3___default()(value) / 1000 / 1000);\n  }\n\n  static bytesValue(mem) {\n    return filesize_parser__WEBPACK_IMPORTED_MODULE_3___default()(mem) * 1000 * 1000;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourceReservationHelper);//# sourceURL=webpack-internal:///22229\n");

}),

57637:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isMatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/isMatch */ 55828);\n/* harmony import */ var lodash_es_isMatch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isMatch__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n\n\n\n\n\nclass KubernetesServiceHelper {\n  static generateHeadlessServiceName(name) {\n    return Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesServiceHeadlessPrefix + name;\n  }\n\n  static findApplicationBoundService(services, rawApp) {\n    if (!rawApp.spec.template) {\n      return undefined;\n    }\n\n    return lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(services, item => item.spec.selector && lodash_es_isMatch__WEBPACK_IMPORTED_MODULE_1___default()(rawApp.spec.template.metadata.labels, item.spec.selector));\n  }\n\n  static findApplicationBoundServices(services, rawApp) {\n    if (!rawApp.spec.template) {\n      return undefined;\n    }\n\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(services, item => item.spec.selector && lodash_es_isMatch__WEBPACK_IMPORTED_MODULE_1___default()(rawApp.spec.template.metadata.labels, item.spec.selector));\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesServiceHelper);//# sourceURL=webpack-internal:///57637\n");

}),

41208:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Kubernetes_models_stack_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/stack/models */ 31084);\n\n\n\n\nclass KubernetesStackHelper {\n  static stacksFromApplications(applications) {\n    const res = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1___default()(applications, (acc, app) => {\n      if (app.StackName) {\n        let stack = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(acc, {\n          Name: app.StackName,\n          ResourcePool: app.ResourcePool\n        });\n\n        if (!stack) {\n          stack = new Kubernetes_models_stack_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesStack();\n          stack.Name = app.StackName;\n          stack.ResourcePool = app.ResourcePool;\n          acc.push(stack);\n        }\n\n        stack.Applications.push(app);\n      }\n\n      return acc;\n    }, []);\n\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStackHelper);//# sourceURL=webpack-internal:///41208\n");

}),

69461:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stackHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stackHelper */ 41208);\n\ndescribe('stacksFromApplications', () => {\n  const {\n    stacksFromApplications\n  } = _stackHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n  test('should return an empty array when passed an empty array', () => {\n    expect(stacksFromApplications([])).toHaveLength(0);\n  });\n  test('should return an empty array when passed a list of applications without stacks', () => {\n    expect(stacksFromApplications([{\n      StackName: ''\n    }, {\n      StackName: ''\n    }, {\n      StackName: ''\n    }, {\n      StackName: ''\n    }])).toHaveLength(0);\n  });\n});//# sourceURL=webpack-internal:///69461\n");

}),

11507:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n\n\n\n\n\n\n\n\nclass KubernetesVolumeHelper {\n  // TODO: review\n  // the following condition\n  // && (app.ApplicationType === KubernetesApplicationTypes.STATEFULSET ? _.includes(volume.PersistentVolumeClaim.Name, app.Name) : true);\n  // is made to enforce finding the good SFS when multiple SFS in the same namespace\n  // are referencing an internal PVC using the same internal name\n  // (PVC are not exposed to other apps so they can have the same name in differents SFS)\n  static getUsingApplications(volume, applications) {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(applications, app => {\n      const names = lodash_es_without__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(app.Volumes, 'persistentVolumeClaim.claimName'), undefined);\n\n      const matchingNames = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(names, name => lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default()(volume.PersistentVolumeClaim.Name, name));\n\n      return volume.ResourcePool.Namespace.Name === app.ResourcePool && matchingNames.length && (app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesApplicationTypes.STATEFULSET ? lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(volume.PersistentVolumeClaim.Name, app.Name) : true);\n    });\n  }\n\n  static isUsed(item) {\n    return item.Applications.length !== 0;\n  }\n\n  static generatedApplicationConfigVolumeName(name) {\n    return 'config-' + name + '-' + uuid_v4__WEBPACK_IMPORTED_MODULE_5___default()();\n  }\n\n  static isExternalVolume(volume) {\n    return !volume.PersistentVolumeClaim.ApplicationOwner;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumeHelper);//# sourceURL=webpack-internal:///11507\n");

}),

41247:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesHorizontalPodAutoScalerConverter\": function() { return /* binding */ KubernetesHorizontalPodAutoScalerConverter; }\n/* harmony export */ });\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./models */ 90914);\n/* harmony import */ var _payload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./payload */ 85597);\n\n\n\nclass KubernetesHorizontalPodAutoScalerConverter {\n  /**\n   * Convert API data to KubernetesHorizontalPodAutoScaler model\n   */\n  static apiToModel(data, yaml) {\n    const res = new _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesHorizontalPodAutoScaler();\n    res.Id = data.metadata.uid;\n    res.Namespace = data.metadata.namespace;\n    res.Name = data.metadata.name;\n    res.MinReplicas = data.spec.minReplicas;\n    res.MaxReplicas = data.spec.maxReplicas;\n    res.TargetCPUUtilization = data.spec.targetCPUUtilizationPercentage;\n\n    if (data.spec.scaleTargetRef) {\n      res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;\n      res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;\n      res.TargetEntity.Name = data.spec.scaleTargetRef.name;\n    }\n\n    res.Yaml = yaml ? yaml.data : '';\n    return res;\n  }\n\n  static createPayload(data) {\n    const payload = new _payload__WEBPACK_IMPORTED_MODULE_2__.KubernetesHorizontalPodAutoScalerCreatePayload();\n    payload.metadata.namespace = data.Namespace;\n    payload.metadata.name = data.TargetEntity.Name;\n    payload.spec.minReplicas = data.MinReplicas;\n    payload.spec.maxReplicas = data.MaxReplicas;\n    payload.spec.targetCPUUtilizationPercentage = data.TargetCPUUtilization;\n    payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;\n    payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;\n    payload.spec.scaleTargetRef.name = data.TargetEntity.Name;\n    return payload;\n  }\n\n  static patchPayload(oldScaler, newScaler) {\n    const oldPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(oldScaler);\n    const newPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(newScaler);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_0__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n  static applicationFormValuesToModel(formValues, kind) {\n    const res = new _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesHorizontalPodAutoScaler();\n    res.Name = formValues.Name;\n    res.Namespace = formValues.ResourcePool.Namespace.Name;\n    res.MinReplicas = formValues.AutoScaler.MinReplicas;\n    res.MaxReplicas = formValues.AutoScaler.MaxReplicas;\n    res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;\n    res.TargetEntity.Name = formValues.Name;\n    res.TargetEntity.Kind = kind;\n    res.TargetEntity.ApiVersion = formValues.AutoScaler.ApiVersion;\n    return res;\n  }\n  /**\n   * Convertion functions to use with v2beta2 model\n   */\n  // static apiToModel(data, yaml) {\n  //   const res = new KubernetesHorizontalPodAutoScaler();\n  //   res.Id = data.metadata.uid;\n  //   res.Namespace = data.metadata.namespace;\n  //   res.Name = data.metadata.name;\n  //   res.MinReplicas = data.spec.minReplicas;\n  //   res.MaxReplicas = data.spec.maxReplicas;\n  //   res.TargetCPUUtilization = data.spec.targetCPUUtilization;\n  //   _.forEach(data.spec.metrics, (metric) => {\n  //     if (metric.type === 'Resource') {\n  //       if (metric.resource.name === 'cpu') {\n  //         res.TargetCPUUtilization = metric.resource.target.averageUtilization;\n  //       }\n  //       if (metric.resource.name === 'memory') {\n  //         res.TargetMemoryValue = parseFloat(metric.resource.target.averageValue) / 1000;\n  //       }\n  //     }\n  //   });\n  //   if (data.spec.scaleTargetRef) {\n  //     res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;\n  //     res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;\n  //     res.TargetEntity.Name = data.spec.scaleTargetRef.name;\n  //   }\n  //   res.Yaml = yaml ? yaml.data : '';\n  //   return res;\n  // }\n  // static createPayload(data) {\n  //   const payload = new KubernetesHorizontalPodAutoScalerCreatePayload();\n  //   payload.metadata.namespace = data.Namespace;\n  //   payload.metadata.name = data.TargetEntity.Name;\n  //   payload.spec.minReplicas = data.MinReplicas;\n  //   payload.spec.maxReplicas = data.MaxReplicas;\n  //   if (data.TargetMemoryValue) {\n  //     const memoryMetric = new KubernetesHorizontalPodAutoScalerMemoryMetric();\n  //     memoryMetric.resource.target.averageValue = data.TargetMemoryValue;\n  //     payload.spec.metrics.push(memoryMetric);\n  //   }\n  //   if (data.TargetCPUUtilization) {\n  //     const cpuMetric = new KubernetesHorizontalPodAutoScalerCPUMetric();\n  //     cpuMetric.resource.target.averageUtilization = data.TargetCPUUtilization;\n  //     payload.spec.metrics.push(cpuMetric);\n  //   }\n  //   payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;\n  //   payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;\n  //   payload.spec.scaleTargetRef.name = data.TargetEntity.Name;\n  //   return payload;\n  // }\n  // static applicationFormValuesToModel(formValues, kind) {\n  //   const res = new KubernetesHorizontalPodAutoScaler();\n  //   res.Name = formValues.Name;\n  //   res.Namespace = formValues.ResourcePool.Namespace.Name;\n  //   res.MinReplicas = formValues.AutoScaler.MinReplicas;\n  //   res.MaxReplicas = formValues.AutoScaler.MaxReplicas;\n  //   res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;\n  //   if (formValues.AutoScaler.TargetMemoryValue) {\n  //     res.TargetMemoryValue = formValues.AutoScaler.TargetMemoryValue + 'M';\n  //   }\n  //   res.TargetEntity.Name = formValues.Name;\n  //   res.TargetEntity.Kind = kind;\n  //   return res;\n  // }\n\n\n}//# sourceURL=webpack-internal:///41247\n");

}),

1239:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesHorizontalPodAutoScalerHelper\": function() { return /* binding */ KubernetesHorizontalPodAutoScalerHelper; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/deployment/models */ 59238);\n/* harmony import */ var Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/stateful-set/models */ 91920);\n/* harmony import */ var Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/daemon-set/models */ 12745);\n\n\n\n\n\n\nclass KubernetesHorizontalPodAutoScalerHelper {\n  static findApplicationBoundScaler(sList, app) {\n    const kind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n    return lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(sList, item => item.TargetEntity.Kind === kind && item.TargetEntity.Name === app.Name);\n  }\n\n  static getApplicationTypeString(app) {\n    if (app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.DEPLOYMENT || app instanceof Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesDeployment) {\n      return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.DEPLOYMENT;\n    } else if (app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.DAEMONSET || app instanceof Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesDaemonSet) {\n      return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.DAEMONSET;\n    } else if (app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.STATEFULSET || app instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesStatefulSet) {\n      return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.STATEFULSET;\n    } else if (app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypes.POD) {\n      return Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationTypeStrings.POD;\n    } else {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to determine application type');\n    }\n  }\n\n}//# sourceURL=webpack-internal:///1239\n");

}),

90914:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesHorizontalPodAutoScaler\": function() { return /* binding */ KubernetesHorizontalPodAutoScaler; }\n/* harmony export */ });\n/**\n * KubernetesHorizontalPodAutoScaler Model\n */\nconst _KubernetesHorizontalPodAutoScaler = Object.freeze({\n  Id: '',\n  Namespace: '',\n  Name: '',\n  MinReplicas: 1,\n  MaxReplicas: 1,\n  TargetCPUUtilization: 0,\n  TargetEntity: {\n    ApiVersion: '',\n    Kind: '',\n    Name: ''\n  },\n  Yaml: ''\n});\n\nclass KubernetesHorizontalPodAutoScaler {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScaler)));\n  }\n\n}//# sourceURL=webpack-internal:///90914\n");

}),

85597:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesHorizontalPodAutoScalerCreatePayload\": function() { return /* binding */ KubernetesHorizontalPodAutoScalerCreatePayload; }\n/* harmony export */ });\n/**\n * KubernetesHorizontalPodAutoScaler Create Payload Model\n */\nconst _KubernetesHorizontalPodAutoScalerCreatePayload = Object.freeze({\n  metadata: {\n    namespace: '',\n    name: ''\n  },\n  spec: {\n    maxReplicas: 0,\n    minReplicas: 0,\n    targetCPUUtilizationPercentage: 0,\n    scaleTargetRef: {\n      kind: '',\n      name: ''\n    }\n  }\n});\n\nclass KubernetesHorizontalPodAutoScalerCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCreatePayload)));\n  }\n\n}\n/**\n * KubernetesHorizontalPodAutoScaler Create Payload Model for v2beta2\n * Include support of memory usage\n */\n// const _KubernetesHorizontalPodAutoScalerCreatePayload = Object.freeze({\n//   metadata: {\n//     namespace: '',\n//     name: ''\n//   },\n//   spec: {\n//     maxReplicas: 0,\n//     minReplicas: 0,\n//     targetCPUUtilizationPercentage: 0,\n//     scaleTargetRef: {\n//       kind: '',\n//       name: ''\n//     },\n//     metrics: []\n//   }\n// });\n// export class KubernetesHorizontalPodAutoScalerCreatePayload {\n//   constructor() {\n//     Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCreatePayload)));\n//   }\n// }\n// const _KubernetesHorizontalPodAutoScalerCPUMetric = Object.freeze({\n//   type: 'Resource',\n//   resource: {\n//     name: 'cpu',\n//     target: {\n//       type: 'Utilization',\n//       averageUtilization: 0\n//     }\n//   }\n// });\n// export class KubernetesHorizontalPodAutoScalerCPUMetric {\n//   constructor() {\n//     Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCPUMetric)));\n//   }\n// }\n// const _KubernetesHorizontalPodAutoScalerMemoryMetric = Object.freeze({\n//   type: 'Resource',\n//   resource: {\n//     name: 'memory',\n//     target: {\n//       type: 'AverageValue',\n//       averageValue: ''\n//     }\n//   }\n// });\n// export class KubernetesHorizontalPodAutoScalerMemoryMetric {\n//   constructor() {\n//     Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerMemoryMetric)));\n//   }\n// }//# sourceURL=webpack-internal:///85597\n");

}),

61160:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesHorizontalPodAutoScalers', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesHorizontalPodAutoScalersFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/autoscaling/v1' + (namespace ? '/namespaces/:namespace' : '') + '/horizontalpodautoscalers/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      rollback: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///61160\n");

}),

51866:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var _converter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./converter */ 41247);\n\n\n\n\n\n\nclass KubernetesHorizontalPodAutoScalerService {\n  /* @ngInject */\n  constructor($async, KubernetesHorizontalPodAutoScalers) {\n    this.$async = $async;\n    this.KubernetesHorizontalPodAutoScalers = KubernetesHorizontalPodAutoScalers;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this); // this.rollbackAsync = this.rollbackAsync.bind(this);\n\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesHorizontalPodAutoScalers(namespace).get(params).$promise, this.KubernetesHorizontalPodAutoScalers(namespace).getYaml(params).$promise]);\n      const res = _converter__WEBPACK_IMPORTED_MODULE_4__.KubernetesHorizontalPodAutoScalerConverter.apiToModel(raw, yaml);\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve HorizontalPodAutoScaler', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesHorizontalPodAutoScalers(namespace).get().$promise;\n\n      const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => _converter__WEBPACK_IMPORTED_MODULE_4__.KubernetesHorizontalPodAutoScalerConverter.apiToModel(item));\n\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve HorizontalPodAutoScalers', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(horizontalPodAutoScaler) {\n    try {\n      const params = {};\n      const payload = _converter__WEBPACK_IMPORTED_MODULE_4__.KubernetesHorizontalPodAutoScalerConverter.createPayload(horizontalPodAutoScaler);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesHorizontalPodAutoScalers(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to create horizontalPodAutoScaler', err);\n    }\n  }\n\n  create(horizontalPodAutoScaler) {\n    return this.$async(this.createAsync, horizontalPodAutoScaler);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = newHorizontalPodAutoScaler.Name;\n      const namespace = newHorizontalPodAutoScaler.Namespace;\n      const payload = _converter__WEBPACK_IMPORTED_MODULE_4__.KubernetesHorizontalPodAutoScalerConverter.patchPayload(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesHorizontalPodAutoScalers(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to patch horizontalPodAutoScaler', err);\n    }\n  }\n\n  patch(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n    return this.$async(this.patchAsync, oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(horizontalPodAutoScaler) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = horizontalPodAutoScaler.Name;\n      const namespace = horizontalPodAutoScaler.Namespace;\n      await this.KubernetesHorizontalPodAutoScalers(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to remove horizontalPodAutoScaler', err);\n    }\n  }\n\n  delete(horizontalPodAutoScaler) {\n    return this.$async(this.deleteAsync, horizontalPodAutoScaler);\n  } // /**\n  //  * ROLLBACK\n  //  */\n  // async rollbackAsync(namespace, name, payload) {\n  //   try {\n  //     const params = new KubernetesCommonParams();\n  //     params.id = name;\n  //     await this.KubernetesHorizontalPodAutoScalers(namespace).rollback(params, payload).$promise;\n  //   } catch (err) {\n  //     throw new PortainerError('Unable to rollback horizontalPodAutoScaler', err);\n  //   }\n  // }\n  // rollback(namespace, name, payload) {\n  //   return this.$async(this.rollbackAsync, namespace, name, payload);\n  // }\n\n\n}\n\nKubernetesHorizontalPodAutoScalerService.$inject = [\"$async\", \"KubernetesHorizontalPodAutoScalers\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesHorizontalPodAutoScalerService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesHorizontalPodAutoScalerService', KubernetesHorizontalPodAutoScalerService);//# sourceURL=webpack-internal:///51866\n");

}),

62072:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngressClassAnnotation\": function() { return /* binding */ KubernetesIngressClassAnnotation; },\n/* harmony export */   \"KubernetesNginxRewriteTargetAnnotations\": function() { return /* binding */ KubernetesNginxRewriteTargetAnnotations; },\n/* harmony export */   \"KubernetesTraefikRewriteTargetAnnotations\": function() { return /* binding */ KubernetesTraefikRewriteTargetAnnotations; },\n/* harmony export */   \"KubernetesNginxUseregexAnnotations\": function() { return /* binding */ KubernetesNginxUseregexAnnotations; },\n/* harmony export */   \"KubernetesIngressClassTypes\": function() { return /* binding */ KubernetesIngressClassTypes; },\n/* harmony export */   \"PortainerIngressClassTypes\": function() { return /* binding */ PortainerIngressClassTypes; }\n/* harmony export */ });\nconst KubernetesIngressClassAnnotation = 'kubernetes.io/ingress.class'; // keys must match KubernetesIngressClassTypes values to map them quickly using the ingress type\n// KubernetesIngressClassRewriteTargetAnnotations[KubernetesIngressClassTypes.NGINX] for example\n\nconst KubernetesNginxRewriteTargetAnnotations = {\n  Key: 'nginx.ingress.kubernetes.io/rewrite-target',\n  Value: '/$1'\n};\nconst KubernetesTraefikRewriteTargetAnnotations = {\n  Key: 'traefik.ingress.kubernetes.io/rewrite-target',\n  Value: '/$1'\n};\nconst KubernetesNginxUseregexAnnotations = {\n  Key: 'nginx.ingress.kubernetes.io/use-regex',\n  Value: 'true'\n};\nconst KubernetesIngressClassTypes = Object.freeze({\n  NGINX: 'nginx',\n  TRAEFIK: 'traefik'\n});\nconst PortainerIngressClassTypes = 'ingress.portainer.io/ingress-type';//# sourceURL=webpack-internal:///62072\n");

}),

47086:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngressConverter\": function() { return /* binding */ KubernetesIngressConverter; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/toPairs */ 4160);\n/* harmony import */ var lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_fromPairs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/fromPairs */ 36947);\n/* harmony import */ var lodash_es_fromPairs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_fromPairs__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_es_findIndex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es/findIndex */ 45849);\n/* harmony import */ var lodash_es_findIndex__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_es_findIndex__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n/* harmony import */ var _models_application_models__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../models/application/models */ 7172);\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./models */ 27155);\n/* harmony import */ var _payloads__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./payloads */ 17362);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./constants */ 62072);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesIngressConverter {\n  static apiToModel(data) {\n    const paths = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_12___default()(data.spec.rules, rule => {\n      return !rule.http ? [] : lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(rule.http.paths, path => {\n        const ingRule = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngressRule();\n        ingRule.IngressName = data.metadata.name;\n        ingRule.ServiceName = path.backend.service.name;\n        ingRule.Host = rule.host || '';\n        ingRule.IP = data.status.loadBalancer.ingress ? data.status.loadBalancer.ingress[0].ip : undefined;\n        ingRule.Port = path.backend.service.port.number;\n        ingRule.Path = path.path;\n        ingRule.TLS = data.spec.tls;\n        return ingRule;\n      });\n    });\n\n    const res = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngress();\n    res.Name = data.metadata.name;\n    res.Namespace = data.metadata.namespace;\n    res.Annotations = data.metadata.annotations || {};\n    res.IngressClassName = data.metadata.annotations && data.metadata.annotations[_constants__WEBPACK_IMPORTED_MODULE_19__.KubernetesIngressClassAnnotation] ? data.metadata.annotations[_constants__WEBPACK_IMPORTED_MODULE_19__.KubernetesIngressClassAnnotation] : data.spec.ingressClassName;\n    res.Paths = paths;\n    res.Hosts = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_10___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(data.spec.rules, 'host'));\n\n    const idx = lodash_es_findIndex__WEBPACK_IMPORTED_MODULE_9___default()(res.Hosts, h => h === undefined);\n\n    if (idx >= 0) {\n      res.Hosts.splice(idx, 1, '');\n    }\n\n    res.TLS = data.spec.tls;\n    return res;\n  }\n  /**\n   * Converts Application Form Value (from Create Application View) to Ingresses\n   * @param {KubernetesApplicationFormValues} formValues\n   * @param {string} serviceName\n   * @returns {KubernetesIngressRule[]}\n   */\n\n\n  static applicationFormValuesToIngresses(formValues, serviceName) {\n    const isPublishingToIngress = formValues.PublishingType === _models_application_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesApplicationPublishingTypes.INGRESS;\n    const ingresses = angular.copy(formValues.OriginalIngresses);\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(formValues.PublishedPorts, p => {\n      const ingress = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(ingresses, {\n        Name: p.IngressName\n      });\n\n      if (ingress) {\n        if (p.NeedsDeletion) {\n          lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(ingress.Paths, path => path.Port === p.ContainerPort && path.ServiceName === serviceName && path.Path === p.IngressRoute);\n        } else if (isPublishingToIngress && p.IsNew) {\n          const rule = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngressRule();\n          rule.IngressName = ingress.Name;\n          rule.ServiceName = serviceName;\n          rule.Port = p.ContainerPort;\n\n          if (p.IngressRoute) {\n            rule.Path = lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default()(p.IngressRoute, '/') ? p.IngressRoute : '/' + p.IngressRoute;\n          }\n\n          rule.Host = p.IngressHost;\n          ingress.Paths.push(rule);\n        }\n      }\n    });\n\n    return ingresses;\n  }\n\n  static applicationFormValuesToDeleteIngresses(formValues, application) {\n    const ingresses = angular.copy(formValues.OriginalIngresses);\n    application.Services.forEach(service => {\n      ingresses.forEach(ingress => {\n        const path = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(ingress.Paths, {\n          ServiceName: service.metadata.name\n        });\n\n        if (path) {\n          lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(ingress.Paths, path);\n        }\n      });\n    });\n    return ingresses;\n  }\n\n  static removeIngressesPaths(ingresses, services) {\n    const originalIngress = angular.copy(ingresses);\n    originalIngress.forEach(ingress => {\n      services.forEach(service => {\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(ingress.Paths, {\n          ServiceName: service.Name\n        });\n      });\n    });\n    return originalIngress;\n  }\n\n  static generateNewIngresses(ingresses, services) {\n    const originalIngresses = angular.copy(ingresses);\n    services.filter(s => s.Ingress).forEach(service => {\n      if (service.Ports.length !== 0) {\n        const matchedIngress = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(originalIngresses, {\n          Name: service.Ports[0].ingress.IngressName\n        });\n\n        if (matchedIngress) {\n          const rule = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngressRule();\n          rule.ServiceName = service.Name;\n          rule.IngressName = service.Ports[0].ingress.IngressName;\n          rule.Host = service.Ports[0].ingress.Host;\n          rule.Path = lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default()(service.Ports[0].ingress.Path, '/') ? service.Ports[0].ingress.Path : '/' + service.Ports[0].ingress.Path;\n          rule.Port = service.Ports[0].port;\n          matchedIngress.Paths.push(rule);\n        }\n      }\n    });\n    return originalIngresses;\n  } // need this function for [ resource summary ] controller\n\n\n  static newApplicationFormValuesToIngresses(formValues, serviceName, servicePorts) {\n    const ingresses = angular.copy(formValues.OriginalIngresses);\n    servicePorts.forEach(port => {\n      const ingress = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(ingresses, {\n        Name: port.ingress.IngressName\n      });\n\n      if (ingress) {\n        const rule = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngressRule();\n        rule.ServiceName = serviceName;\n        rule.IngressName = port.ingress.IngressName;\n        rule.Host = port.ingress.Host;\n        rule.Path = lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_5___default()(port.ingress.Path, '/') ? port.ingress.Path : '/' + port.ingress.Path;\n        rule.Port = port.port;\n        ingress.Paths.push(rule);\n      }\n    });\n    return ingresses;\n  }\n  /**\n   *\n   * @param {KubernetesResourcePoolIngressClassFormValue[]} formValues\n   * @returns {KubernetesIngress} Ingress\n   */\n\n\n  static resourcePoolIngressClassFormValueToIngress(formValues) {\n    const res = new _models__WEBPACK_IMPORTED_MODULE_17__.KubernetesIngress();\n    res.Name = formValues.IngressClass.Name;\n    res.Namespace = formValues.Namespace;\n\n    const pairs = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(formValues.Annotations, a => [a.Key, a.Value]);\n\n    res.Annotations = lodash_es_fromPairs__WEBPACK_IMPORTED_MODULE_4___default()(pairs);\n    res.Annotations[_constants__WEBPACK_IMPORTED_MODULE_19__.PortainerIngressClassTypes] = formValues.IngressClass.Name;\n    res.IngressClassName = formValues.IngressClass.Name;\n    res.Hosts = formValues.Hosts;\n    res.Paths = formValues.Paths;\n    return res;\n  }\n  /**\n   *\n   * @param {KubernetesIngressClass} ics Ingress classes (saved in Portainer DB)\n   * @param {KubernetesIngress[]} ingresses Existing Kubernetes ingresses. Must be empty for RP CREATE VIEW and filled for RP EDIT VIEW\n   */\n\n\n  static ingressClassesToFormValues(ics, ingresses) {\n    const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(ics, ic => {\n      const fv = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_15__.KubernetesResourcePoolIngressClassFormValue(ic);\n\n      const ingress = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(ingresses, {\n        Name: ic.Name\n      });\n\n      if (ingress) {\n        fv.Selected = true;\n        fv.WasSelected = true;\n        fv.Hosts = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(ingress.Hosts, host => {\n          const hfv = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_15__.KubernetesResourcePoolIngressClassHostFormValue();\n          hfv.Host = host;\n          hfv.PreviousHost = host;\n          hfv.IsNew = false;\n          return hfv;\n        });\n\n        const annotations = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_3___default()(ingress.Annotations), ([key, value]) => {\n          if (key !== _constants__WEBPACK_IMPORTED_MODULE_19__.PortainerIngressClassTypes) {\n            const annotation = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_15__.KubernetesResourcePoolIngressClassAnnotationFormValue();\n            annotation.Key = key;\n            annotation.Value = value;\n            return annotation;\n          }\n        });\n\n        fv.Annotations = lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(annotations, undefined);\n        fv.AdvancedConfig = fv.Annotations.length > 0;\n        fv.Paths = ingress.Paths;\n      }\n\n      return fv;\n    });\n\n    return res;\n  }\n\n  static createPayload(data) {\n    const res = new _payloads__WEBPACK_IMPORTED_MODULE_18__.KubernetesIngressCreatePayload();\n    res.metadata.name = data.Name;\n    res.metadata.namespace = data.Namespace;\n    res.metadata.annotations = data.Annotations;\n    res.spec.ingressClassName = data.IngressClassName;\n\n    if (data.Paths && data.Paths.length) {\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(data.Paths, p => {\n        if (p.Host === 'undefined' || p.Host === undefined) {\n          p.Host = '';\n        }\n      });\n\n      const hostsWithRules = [];\n\n      const groups = lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_1___default()(data.Paths, 'Host');\n\n      let rules = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(groups, (paths, host) => {\n        const updatedHost = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(data.Hosts, h => {\n          return h === host || h.PreviousHost === host;\n        });\n\n        host = updatedHost.Host || updatedHost;\n\n        if (updatedHost.NeedsDeletion) {\n          return;\n        }\n\n        const rule = new _payloads__WEBPACK_IMPORTED_MODULE_18__.KubernetesIngressRuleCreatePayload();\n        Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_14__[\"default\"].assignOrDeleteIfEmpty(rule, 'host', host);\n        rule.http.paths = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(paths, p => {\n          const path = new _payloads__WEBPACK_IMPORTED_MODULE_18__.KubernetesIngressRulePathCreatePayload();\n          path.path = p.Path;\n          path.backend.service.name = p.ServiceName;\n          path.backend.service.port.number = p.Port;\n          return path;\n        });\n        hostsWithRules.push(host);\n        return rule;\n      });\n\n      rules = lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(rules, undefined);\n\n      const keptHosts = lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(data.Hosts, h => h.NeedsDeletion ? undefined : h.Host || h), undefined);\n\n      const hostsWithoutRules = lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(keptHosts, ...hostsWithRules);\n\n      const emptyRules = lodash_es_map__WEBPACK_IMPORTED_MODULE_11___default()(hostsWithoutRules, host => {\n        return {\n          host: host\n        };\n      });\n\n      rules = lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default()(rules, emptyRules);\n      Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_14__[\"default\"].assignOrDeleteIfEmpty(res, 'spec.rules', rules);\n    } else if (data.Hosts) {\n      res.spec.rules = [];\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(data.Hosts, host => {\n        if (!host.NeedsDeletion) {\n          res.spec.rules.push({\n            host: host.Host || host\n          });\n        }\n      });\n    } else {\n      delete res.spec.rules;\n    }\n\n    return res;\n  }\n\n  static patchPayload(oldData, newData) {\n    const oldPayload = KubernetesIngressConverter.createPayload(oldData);\n    const newPayload = KubernetesIngressConverter.createPayload(newData);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_13__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}//# sourceURL=webpack-internal:///47086\n");

}),

7587:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngressHelper\": function() { return /* binding */ KubernetesIngressHelper; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass KubernetesIngressHelper {\n  static findSBoundServiceIngressesRules(ingresses, serviceName) {\n    const rules = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_1___default()(ingresses, 'Paths');\n\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(rules, {\n      ServiceName: serviceName\n    });\n  }\n\n}//# sourceURL=webpack-internal:///7587\n");

}),

27155:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngress\": function() { return /* binding */ KubernetesIngress; },\n/* harmony export */   \"KubernetesIngressRule\": function() { return /* binding */ KubernetesIngressRule; },\n/* harmony export */   \"KubernetesIngressClass\": function() { return /* binding */ KubernetesIngressClass; }\n/* harmony export */ });\nfunction KubernetesIngress() {\n  return {\n    Name: '',\n    Namespace: '',\n    Annotations: {},\n    // Host: undefined,\n    Hosts: [],\n    // PreviousHost: undefined, // only use for RP ingress host edit\n    Paths: [],\n    IngressClassName: '',\n    TLS: []\n  };\n} // TODO: refactor @LP\n// rename this model to KubernetesIngressPath (and all it's references)\n// as it's conceptually not an ingress rule (element of ingress.spec.rules)\n// but a path (element of ingress.spec.rules[].paths)\n\nfunction KubernetesIngressRule() {\n  return {\n    IngressName: '',\n    ServiceName: '',\n    Host: '',\n    IP: '',\n    Port: '',\n    Path: ''\n  };\n}\nfunction KubernetesIngressClass() {\n  return {\n    Name: '',\n    Type: undefined,\n    NeedsDeletion: false,\n    IsNew: true\n  };\n}//# sourceURL=webpack-internal:///27155\n");

}),

17362:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngressCreatePayload\": function() { return /* binding */ KubernetesIngressCreatePayload; },\n/* harmony export */   \"KubernetesIngressRuleCreatePayload\": function() { return /* binding */ KubernetesIngressRuleCreatePayload; },\n/* harmony export */   \"KubernetesIngressRulePathCreatePayload\": function() { return /* binding */ KubernetesIngressRulePathCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\nfunction KubernetesIngressCreatePayload() {\n  return {\n    metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n    spec: {\n      ingressClassName: '',\n      rules: []\n    }\n  };\n}\nfunction KubernetesIngressRuleCreatePayload() {\n  return {\n    host: '',\n    http: {\n      paths: []\n    }\n  };\n}\nfunction KubernetesIngressRulePathCreatePayload() {\n  return {\n    path: '',\n    pathType: 'ImplementationSpecific',\n    backend: {\n      service: {\n        name: '',\n        port: {\n          number: 0\n        }\n      }\n    }\n  };\n}//# sourceURL=webpack-internal:///17362\n");

}),

45678:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\nfactory.$inject = [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\"];\n\nangular.module('portainer.kubernetes').factory('KubernetesIngresses', factory);\n\nfunction factory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = `${API_ENDPOINT_ENDPOINTS}/:endpointId/kubernetes/apis/networking.k8s.io/v1${namespace ? '/namespaces/:namespace' : ''}/ingresses/:id/:action`;\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      rollback: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}//# sourceURL=webpack-internal:///45678\n");

}),

76706:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesIngressService\": function() { return /* binding */ KubernetesIngressService; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var _converter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./converter */ 47086);\n\n\nKubernetesIngressService.$inject = [\"$async\", \"KubernetesIngresses\"];\n\n\n\n\n/* @ngInject */\n\nfunction KubernetesIngressService($async, KubernetesIngresses) {\n  return {\n    get,\n    create,\n    patch,\n    delete: _delete\n  };\n\n  async function getOne(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([KubernetesIngresses(namespace).get(params).$promise, KubernetesIngresses(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: _converter__WEBPACK_IMPORTED_MODULE_5__.KubernetesIngressConverter.apiToModel(raw),\n        Yaml: yaml.data\n      };\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve Ingress', err);\n    }\n  }\n\n  async function getAll(namespace) {\n    try {\n      const data = await KubernetesIngresses(namespace).get().$promise;\n\n      const res = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_1___default()(data.items, (arr, item) => lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default()(arr, _converter__WEBPACK_IMPORTED_MODULE_5__.KubernetesIngressConverter.apiToModel(item)), []);\n\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve Ingresses', err);\n    }\n  }\n\n  function get(namespace, name) {\n    if (name) {\n      return $async(getOne, namespace, name);\n    }\n\n    return $async(getAll, namespace);\n  }\n\n  function create(ingress) {\n    return $async(async () => {\n      try {\n        const params = {};\n        const payload = _converter__WEBPACK_IMPORTED_MODULE_5__.KubernetesIngressConverter.createPayload(ingress);\n        const namespace = payload.metadata.namespace;\n        const data = await KubernetesIngresses(namespace).create(params, payload).$promise;\n        return data;\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to create ingress', err);\n      }\n    });\n  }\n\n  function patch(oldIngress, newIngress) {\n    return $async(async () => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n        params.id = newIngress.Name;\n        const namespace = newIngress.Namespace;\n        const payload = _converter__WEBPACK_IMPORTED_MODULE_5__.KubernetesIngressConverter.patchPayload(oldIngress, newIngress);\n\n        if (!payload.length) {\n          return;\n        }\n\n        const data = await KubernetesIngresses(namespace).patch(params, payload).$promise;\n        return data;\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to patch ingress', err);\n      }\n    });\n  }\n\n  function _delete(namespace, ingressClassName) {\n    return $async(async () => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n        params.id = ingressClassName;\n        await KubernetesIngresses(namespace).delete(params).$promise;\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to delete ingress', err);\n      }\n    });\n  }\n}\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').service('KubernetesIngressService', KubernetesIngressService);//# sourceURL=webpack-internal:///76706\n");

}),

60299:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n\n\n\n\nclass KubernetesMetricsService {\n  /* @ngInject */\n  constructor($async, KubernetesMetrics) {\n    this.$async = $async;\n    this.KubernetesMetrics = KubernetesMetrics;\n    this.capabilitiesAsync = this.capabilitiesAsync.bind(this);\n    this.getPodAsync = this.getPodAsync.bind(this);\n    this.getNodeAsync = this.getNodeAsync.bind(this);\n    this.getPodsAsync = this.getPodsAsync.bind(this);\n    this.getNodesAsync = this.getNodesAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async capabilitiesAsync(endpointID) {\n    try {\n      await this.KubernetesMetrics().capabilities({\n        endpointId: endpointID\n      }).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve metrics', err);\n    }\n  }\n\n  capabilities(endpointID) {\n    return this.$async(this.capabilitiesAsync, endpointID);\n  }\n  /**\n   * Stats of Node\n   *\n   * @param {string} nodeName\n   */\n\n\n  async getNodeAsync(nodeName) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = nodeName;\n      const data = await this.KubernetesMetrics().getNode(params).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve node stats', err);\n    }\n  }\n\n  getNode(nodeName) {\n    return this.$async(this.getNodeAsync, nodeName);\n  }\n  /**\n   * Stats\n   *\n   * @param {string} namespace\n   * @param {string} podName\n   */\n\n\n  async getPodAsync(namespace, podName) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = podName;\n      const data = await this.KubernetesMetrics(namespace).getPod(params).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve pod stats', err);\n    }\n  }\n\n  getPod(namespace, podName) {\n    return this.$async(this.getPodAsync, namespace, podName);\n  }\n  /**\n   * Stats of Nodes in cluster\n   *\n   * @param {string} endpointID\n   */\n\n\n  async getNodesAsync(endpointID) {\n    try {\n      const data = await this.KubernetesMetrics().getNodes({\n        endpointId: endpointID\n      }).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve nodes stats', err);\n    }\n  }\n\n  getNodes(endpointID) {\n    return this.$async(this.getNodesAsync, endpointID);\n  }\n  /**\n   * Stats of Pods in a namespace\n   *\n   * @param {string} namespace\n   */\n\n\n  async getPodsAsync(namespace) {\n    try {\n      const data = await this.KubernetesMetrics(namespace).getPods().$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve pod stats', err);\n    }\n  }\n\n  getPods(namespace) {\n    return this.$async(this.getPodsAsync, namespace);\n  }\n\n}\n\nKubernetesMetricsService.$inject = [\"$async\", \"KubernetesMetrics\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesMetricsService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesMetricsService', KubernetesMetricsService);//# sourceURL=webpack-internal:///60299\n");

}),

26835:

(function() {

eval("angular.module('portainer.kubernetes').factory('KubernetesMetrics', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesMetrics($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/metrics.k8s.io/v1beta1';\n    const podUrl = `${url}${namespace ? '/namespaces/:namespace' : ''}/pods/:id`;\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      capabilities: {\n        method: 'GET'\n      },\n      getPod: {\n        method: 'GET',\n        url: podUrl\n      },\n      getNode: {\n        method: 'GET',\n        url: `${url}/nodes/:id`\n      },\n      getPods: {\n        method: 'GET',\n        url: `${url}/namespaces/:namespace/pods`\n      },\n      getNodes: {\n        method: 'GET',\n        url: `${url}/nodes`\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///26835\n");

}),

14917:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesApplicationFormValues\": function() { return /* binding */ KubernetesApplicationFormValues; },\n/* harmony export */   \"KubernetesApplicationConfigurationFormValueOverridenKeyTypes\": function() { return /* binding */ KubernetesApplicationConfigurationFormValueOverridenKeyTypes; },\n/* harmony export */   \"KubernetesApplicationConfigurationFormValueOverridenKey\": function() { return /* binding */ KubernetesApplicationConfigurationFormValueOverridenKey; },\n/* harmony export */   \"KubernetesApplicationConfigurationFormValue\": function() { return /* binding */ KubernetesApplicationConfigurationFormValue; },\n/* harmony export */   \"KubernetesApplicationEnvironmentVariableFormValue\": function() { return /* binding */ KubernetesApplicationEnvironmentVariableFormValue; },\n/* harmony export */   \"KubernetesApplicationPersistedFolderFormValue\": function() { return /* binding */ KubernetesApplicationPersistedFolderFormValue; },\n/* harmony export */   \"KubernetesApplicationPublishedPortFormValue\": function() { return /* binding */ KubernetesApplicationPublishedPortFormValue; },\n/* harmony export */   \"KubernetesApplicationPlacementFormValue\": function() { return /* binding */ KubernetesApplicationPlacementFormValue; },\n/* harmony export */   \"KubernetesApplicationAutoScalerFormValue\": function() { return /* binding */ KubernetesApplicationAutoScalerFormValue; },\n/* harmony export */   \"KubernetesFormValidationReferences\": function() { return /* binding */ KubernetesFormValidationReferences; }\n/* harmony export */ });\n/* harmony import */ var _docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/docker/models/porImageRegistry */ 76939);\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./models */ 7172);\n\n\n/**\n * KubernetesApplicationFormValues Model\n */\n\nfunction KubernetesApplicationFormValues() {\n  this.ApplicationType = undefined; // will only exist for formValues generated from Application (app edit situation;\n\n  this.ResourcePool = {};\n  this.Name = '';\n  this.StackName = '';\n  this.ApplicationOwner = '';\n  this.ImageModel = new _docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_0__.PorImageRegistryModel();\n  this.Note = '';\n  this.MemoryLimit = 0;\n  this.CpuLimit = 0;\n  this.DeploymentType = _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationDeploymentTypes.REPLICATED;\n  this.ReplicaCount = 1;\n  this.AutoScaler = {};\n  this.Containers = [];\n  this.Services = [];\n  this.EnvironmentVariables = []; // KubernetesApplicationEnvironmentVariableFormValue lis;\n\n  this.DataAccessPolicy = _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationDataAccessPolicies.ISOLATED;\n  this.PersistedFolders = []; // KubernetesApplicationPersistedFolderFormValue lis;\n\n  this.Configurations = []; // KubernetesApplicationConfigurationFormValue lis;\n\n  this.PublishingType = _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPublishingTypes.CLUSTER_IP;\n  this.PublishedPorts = []; // KubernetesApplicationPublishedPortFormValue lis;\n\n  this.PlacementType = _models__WEBPACK_IMPORTED_MODULE_1__.KubernetesApplicationPlacementTypes.PREFERRED;\n  this.Placements = []; // KubernetesApplicationPlacementFormValue lis;\n\n  this.OriginalIngresses = undefined;\n  this.IsPublishingService = false;\n}\nconst KubernetesApplicationConfigurationFormValueOverridenKeyTypes = Object.freeze({\n  NONE: 0,\n  ENVIRONMENT: 1,\n  FILESYSTEM: 2\n});\n/**\n * KubernetesApplicationConfigurationFormValueOverridenKey Model\n */\n\nconst _KubernetesApplicationConfigurationFormValueOverridenKey = Object.freeze({\n  Key: '',\n  Path: '',\n  Type: KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT\n});\n\nclass KubernetesApplicationConfigurationFormValueOverridenKey {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationFormValueOverridenKey)));\n  }\n\n}\n/**\n * KubernetesApplicationConfigurationFormValue Model\n */\n\nconst _KubernetesApplicationConfigurationFormValue = Object.freeze({\n  SelectedConfiguration: undefined,\n  Overriden: false,\n  OverridenKeys: [] // KubernetesApplicationConfigurationFormValueOverridenKey list\n\n});\n\nclass KubernetesApplicationConfigurationFormValue {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationFormValue)));\n  }\n\n}\n/**\n * KubernetesApplicationEnvironmentVariableFormValue Model\n */\n\nconst _KubernetesApplicationEnvironmentVariableFormValue = Object.freeze({\n  Name: '',\n  Value: '',\n  IsSecret: false,\n  NeedsDeletion: false,\n  IsNew: true,\n  NameIndex: '' // keep the original name for sorting\n\n});\n\nclass KubernetesApplicationEnvironmentVariableFormValue {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvironmentVariableFormValue)));\n  }\n\n}\n/**\n * KubernetesApplicationPersistedFolderFormValue Model\n */\n\nconst _KubernetesApplicationPersistedFolderFormValue = Object.freeze({\n  PersistentVolumeClaimName: '',\n  // will be empty for new volumes (create/edit app) and filled for existing ones (edit)\n  NeedsDeletion: false,\n  ContainerPath: '',\n  Size: '',\n  SizeUnit: 'GB',\n  StorageClass: {},\n  ExistingVolume: null,\n  UseNewVolume: true\n});\n\nclass KubernetesApplicationPersistedFolderFormValue {\n  constructor(storageClass) {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPersistedFolderFormValue)));\n    this.StorageClass = storageClass;\n  }\n\n}\n/**\n * KubernetesApplicationPublishedPortFormValue Model\n */\n\nfunction KubernetesApplicationPublishedPortFormValue() {\n  return {\n    NeedsDeletion: false,\n    IsNew: true,\n    ContainerPort: '',\n    NodePort: '',\n    LoadBalancerPort: '',\n    LoadBalancerNodePort: undefined,\n    // only filled to save existing loadbalancer nodePort and drop it when moving app exposure from LB to Internal/NodePort\n    Protocol: 'TCP',\n    IngressName: undefined,\n    IngressRoute: undefined,\n    IngressHost: undefined,\n    IngressHosts: []\n  };\n}\nfunction KubernetesApplicationPlacementFormValue() {\n  return {\n    Label: {},\n    Value: '',\n    NeedsDeletion: false,\n    IsNew: true\n  };\n}\n/**\n * KubernetesApplicationAutoScalerFormValue Model\n */\n\nconst _KubernetesApplicationAutoScalerFormValue = Object.freeze({\n  MinReplicas: 0,\n  MaxReplicas: 0,\n  TargetCPUUtilization: 50,\n  ApiVersion: '',\n  IsUsed: false\n});\n\nclass KubernetesApplicationAutoScalerFormValue {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationAutoScalerFormValue)));\n  }\n\n}\nfunction KubernetesFormValidationReferences() {\n  return {\n    refs: {},\n    hasRefs: false\n  };\n}//# sourceURL=webpack-internal:///14917\n");

}),

20783:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesApplicationDeploymentTypes\": function() { return /* binding */ KubernetesApplicationDeploymentTypes; },\n/* harmony export */   \"KubernetesApplicationDataAccessPolicies\": function() { return /* binding */ KubernetesApplicationDataAccessPolicies; },\n/* harmony export */   \"KubernetesApplicationTypes\": function() { return /* binding */ KubernetesApplicationTypes; },\n/* harmony export */   \"KubernetesApplicationTypeStrings\": function() { return /* binding */ KubernetesApplicationTypeStrings; },\n/* harmony export */   \"KubernetesApplicationPublishingTypes\": function() { return /* binding */ KubernetesApplicationPublishingTypes; },\n/* harmony export */   \"KubernetesApplicationPlacementTypes\": function() { return /* binding */ KubernetesApplicationPlacementTypes; },\n/* harmony export */   \"KubernetesApplicationQuotaDefaults\": function() { return /* binding */ KubernetesApplicationQuotaDefaults; },\n/* harmony export */   \"KubernetesPortainerApplicationStackNameLabel\": function() { return /* binding */ KubernetesPortainerApplicationStackNameLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationStackIdLabel\": function() { return /* binding */ KubernetesPortainerApplicationStackIdLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationKindLabel\": function() { return /* binding */ KubernetesPortainerApplicationKindLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationNameLabel\": function() { return /* binding */ KubernetesPortainerApplicationNameLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationOwnerLabel\": function() { return /* binding */ KubernetesPortainerApplicationOwnerLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationNote\": function() { return /* binding */ KubernetesPortainerApplicationNote; }\n/* harmony export */ });\nconst KubernetesApplicationDeploymentTypes = Object.freeze({\n  REPLICATED: 1,\n  GLOBAL: 2\n});\nconst KubernetesApplicationDataAccessPolicies = Object.freeze({\n  SHARED: 1,\n  ISOLATED: 2\n});\nconst KubernetesApplicationTypes = Object.freeze({\n  DEPLOYMENT: 1,\n  DAEMONSET: 2,\n  STATEFULSET: 3,\n  POD: 4,\n  HELM: 5\n});\nconst KubernetesApplicationTypeStrings = Object.freeze({\n  HELM: 'Helm',\n  DEPLOYMENT: 'Deployment',\n  DAEMONSET: 'DaemonSet',\n  STATEFULSET: 'StatefulSet',\n  POD: 'Pod'\n});\nconst KubernetesApplicationPublishingTypes = Object.freeze({\n  CLUSTER_IP: 1,\n  NODE_PORT: 2,\n  LOAD_BALANCER: 3,\n  INGRESS: 4\n});\nconst KubernetesApplicationPlacementTypes = Object.freeze({\n  PREFERRED: 1,\n  MANDATORY: 2\n});\nconst KubernetesApplicationQuotaDefaults = {\n  CpuLimit: 0.1,\n  MemoryLimit: 64 // MB\n\n};\nconst KubernetesPortainerApplicationStackNameLabel = 'io.portainer.kubernetes.application.stack';\nconst KubernetesPortainerApplicationStackIdLabel = 'io.portainer.kubernetes.application.stackid';\nconst KubernetesPortainerApplicationKindLabel = 'io.portainer.kubernetes.application.kind';\nconst KubernetesPortainerApplicationNameLabel = 'io.portainer.kubernetes.application.name';\nconst KubernetesPortainerApplicationOwnerLabel = 'io.portainer.kubernetes.application.owner';\nconst KubernetesPortainerApplicationNote = 'io.portainer.kubernetes.application.note';//# sourceURL=webpack-internal:///20783\n");

}),

7172:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesApplicationDataAccessPolicies\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationDataAccessPolicies; },\n/* harmony export */   \"KubernetesApplicationDeploymentTypes\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationDeploymentTypes; },\n/* harmony export */   \"KubernetesApplicationPlacementTypes\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationPlacementTypes; },\n/* harmony export */   \"KubernetesApplicationPublishingTypes\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationPublishingTypes; },\n/* harmony export */   \"KubernetesApplicationQuotaDefaults\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationQuotaDefaults; },\n/* harmony export */   \"KubernetesApplicationTypeStrings\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationTypeStrings; },\n/* harmony export */   \"KubernetesApplicationTypes\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesApplicationTypes; },\n/* harmony export */   \"KubernetesPortainerApplicationKindLabel\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationKindLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationNameLabel\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationNameLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationNote\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationNote; },\n/* harmony export */   \"KubernetesPortainerApplicationOwnerLabel\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationOwnerLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationStackIdLabel\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationStackIdLabel; },\n/* harmony export */   \"KubernetesPortainerApplicationStackNameLabel\": function() { return /* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesPortainerApplicationStackNameLabel; },\n/* harmony export */   \"KubernetesApplication\": function() { return /* binding */ KubernetesApplication; },\n/* harmony export */   \"HelmApplication\": function() { return /* binding */ HelmApplication; },\n/* harmony export */   \"KubernetesApplicationPersistedFolder\": function() { return /* binding */ KubernetesApplicationPersistedFolder; },\n/* harmony export */   \"KubernetesApplicationConfigurationVolume\": function() { return /* binding */ KubernetesApplicationConfigurationVolume; },\n/* harmony export */   \"KubernetesApplicationPort\": function() { return /* binding */ KubernetesApplicationPort; },\n/* harmony export */   \"KubernetesDeploymentTypes\": function() { return /* binding */ KubernetesDeploymentTypes; }\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ 20783);\n\n/**\n * KubernetesApplication Model (Composite)\n */\n\nconst _KubernetesApplication = Object.freeze({\n  Id: '',\n  Name: '',\n  StackName: '',\n  StackId: '',\n  ApplicationKind: '',\n  ApplicationOwner: '',\n  ApplicationName: '',\n  ResourcePool: '',\n  Image: '',\n  CreationDate: 0,\n  Pods: [],\n  Containers: [],\n  Metadata: {},\n  Limits: {},\n  ServiceType: '',\n  ServiceId: '',\n  ServiceName: '',\n  HeadlessServiceName: undefined,\n  // only used for StatefulSet\n  LoadBalancerIPAddress: undefined,\n  // only filled when bound service is LoadBalancer and state is available\n  PublishedPorts: [],\n  Volumes: [],\n  Env: [],\n  PersistedFolders: [],\n  // KubernetesApplicationPersistedFolder list\n  ConfigurationVolumes: [],\n  // KubernetesApplicationConfigurationVolume list\n  DeploymentType: 'Unknown',\n  DataAccessPolicy: 'Unknown',\n  ApplicationType: 'Unknown',\n  RunningPodsCount: 0,\n  TotalPodsCount: 0,\n  Yaml: '',\n  Note: '',\n  Revisions: undefined,\n  CurrentRevision: undefined,\n  Raw: undefined,\n  // only filled when inspecting app details / create / edit view (never filled in multiple-apps views)\n  AutoScaler: undefined // only filled if the application has an HorizontalPodAutoScaler bound to it\n\n});\n\nclass KubernetesApplication {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplication)));\n  }\n\n}\n/**\n * HelmApplication Model (Composite)\n */\n\nclass HelmApplication {\n  constructor() {\n    this.Id = '';\n    this.Name = '';\n    this.KubernetesApplications = [];\n    this.ApplicationOwner = '';\n    this.CreationDate = 0;\n    this.ApplicationType = 'Unknown';\n    this.Status = '';\n    this.StackName = '-';\n    this.ResourcePool = '-';\n    this.Image = '-';\n    this.PublishedPorts = [];\n  }\n\n}\n/**\n * KubernetesApplicationPersistedFolder Model\n */\n\nconst _KubernetesApplicationPersistedFolder = Object.freeze({\n  MountPath: '',\n  PersistentVolumeClaimName: '',\n  HostPath: ''\n});\n\nclass KubernetesApplicationPersistedFolder {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPersistedFolder)));\n  }\n\n}\n/**\n * KubernetesApplicationConfigurationVolume Model\n */\n\nconst _KubernetesApplicationConfigurationVolume = Object.freeze({\n  fileMountPath: '',\n  rootMountPath: '',\n  configurationKey: '',\n  configurationName: ''\n});\n\nclass KubernetesApplicationConfigurationVolume {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationVolume)));\n  }\n\n}\n/**\n * KubernetesApplicationPort Model\n */\n\nconst _KubernetesApplicationPort = Object.freeze({\n  IngressRules: [],\n  // KubernetesIngressRule[]\n  NodePort: 0,\n  TargetPort: 0,\n  Port: 0,\n  Protocol: ''\n});\n\nclass KubernetesApplicationPort {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPort)));\n  }\n\n}\nconst KubernetesDeploymentTypes = Object.freeze({\n  GIT: 'git',\n  CONTENT: 'content',\n  APPLICATION_FORM: 'application form',\n  URL: 'url'\n});//# sourceURL=webpack-internal:///7172\n");

}),

11505:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesApplicationVolumeMountPayload\": function() { return /* binding */ KubernetesApplicationVolumeMountPayload; },\n/* harmony export */   \"KubernetesApplicationVolumePersistentPayload\": function() { return /* binding */ KubernetesApplicationVolumePersistentPayload; },\n/* harmony export */   \"KubernetesApplicationVolumeConfigMapPayload\": function() { return /* binding */ KubernetesApplicationVolumeConfigMapPayload; },\n/* harmony export */   \"KubernetesApplicationVolumeSecretPayload\": function() { return /* binding */ KubernetesApplicationVolumeSecretPayload; },\n/* harmony export */   \"KubernetesApplicationVolumeEntryPayload\": function() { return /* binding */ KubernetesApplicationVolumeEntryPayload; },\n/* harmony export */   \"KubernetesApplicationEnvPayload\": function() { return /* binding */ KubernetesApplicationEnvPayload; },\n/* harmony export */   \"KubernetesApplicationEnvConfigMapPayload\": function() { return /* binding */ KubernetesApplicationEnvConfigMapPayload; },\n/* harmony export */   \"KubernetesApplicationEnvSecretPayload\": function() { return /* binding */ KubernetesApplicationEnvSecretPayload; }\n/* harmony export */ });\n/////////////////////////// VOLUME MOUNT ///////////////////////////////\n\n/**\n * KubernetesApplicationVolumeMount Model\n */\nconst _KubernetesApplicationVolumeMount = Object.freeze({\n  name: '',\n  mountPath: '',\n  readOnly: false\n});\n\nclass KubernetesApplicationVolumeMountPayload {\n  constructor(readOnly) {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeMount)));\n\n    if (readOnly) {\n      this.readOnly = true;\n    } else {\n      delete this.readOnly;\n    }\n  }\n\n} ///////////////////////////////// PVC /////////////////////////////////\n\n/**\n * KubernetesApplicationVolumePersistentPayload Model\n */\n\nconst _KubernetesApplicationVolumePersistentPayload = Object.freeze({\n  name: '',\n  persistentVolumeClaim: {\n    claimName: ''\n  }\n});\n\nclass KubernetesApplicationVolumePersistentPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumePersistentPayload)));\n  }\n\n} /////////////////////////////// CONFIG AS VOLUME ////////////////////////\n\n/**\n * KubernetesApplicationVolumeConfigMapPayload Model\n */\n\nconst _KubernetesApplicationVolumeConfigMapPayload = Object.freeze({\n  name: '',\n  configMap: {\n    name: '',\n    items: [] // KubernetesApplicationVolumeEntryPayload\n\n  }\n});\n\nclass KubernetesApplicationVolumeConfigMapPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeConfigMapPayload)));\n  }\n\n} //////////////////// SECRET AS VOLUME /////////////////////////////////////\n\n/**\n * KubernetesApplicationVolumeSecretPayload Model\n */\n\nconst _KubernetesApplicationVolumeSecretPayload = Object.freeze({\n  name: '',\n  secret: {\n    secretName: '',\n    items: [] // KubernetesApplicationVolumeEntryPayload\n\n  }\n});\n\nclass KubernetesApplicationVolumeSecretPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeSecretPayload)));\n  }\n\n}\n/**\n * KubernetesApplicationVolumeEntryPayload Model\n */\n\nconst _KubernetesApplicationVolumeEntryPayload = Object.freeze({\n  key: '',\n  path: ''\n});\n\nclass KubernetesApplicationVolumeEntryPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeEntryPayload)));\n  }\n\n} //////////////////////////// ENV ENTRY //////////////////////////////\n\n/**\n * KubernetesApplicationEnvPayload Model\n */\n\nconst _KubernetesApplicationEnvPayload = Object.freeze({\n  name: '',\n  value: ''\n});\n\nclass KubernetesApplicationEnvPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvPayload)));\n  }\n\n} ///////////////////////// CONFIG AS ENV ////////////////////////////////\n\n/**\n * KubernetesApplicationEnvConfigMapPayload Model\n */\n\nconst _KubernetesApplicationEnvConfigMapPayload = Object.freeze({\n  name: '',\n  valueFrom: {\n    configMapKeyRef: {\n      name: '',\n      key: ''\n    }\n  }\n});\n\nclass KubernetesApplicationEnvConfigMapPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvConfigMapPayload)));\n  }\n\n} //////////////////////// SECRET AS ENV //////////////////////////////////\n\n/**\n * KubernetesApplicationEnvSecretPayload Model\n */\n\nconst _KubernetesApplicationEnvSecretPayload = Object.freeze({\n  name: '',\n  valueFrom: {\n    secretKeyRef: {\n      name: '',\n      key: ''\n    }\n  }\n});\n\nclass KubernetesApplicationEnvSecretPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvSecretPayload)));\n  }\n\n}//# sourceURL=webpack-internal:///11505\n");

}),

82469:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesCommonParams\": function() { return /* binding */ KubernetesCommonParams; }\n/* harmony export */ });\n/**\n * Generic params\n */\nfunction KubernetesCommonParams() {\n  return {\n    id: ''\n  };\n}//# sourceURL=webpack-internal:///82469\n");

}),

27367:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesCommonMetadataPayload\": function() { return /* binding */ KubernetesCommonMetadataPayload; }\n/* harmony export */ });\n/**\n * Generic metadata payload\n */\nconst _KubernetesCommonMetadataPayload = Object.freeze({\n  uid: '',\n  name: '',\n  namespace: '',\n  labels: {},\n  annotations: {}\n});\n\nclass KubernetesCommonMetadataPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesCommonMetadataPayload)));\n  }\n\n}//# sourceURL=webpack-internal:///27367\n");

}),

13978:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortainerConfigMapNamespace\": function() { return /* binding */ KubernetesPortainerConfigMapNamespace; },\n/* harmony export */   \"KubernetesPortainerConfigMapConfigName\": function() { return /* binding */ KubernetesPortainerConfigMapConfigName; },\n/* harmony export */   \"KubernetesPortainerConfigMapAccessKey\": function() { return /* binding */ KubernetesPortainerConfigMapAccessKey; },\n/* harmony export */   \"KubernetesPortainerAccessConfigMap\": function() { return /* binding */ KubernetesPortainerAccessConfigMap; },\n/* harmony export */   \"KubernetesConfigMap\": function() { return /* binding */ KubernetesConfigMap; }\n/* harmony export */ });\nconst KubernetesPortainerConfigMapNamespace = 'portainer';\nconst KubernetesPortainerConfigMapConfigName = 'portainer-config';\nconst KubernetesPortainerConfigMapAccessKey = 'NamespaceAccessPolicies';\nfunction KubernetesPortainerAccessConfigMap() {\n  return {\n    Id: 0,\n    Name: KubernetesPortainerConfigMapConfigName,\n    Namespace: KubernetesPortainerConfigMapNamespace,\n    Data: {}\n  };\n}\n/**\n * ConfigMap Model\n */\n\nconst _KubernetesConfigMap = Object.freeze({\n  Id: 0,\n  Name: '',\n  Namespace: '',\n  Yaml: '',\n  ConfigurationOwner: '',\n  Data: []\n});\n\nclass KubernetesConfigMap {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMap)));\n  }\n\n}//# sourceURL=webpack-internal:///13978\n");

}),

40879:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesConfigMapCreatePayload\": function() { return /* binding */ KubernetesConfigMapCreatePayload; },\n/* harmony export */   \"KubernetesConfigMapUpdatePayload\": function() { return /* binding */ KubernetesConfigMapUpdatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * Payload for CREATE\n */\n\nconst _KubernetesConfigMapCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  data: {},\n  binaryData: {}\n});\n\nclass KubernetesConfigMapCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMapCreatePayload)));\n  }\n\n}\n/**\n * Payload for UPDATE\n */\n\nconst _KubernetesConfigMapUpdatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  data: {},\n  binaryData: {}\n});\n\nclass KubernetesConfigMapUpdatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMapUpdatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///40879\n");

}),

30578:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesConfigurationFormValues\": function() { return /* binding */ KubernetesConfigurationFormValues; },\n/* harmony export */   \"KubernetesConfigurationFormValuesEntry\": function() { return /* binding */ KubernetesConfigurationFormValuesEntry; }\n/* harmony export */ });\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./models */ 73582);\n\n/**\n * KubernetesConfigurationFormValues Model\n */\n\nconst _KubernetesConfigurationFormValues = Object.freeze({\n  Id: '',\n  ResourcePool: '',\n  Name: '',\n  ConfigurationOwner: '',\n  Kind: _models__WEBPACK_IMPORTED_MODULE_0__.KubernetesConfigurationKinds.CONFIGMAP,\n  Data: [],\n  DataYaml: '',\n  IsSimple: true,\n  ServiceAccountName: '',\n  Type: _models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.OPAQUE.value\n});\n\nclass KubernetesConfigurationFormValues {\n  constructor() {\n    Object.assign(this, _KubernetesConfigurationFormValues);\n  }\n\n}\n\nconst _KubernetesConfigurationFormValuesEntry = Object.freeze({\n  Key: '',\n  Value: '',\n  IsBinary: false\n});\n\nclass KubernetesConfigurationFormValuesEntry {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigurationFormValuesEntry)));\n  }\n\n}//# sourceURL=webpack-internal:///30578\n");

}),

73582:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortainerConfigurationOwnerLabel\": function() { return /* binding */ KubernetesPortainerConfigurationOwnerLabel; },\n/* harmony export */   \"KubernetesPortainerConfigurationDataAnnotation\": function() { return /* binding */ KubernetesPortainerConfigurationDataAnnotation; },\n/* harmony export */   \"KubernetesConfiguration\": function() { return /* binding */ KubernetesConfiguration; },\n/* harmony export */   \"KubernetesConfigurationKinds\": function() { return /* binding */ KubernetesConfigurationKinds; },\n/* harmony export */   \"KubernetesSecretTypeOptions\": function() { return /* binding */ KubernetesSecretTypeOptions; }\n/* harmony export */ });\nconst KubernetesPortainerConfigurationOwnerLabel = 'io.portainer.kubernetes.configuration.owner';\nconst KubernetesPortainerConfigurationDataAnnotation = 'io.portainer.kubernetes.configuration.data';\n/**\n * Configuration Model (Composite)\n */\n\nconst _KubernetesConfiguration = Object.freeze({\n  Id: 0,\n  Name: '',\n  Kind: '',\n  Namespace: '',\n  CreationDate: '',\n  ConfigurationOwner: '',\n  Used: false,\n  Applications: [],\n  Data: {},\n  SecretType: ''\n});\n\nclass KubernetesConfiguration {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfiguration)));\n  }\n\n}\nconst KubernetesConfigurationKinds = Object.freeze({\n  CONFIGMAP: 1,\n  SECRET: 2\n});\nconst KubernetesSecretTypeOptions = Object.freeze({\n  OPAQUE: {\n    name: 'Opaque',\n    value: 'Opaque'\n  },\n  SERVICEACCOUNTTOKEN: {\n    name: 'Service account token',\n    value: 'kubernetes.io/service-account-token'\n  },\n  DOCKERCFG: {\n    name: 'Dockercfg',\n    value: 'kubernetes.io/dockercfg'\n  },\n  DOCKERCONFIGJSON: {\n    name: 'Dockerconfigjson',\n    value: 'kubernetes.io/dockerconfigjson'\n  },\n  BASICAUTH: {\n    name: 'Basic auth',\n    value: 'kubernetes.io/basic-auth'\n  },\n  SSHAUTH: {\n    name: 'SSH auth',\n    value: 'kubernetes.io/ssh-auth'\n  },\n  TLS: {\n    name: 'TLS',\n    value: 'kubernetes.io/tls'\n  },\n  BOOTSTRAPTOKEN: {\n    name: 'Bootstrap token',\n    value: 'bootstrap.kubernetes.io/token'\n  },\n  CUSTOM: {\n    name: 'Custom',\n    value: 'Custom'\n  }\n});//# sourceURL=webpack-internal:///73582\n");

}),

12745:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesDaemonSet\": function() { return /* binding */ KubernetesDaemonSet; }\n/* harmony export */ });\n/**\n * KubernetesDaemonSet Model\n */\nconst _KubernetesDaemonSet = Object.freeze({\n  Namespace: '',\n  Name: '',\n  StackName: '',\n  ImageModel: null,\n  Env: [],\n  CpuLimit: 0,\n  MemoryLimit: 0,\n  VoluemMounts: [],\n  Volumes: [],\n  Secret: undefined,\n  ApplicationName: '',\n  ApplicationOwner: '',\n  Note: '',\n  Affinity: undefined // KubernetesPodAffinity\n\n});\n\nclass KubernetesDaemonSet {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDaemonSet)));\n  }\n\n}//# sourceURL=webpack-internal:///12745\n");

}),

82935:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesDaemonSetCreatePayload\": function() { return /* binding */ KubernetesDaemonSetCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesDaemonSetCreatePayload Model\n */\n\nconst _KubernetesDaemonSetCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  spec: {\n    replicas: 0,\n    selector: {\n      matchLabels: {\n        app: ''\n      }\n    },\n    updateStrategy: {\n      type: 'RollingUpdate',\n      rollingUpdate: {\n        maxUnavailable: 1\n      }\n    },\n    template: {\n      metadata: {\n        labels: {\n          app: ''\n        }\n      },\n      spec: {\n        containers: [{\n          name: '',\n          image: '',\n          env: [],\n          resources: {\n            limits: {},\n            requests: {}\n          },\n          volumeMounts: []\n        }],\n        volumes: []\n      }\n    }\n  }\n});\n\nclass KubernetesDaemonSetCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDaemonSetCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///82935\n");

}),

6253:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesDeployManifestTypes\": function() { return /* binding */ KubernetesDeployManifestTypes; },\n/* harmony export */   \"KubernetesDeployBuildMethods\": function() { return /* binding */ KubernetesDeployBuildMethods; },\n/* harmony export */   \"KubernetesDeployRequestMethods\": function() { return /* binding */ KubernetesDeployRequestMethods; },\n/* harmony export */   \"RepositoryMechanismTypes\": function() { return /* binding */ RepositoryMechanismTypes; }\n/* harmony export */ });\nconst KubernetesDeployManifestTypes = Object.freeze({\n  KUBERNETES: 1,\n  COMPOSE: 2\n});\nconst KubernetesDeployBuildMethods = Object.freeze({\n  GIT: 1,\n  WEB_EDITOR: 2,\n  CUSTOM_TEMPLATE: 3,\n  URL: 4\n});\nconst KubernetesDeployRequestMethods = Object.freeze({\n  REPOSITORY: 'repository',\n  STRING: 'string',\n  URL: 'url'\n});\nconst RepositoryMechanismTypes = Object.freeze({\n  WEBHOOK: 'Webhook',\n  INTERVAL: 'Interval'\n});//# sourceURL=webpack-internal:///6253\n");

}),

59238:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesDeployment\": function() { return /* binding */ KubernetesDeployment; }\n/* harmony export */ });\n/**\n * KubernetesDeployment Model\n */\nconst _KubernetesDeployment = Object.freeze({\n  Namespace: '',\n  Name: '',\n  StackName: '',\n  ReplicaCount: 0,\n  ImageModel: null,\n  Env: [],\n  CpuLimit: 0,\n  MemoryLimit: 0,\n  VolumeMounts: [],\n  Volumes: [],\n  Secret: undefined,\n  ApplicationName: '',\n  ApplicationOwner: '',\n  Note: '',\n  Affinity: undefined // KubernetesPodAffinity\n\n});\n\nclass KubernetesDeployment {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDeployment)));\n  }\n\n}//# sourceURL=webpack-internal:///59238\n");

}),

95008:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesDeploymentCreatePayload\": function() { return /* binding */ KubernetesDeploymentCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesDeploymentCreatePayload Model\n */\n\nconst _KubernetesDeploymentCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  spec: {\n    replicas: 0,\n    selector: {\n      matchLabels: {\n        app: ''\n      }\n    },\n    strategy: {\n      type: 'RollingUpdate',\n      rollingUpdate: {\n        maxSurge: 0,\n        maxUnavailable: '100%'\n      }\n    },\n    template: {\n      metadata: {\n        labels: {\n          app: ''\n        }\n      },\n      spec: {\n        affinity: {},\n        containers: [{\n          name: '',\n          image: '',\n          env: [],\n          resources: {\n            limits: {},\n            requests: {}\n          },\n          volumeMounts: []\n        }],\n        volumes: []\n      }\n    }\n  }\n});\n\nclass KubernetesDeploymentCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDeploymentCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///95008\n");

}),

82239:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesEvent\": function() { return /* binding */ KubernetesEvent; }\n/* harmony export */ });\n/**\n * KubernetesEvent Model\n */\nconst _KubernetesEvent = Object.freeze({\n  Id: '',\n  Date: 0,\n  Type: '',\n  Message: '',\n  Involved: {}\n});\n\nclass KubernetesEvent {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEvent)));\n  }\n\n}//# sourceURL=webpack-internal:///82239\n");

}),

24601:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesSystem_DefaultDeploymentUniqueLabelKey\": function() { return /* binding */ KubernetesSystem_DefaultDeploymentUniqueLabelKey; },\n/* harmony export */   \"KubernetesSystem_RevisionAnnotation\": function() { return /* binding */ KubernetesSystem_RevisionAnnotation; },\n/* harmony export */   \"KubernetesSystem_RevisionHistoryAnnotation\": function() { return /* binding */ KubernetesSystem_RevisionHistoryAnnotation; },\n/* harmony export */   \"KubernetesSystem_ChangeCauseAnnotation\": function() { return /* binding */ KubernetesSystem_ChangeCauseAnnotation; },\n/* harmony export */   \"KubernetesSystem_DesiredReplicasAnnotation\": function() { return /* binding */ KubernetesSystem_DesiredReplicasAnnotation; },\n/* harmony export */   \"KubernetesSystem_MaxReplicasAnnotation\": function() { return /* binding */ KubernetesSystem_MaxReplicasAnnotation; },\n/* harmony export */   \"KubernetesSystem_AnnotationsToSkip\": function() { return /* binding */ KubernetesSystem_AnnotationsToSkip; }\n/* harmony export */ });\nconst KubernetesSystem_DefaultDeploymentUniqueLabelKey = 'pod-template-hash';\nconst KubernetesSystem_RevisionAnnotation = 'deployment.kubernetes.io/revision';\nconst KubernetesSystem_RevisionHistoryAnnotation = 'deployment.kubernetes.io/revision-history';\nconst KubernetesSystem_ChangeCauseAnnotation = 'kubernetes.io/change-cause';\nconst KubernetesSystem_DesiredReplicasAnnotation = 'deployment.kubernetes.io/desired-replicas';\nconst KubernetesSystem_MaxReplicasAnnotation = 'deployment.kubernetes.io/max-replicas'; // annotationsToSkip lists the annotations that should be preserved from the deployment and not\n// copied from the replicaset when rolling a deployment back\n// var annotationsToSkip = map[string]bool{\n//   corev1.LastAppliedConfigAnnotation:       true,\n//   deploymentutil.RevisionAnnotation:        true,\n//   deploymentutil.RevisionHistoryAnnotation: true,\n//   deploymentutil.DesiredReplicasAnnotation: true,\n//   deploymentutil.MaxReplicasAnnotation:     true,\n//   appsv1.DeprecatedRollbackTo:              true,\n// }\n// LastAppliedConfigAnnotation is the annotation used to store the previous\n// configuration of a resource for use in a three way diff by UpdateApplyAnnotation.\n\nconst LastAppliedConfigAnnotation = 'kubectl.kubernetes.io/last-applied-configuration';\nconst DeprecatedRollbackTo = 'deprecated.deployment.rollback.to';\nconst KubernetesSystem_AnnotationsToSkip = {\n  [LastAppliedConfigAnnotation]: true,\n  [KubernetesSystem_RevisionAnnotation]: true,\n  [KubernetesSystem_RevisionHistoryAnnotation]: true,\n  [KubernetesSystem_DesiredReplicasAnnotation]: true,\n  [KubernetesSystem_MaxReplicasAnnotation]: true,\n  [DeprecatedRollbackTo]: true\n};//# sourceURL=webpack-internal:///24601\n");

}),

35076:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNamespace\": function() { return /* binding */ KubernetesNamespace; },\n/* harmony export */   \"KUBERNETES_DEFAULT_SYSTEM_NAMESPACES\": function() { return /* binding */ KUBERNETES_DEFAULT_SYSTEM_NAMESPACES; },\n/* harmony export */   \"KUBERNETES_DEFAULT_NAMESPACE\": function() { return /* binding */ KUBERNETES_DEFAULT_NAMESPACE; }\n/* harmony export */ });\nclass KubernetesNamespace {\n  constructor() {\n    this.Id = '';\n    this.Name = '';\n    this.CreationDate = '';\n    this.Status = '';\n    this.Yaml = '';\n    this.ResourcePoolName = '';\n    this.ResourcePoolOwner = '';\n    this.IsSystem = false;\n  }\n\n}\nconst KUBERNETES_DEFAULT_SYSTEM_NAMESPACES = ['kube-system', 'kube-public', 'kube-node-lease', 'portainer'];\nconst KUBERNETES_DEFAULT_NAMESPACE = 'default';//# sourceURL=webpack-internal:///35076\n");

}),

63829:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNamespaceCreatePayload\": function() { return /* binding */ KubernetesNamespaceCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var _common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/payloads */ 27367);\n\n/**\n * KubernetesNamespaceCreatePayload Model\n */\n\nconst _KubernetesNamespaceCreatePayload = Object.freeze({\n  metadata: new _common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload()\n});\n\nclass KubernetesNamespaceCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNamespaceCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///63829\n");

}),

74335:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNodesLimits\": function() { return /* binding */ KubernetesNodesLimits; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_maxBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/maxBy */ 30385);\n/* harmony import */ var lodash_es_maxBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_maxBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * NodesLimits Model\n */\nclass KubernetesNodesLimits {\n  constructor(nodesLimits) {\n    this.MaxCPU = 0;\n    this.MaxMemory = 0;\n    this.nodesLimits = this.convertCPU(nodesLimits);\n    this.calculateMaxCPUMemory();\n  }\n\n  convertCPU(nodesLimits) {\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(nodesLimits, value => {\n      if (value.CPU) {\n        value.CPU /= 1000.0;\n      }\n    });\n\n    return nodesLimits;\n  }\n\n  calculateMaxCPUMemory() {\n    const nodesLimitsArray = Object.values(this.nodesLimits);\n    this.MaxCPU = lodash_es_maxBy__WEBPACK_IMPORTED_MODULE_0___default()(nodesLimitsArray, 'CPU').CPU;\n    this.MaxMemory = lodash_es_maxBy__WEBPACK_IMPORTED_MODULE_0___default()(nodesLimitsArray, 'Memory').Memory;\n  } // check if there is enough cpu and memory to allocate containers in replica mode\n\n\n  overflowForReplica(cpu, memory, instances) {\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.nodesLimits, value => {\n      instances -= Math.min(Math.floor(value.CPU / cpu), Math.floor(value.Memory / memory));\n    });\n\n    return instances > 0;\n  } // check if there is enough cpu and memory to allocate containers in global mode\n\n\n  overflowForGlobal(cpu, memory) {\n    let overflow = false;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.nodesLimits, value => {\n      if (cpu > value.CPU || memory > value.Memory) {\n        overflow = true;\n      }\n    });\n\n    return overflow;\n  }\n\n  excludesPods(pods, cpuLimit, memoryLimit) {\n    const nodesLimits = this.nodesLimits;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(pods, value => {\n      const node = value.Node;\n\n      if (node && nodesLimits[node]) {\n        nodesLimits[node].CPU += cpuLimit;\n        nodesLimits[node].Memory += memoryLimit;\n      }\n    });\n\n    this.calculateMaxCPUMemory();\n  }\n\n}//# sourceURL=webpack-internal:///74335\n");

}),

83270:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortMappingPort\": function() { return /* binding */ KubernetesPortMappingPort; },\n/* harmony export */   \"KubernetesPortMapping\": function() { return /* binding */ KubernetesPortMapping; }\n/* harmony export */ });\n/**\n * PortMappingPort Model\n */\nconst _KubernetesPortMappingPort = Object.freeze({\n  Port: 0,\n  TargetPort: 0,\n  Protocol: '',\n  IngressRules: [] // KubernetesIngressRule[]\n\n});\n\nclass KubernetesPortMappingPort {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPortMappingPort)));\n  }\n\n}\n/**\n * PortMapping Model\n */\n\nconst _KubernetesPortMapping = Object.freeze({\n  Expanded: false,\n  Highlighted: false,\n  ResourcePool: '',\n  ServiceType: '',\n  ApplicationOwner: '',\n  LoadBalancerIPAddress: '',\n  Ports: []\n});\n\nclass KubernetesPortMapping {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPortMapping)));\n  }\n\n}//# sourceURL=webpack-internal:///83270\n");

}),

16496:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourcePoolFormValues\": function() { return /* binding */ KubernetesResourcePoolFormValues; },\n/* harmony export */   \"KubernetesResourcePoolIngressClassFormValue\": function() { return /* binding */ KubernetesResourcePoolIngressClassFormValue; },\n/* harmony export */   \"KubernetesResourcePoolIngressClassAnnotationFormValue\": function() { return /* binding */ KubernetesResourcePoolIngressClassAnnotationFormValue; },\n/* harmony export */   \"KubernetesResourcePoolIngressClassHostFormValue\": function() { return /* binding */ KubernetesResourcePoolIngressClassHostFormValue; },\n/* harmony export */   \"KubernetesResourcePoolNginxRewriteAnnotationFormValue\": function() { return /* binding */ KubernetesResourcePoolNginxRewriteAnnotationFormValue; },\n/* harmony export */   \"KubernetesResourcePoolNginxUseregexAnnotationFormValue\": function() { return /* binding */ KubernetesResourcePoolNginxUseregexAnnotationFormValue; },\n/* harmony export */   \"KubernetesResourcePoolTraefikRewriteAnnotationFormValue\": function() { return /* binding */ KubernetesResourcePoolTraefikRewriteAnnotationFormValue; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/ingress/constants */ 62072);\n\nfunction KubernetesResourcePoolFormValues(defaults) {\n  this.Name = '';\n  this.MemoryLimit = defaults.MemoryLimit;\n  this.CpuLimit = defaults.CpuLimit;\n  this.HasQuota = false;\n  this.IngressClasses = []; // KubernetesResourcePoolIngressClassFormValue\n\n  this.Registries = []; // RegistryViewModel\n\n  this.EndpointId = 0;\n  this.IsSystem = false;\n}\n/**\n * @param {KubernetesIngressClass} ingressClass\n */\n\nfunction KubernetesResourcePoolIngressClassFormValue(ingressClass) {\n  return {\n    Namespace: undefined,\n    // will be filled inside ResourcePoolService.create\n    IngressClass: ingressClass,\n    RewriteTarget: false,\n    Annotations: [],\n    // KubernetesResourcePoolIngressClassAnnotationFormValue\n    Hosts: [],\n    Selected: false,\n    WasSelected: false,\n    AdvancedConfig: false,\n    Paths: [] // will be filled to save IngressClass.Paths inside ingressClassesToFormValues() on RP EDIT\n\n  };\n}\nfunction KubernetesResourcePoolIngressClassAnnotationFormValue() {\n  return {\n    Key: '',\n    Value: ''\n  };\n}\nfunction KubernetesResourcePoolIngressClassHostFormValue() {\n  return {\n    Host: '',\n    PreviousHost: '',\n    NeedsDeletion: false,\n    IsNew: true\n  };\n}\nfunction KubernetesResourcePoolNginxRewriteAnnotationFormValue() {\n  return Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesNginxRewriteTargetAnnotations;\n}\nfunction KubernetesResourcePoolNginxUseregexAnnotationFormValue() {\n  return Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesNginxUseregexAnnotations;\n}\nfunction KubernetesResourcePoolTraefikRewriteAnnotationFormValue() {\n  return Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_0__.KubernetesTraefikRewriteTargetAnnotations;\n}//# sourceURL=webpack-internal:///16496\n");

}),

72210:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortainerResourcePoolNameLabel\": function() { return /* binding */ KubernetesPortainerResourcePoolNameLabel; },\n/* harmony export */   \"KubernetesPortainerResourcePoolOwnerLabel\": function() { return /* binding */ KubernetesPortainerResourcePoolOwnerLabel; },\n/* harmony export */   \"KubernetesPortainerNamespaceSystemLabel\": function() { return /* binding */ KubernetesPortainerNamespaceSystemLabel; },\n/* harmony export */   \"KubernetesResourcePool\": function() { return /* binding */ KubernetesResourcePool; }\n/* harmony export */ });\nconst KubernetesPortainerResourcePoolNameLabel = 'io.portainer.kubernetes.resourcepool.name';\nconst KubernetesPortainerResourcePoolOwnerLabel = 'io.portainer.kubernetes.resourcepool.owner';\nconst KubernetesPortainerNamespaceSystemLabel = 'io.portainer.kubernetes.namespace.system';\n/**\n * KubernetesResourcePool Model\n */\n\nfunction KubernetesResourcePool() {\n  return {\n    Namespace: {},\n    // KubernetesNamespace\n    Quota: undefined,\n    // KubernetesResourceQuota,\n    Ingresses: [],\n    // KubernetesIngress[]\n    Yaml: ''\n  };\n}//# sourceURL=webpack-internal:///72210\n");

}),

47685:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortainerResourceQuotaPrefix\": function() { return /* binding */ KubernetesPortainerResourceQuotaPrefix; },\n/* harmony export */   \"KubernetesPortainerResourceQuotaCPULimit\": function() { return /* binding */ KubernetesPortainerResourceQuotaCPULimit; },\n/* harmony export */   \"KubernetesPortainerResourceQuotaMemoryLimit\": function() { return /* binding */ KubernetesPortainerResourceQuotaMemoryLimit; },\n/* harmony export */   \"KubernetesPortainerResourceQuotaCPURequest\": function() { return /* binding */ KubernetesPortainerResourceQuotaCPURequest; },\n/* harmony export */   \"KubernetesPortainerResourceQuotaMemoryRequest\": function() { return /* binding */ KubernetesPortainerResourceQuotaMemoryRequest; },\n/* harmony export */   \"KubernetesResourceQuotaDefaults\": function() { return /* binding */ KubernetesResourceQuotaDefaults; },\n/* harmony export */   \"KubernetesResourceQuota\": function() { return /* binding */ KubernetesResourceQuota; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/helpers/resourceQuotaHelper */ 21458);\n\nconst KubernetesPortainerResourceQuotaPrefix = 'portainer-rq-';\nconst KubernetesPortainerResourceQuotaCPULimit = 'limits.cpu';\nconst KubernetesPortainerResourceQuotaMemoryLimit = 'limits.memory';\nconst KubernetesPortainerResourceQuotaCPURequest = 'requests.cpu';\nconst KubernetesPortainerResourceQuotaMemoryRequest = 'requests.memory';\nconst KubernetesResourceQuotaDefaults = {\n  CpuLimit: 0,\n  MemoryLimit: 0\n};\nfunction KubernetesResourceQuota(namespace) {\n  return {\n    Id: '',\n    Namespace: namespace ? namespace : '',\n    Name: namespace ? Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].generateResourceQuotaName(namespace) : '',\n    CpuLimit: KubernetesResourceQuotaDefaults.CpuLimit,\n    MemoryLimit: KubernetesResourceQuotaDefaults.MemoryLimit,\n    CpuLimitUsed: KubernetesResourceQuotaDefaults.CpuLimit,\n    MemoryLimitUsed: KubernetesResourceQuotaDefaults.MemoryLimit,\n    Yaml: '',\n    ResourcePoolName: '',\n    ResourcePoolOwner: ''\n  };\n}//# sourceURL=webpack-internal:///47685\n");

}),

75976:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourceQuotaCreatePayload\": function() { return /* binding */ KubernetesResourceQuotaCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./models */ 47685);\n\n\nfunction KubernetesResourceQuotaCreatePayload() {\n  return {\n    metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n    spec: {\n      hard: {\n        [_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesPortainerResourceQuotaCPURequest]: 0,\n        [_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesPortainerResourceQuotaMemoryRequest]: 0,\n        [_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesPortainerResourceQuotaCPULimit]: 0,\n        [_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesPortainerResourceQuotaMemoryLimit]: 0\n      }\n    }\n  };\n}//# sourceURL=webpack-internal:///75976\n");

}),

46685:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourceReservation\": function() { return /* binding */ KubernetesResourceReservation; }\n/* harmony export */ });\n/**\n * KubernetesResourceReservation Model\n */\nconst _KubernetesResourceReservation = Object.freeze({\n  Memory: 0,\n  CPU: 0\n});\n\nclass KubernetesResourceReservation {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesResourceReservation)));\n  }\n\n}//# sourceURL=webpack-internal:///46685\n");

}),

39212:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourceTypes\": function() { return /* binding */ KubernetesResourceTypes; },\n/* harmony export */   \"KubernetesResourceActions\": function() { return /* binding */ KubernetesResourceActions; }\n/* harmony export */ });\nconst KubernetesResourceTypes = Object.freeze({\n  NAMESPACE: 'Namespace',\n  RESOURCEQUOTA: 'ResourceQuota',\n  CONFIGMAP: 'ConfigMap',\n  SECRET: 'Secret',\n  DEPLOYMENT: 'Deployment',\n  STATEFULSET: 'StatefulSet',\n  DAEMONSET: 'Daemonset',\n  PERSISTENT_VOLUME_CLAIM: 'PersistentVolumeClaim',\n  SERVICE: 'Service',\n  INGRESS: 'Ingress',\n  HORIZONTAL_POD_AUTOSCALER: 'HorizontalPodAutoscaler'\n});\nconst KubernetesResourceActions = Object.freeze({\n  CREATE: 'Create',\n  UPDATE: 'Update',\n  DELETE: 'Delete'\n});//# sourceURL=webpack-internal:///39212\n");

}),

69730:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesApplicationSecret\": function() { return /* binding */ KubernetesApplicationSecret; }\n/* harmony export */ });\n/**\n * KubernetesApplicationSecret Model\n */\nconst _KubernetesApplicationSecret = Object.freeze({\n  Id: 0,\n  Name: '',\n  Namespace: '',\n  Type: '',\n  CreationDate: '',\n  ConfigurationOwner: '',\n  Yaml: '',\n  Data: [],\n  SecretType: '',\n  Annotations: []\n});\n\nclass KubernetesApplicationSecret {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationSecret)));\n  }\n\n}//# sourceURL=webpack-internal:///69730\n");

}),

60622:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesSecretCreatePayload\": function() { return /* binding */ KubernetesSecretCreatePayload; },\n/* harmony export */   \"KubernetesSecretUpdatePayload\": function() { return /* binding */ KubernetesSecretUpdatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesSecretCreatePayload Model\n */\n\nconst _KubernetesSecretCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  type: '',\n  data: {},\n  stringData: {}\n});\n\nclass KubernetesSecretCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesSecretCreatePayload)));\n  }\n\n}\n/**\n * KubernetesSecretUpdatePayload Model\n */\n\nconst _KubernetesSecretUpdatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  type: '',\n  data: {},\n  stringData: {}\n});\n\nclass KubernetesSecretUpdatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesSecretUpdatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///60622\n");

}),

79990:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesServiceHeadlessPrefix\": function() { return /* binding */ KubernetesServiceHeadlessPrefix; },\n/* harmony export */   \"KubernetesServiceHeadlessClusterIP\": function() { return /* binding */ KubernetesServiceHeadlessClusterIP; },\n/* harmony export */   \"KubernetesServiceTypes\": function() { return /* binding */ KubernetesServiceTypes; },\n/* harmony export */   \"KubernetesService\": function() { return /* binding */ KubernetesService; },\n/* harmony export */   \"KubernetesIngressService\": function() { return /* binding */ KubernetesIngressService; },\n/* harmony export */   \"KubernetesIngressServiceRoute\": function() { return /* binding */ KubernetesIngressServiceRoute; },\n/* harmony export */   \"KubernetesServicePort\": function() { return /* binding */ KubernetesServicePort; }\n/* harmony export */ });\nconst KubernetesServiceHeadlessPrefix = 'headless-';\nconst KubernetesServiceHeadlessClusterIP = 'None';\nconst KubernetesServiceTypes = Object.freeze({\n  LOAD_BALANCER: 'LoadBalancer',\n  NODE_PORT: 'NodePort',\n  CLUSTER_IP: 'ClusterIP',\n  INGRESS: 'Ingress'\n});\n/**\n * KubernetesService Model\n */\n\nconst _KubernetesService = Object.freeze({\n  Headless: false,\n  Namespace: '',\n  Name: '',\n  StackName: '',\n  Ports: [],\n  Type: '',\n  ClusterIP: '',\n  ApplicationName: '',\n  ApplicationOwner: '',\n  Note: '',\n  Ingress: false,\n  Selector: {},\n  nodePortError: false,\n  servicePortError: false\n});\n\nclass KubernetesService {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesService)));\n  }\n\n}\n\nconst _KubernetesIngressService = Object.freeze({\n  Headless: false,\n  Namespace: '',\n  Name: '',\n  StackName: '',\n  Ports: [],\n  Type: '',\n  ClusterIP: '',\n  ApplicationName: '',\n  ApplicationOwner: '',\n  Note: '',\n  Ingress: true,\n  IngressRoute: []\n});\n\nclass KubernetesIngressService {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesIngressService)));\n  }\n\n}\n\nconst _KubernetesIngressServiceRoute = Object.freeze({\n  Host: '',\n  IngressName: '',\n  Path: '',\n  ServiceName: '',\n  TLSCert: ''\n});\n\nclass KubernetesIngressServiceRoute {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesIngressServiceRoute)));\n  }\n\n}\n/**\n * KubernetesServicePort Model\n */\n\nconst _KubernetesServicePort = Object.freeze({\n  name: '',\n  port: 0,\n  targetPort: 0,\n  protocol: '',\n  nodePort: 0,\n  ingress: ''\n});\n\nclass KubernetesServicePort {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesServicePort)));\n  }\n\n}//# sourceURL=webpack-internal:///79990\n");

}),

31249:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesServiceCreatePayload\": function() { return /* binding */ KubernetesServiceCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesServiceCreatePayload Model\n */\n\nconst _KubernetesServiceCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  spec: {\n    ports: [],\n    selector: {\n      app: ''\n    },\n    type: '',\n    clusterIP: ''\n  }\n});\n\nclass KubernetesServiceCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesServiceCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///31249\n");

}),

31084:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesStack\": function() { return /* binding */ KubernetesStack; }\n/* harmony export */ });\n/**\n * Stack Model\n */\nconst _KubernetesStack = Object.freeze({\n  Name: '',\n  ResourcePool: '',\n  Applications: []\n});\n\nclass KubernetesStack {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStack)));\n  }\n\n}//# sourceURL=webpack-internal:///31084\n");

}),

91920:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesStatefulSet\": function() { return /* binding */ KubernetesStatefulSet; }\n/* harmony export */ });\n/**\n * KubernetesStatefulSet Model\n */\nconst _KubernetesStatefulSet = Object.freeze({\n  Namespace: '',\n  Name: '',\n  StackName: '',\n  ReplicaCount: 0,\n  ImageModel: null,\n  Env: [],\n  CpuLimit: '',\n  MemoryLimit: '',\n  VolumeMounts: [],\n  Volumes: [],\n  Secret: undefined,\n  VolumeClaims: [],\n  ServiceName: '',\n  ApplicationName: '',\n  ApplicationOwner: '',\n  Note: '',\n  Affinity: undefined // KubernetesPodAffinity\n\n});\n\nclass KubernetesStatefulSet {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStatefulSet)));\n  }\n\n}//# sourceURL=webpack-internal:///91920\n");

}),

13871:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesStatefulSetCreatePayload\": function() { return /* binding */ KubernetesStatefulSetCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesStatefulSetCreatePayload Model\n */\n\nconst _KubernetesStatefulSetCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  spec: {\n    replicas: 0,\n    serviceName: '',\n    selector: {\n      matchLabels: {\n        app: ''\n      }\n    },\n    volumeClaimTemplates: [],\n    updateStrategy: {\n      type: 'RollingUpdate',\n      rollingUpdate: {\n        partition: 0\n      }\n    },\n    template: {\n      metadata: {\n        labels: {\n          app: ''\n        }\n      },\n      spec: {\n        containers: [{\n          name: '',\n          image: '',\n          env: [],\n          resources: {\n            limits: {},\n            requests: {}\n          },\n          volumeMounts: []\n        }],\n        volumes: []\n      }\n    }\n  }\n});\n\nclass KubernetesStatefulSetCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStatefulSetCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///13871\n");

}),

86871:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesStorageClassAccessPolicies\": function() { return /* binding */ KubernetesStorageClassAccessPolicies; },\n/* harmony export */   \"KubernetesStorageClass\": function() { return /* binding */ KubernetesStorageClass; }\n/* harmony export */ });\n/**\n * KubernetesStorageClassAccessPolicies Model\n */\nconst _KubernetesStorageClassAccessPolicies = Object.freeze([{\n  Name: 'RWO',\n  Description: 'Allow read-write from a single pod only (RWO)',\n  selected: true\n}, {\n  Name: 'RWX',\n  Description: 'Allow read-write access from one or more pods concurrently (RWX)',\n  selected: false\n}]);\n\nfunction KubernetesStorageClassAccessPolicies() {\n  return JSON.parse(JSON.stringify(_KubernetesStorageClassAccessPolicies));\n}\n/**\n * KubernetesStorageClass Model\n */\n\nconst _KubernetesStorageClass = Object.freeze({\n  Name: '',\n  AccessModes: [],\n  Provisioner: '',\n  AllowVolumeExpansion: false\n});\n\nclass KubernetesStorageClass {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStorageClass)));\n  }\n\n}//# sourceURL=webpack-internal:///86871\n");

}),

79824:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesStorageClassCreatePayload\": function() { return /* binding */ KubernetesStorageClassCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesStorageClassCreatePayload Model\n */\n\nconst _KubernetesStorageClassCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  provisioner: '',\n  allowVolumeExpansion: false\n});\n\nclass KubernetesStorageClassCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStorageClassCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///79824\n");

}),

72913:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPersistentVolumeClaim\": function() { return /* binding */ KubernetesPersistentVolumeClaim; },\n/* harmony export */   \"KubernetesVolume\": function() { return /* binding */ KubernetesVolume; }\n/* harmony export */ });\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * KubernetesPersistentVolumeClaim Model\n */\n\nconst _KubernetesPersistentVolumeClaim = Object.freeze({\n  Id: '',\n  Name: '',\n  PreviousName: '',\n  Namespace: '',\n  Storage: 0,\n  StorageClass: {},\n  // KubernetesStorageClass\n  CreationDate: '',\n  ApplicationOwner: '',\n  ApplicationName: '',\n  MountPath: '',\n  // used for Application creation from ApplicationFormValues | not used from API conversion\n  Yaml: ''\n});\n\nclass KubernetesPersistentVolumeClaim {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPersistentVolumeClaim)));\n    this.Name = uuid_v4__WEBPACK_IMPORTED_MODULE_0___default()();\n  }\n\n}\n/**\n * KubernetesVolume Model (Composite)\n */\n\nconst _KubernetesVolume = Object.freeze({\n  ResourcePool: {},\n  // KubernetesResourcePool\n  PersistentVolumeClaim: {},\n  // KubernetesPersistentVolumeClaim\n  Applications: [] // KubernetesApplication\n\n});\n\nclass KubernetesVolume {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesVolume)));\n  }\n\n}//# sourceURL=webpack-internal:///72913\n");

}),

88296:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPersistentVolumClaimCreatePayload\": function() { return /* binding */ KubernetesPersistentVolumClaimCreatePayload; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\n/**\n * KubernetesPersistentVolumClaimCreatePayload Model\n */\n\nconst _KubernetesPersistentVolumClaimCreatePayload = Object.freeze({\n  metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n  spec: {\n    accessModes: ['ReadWriteOnce'],\n    resources: {\n      requests: {\n        storage: ''\n      }\n    },\n    storageClassName: ''\n  }\n});\n\nclass KubernetesPersistentVolumClaimCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPersistentVolumClaimCreatePayload)));\n  }\n\n}//# sourceURL=webpack-internal:///88296\n");

}),

76676:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNodeConditionTypes\": function() { return /* binding */ KubernetesNodeConditionTypes; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_has__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/has */ 39576);\n/* harmony import */ var lodash_es_has__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_has__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/node/models */ 85001);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/node/formValues */ 2949);\n/* harmony import */ var Kubernetes_node_payload__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/node/payload */ 11801);\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesNodeConverter {\n  static apiToNode(data, res) {\n    if (!res) {\n      res = new Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNode();\n    }\n\n    res.Id = data.metadata.uid;\n\n    const hostName = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.addresses, {\n      type: 'Hostname'\n    });\n\n    res.Name = data.metadata.name ? data.metadata.name : hostName.address;\n    res.Labels = data.metadata.labels;\n    res.Role = lodash_es_has__WEBPACK_IMPORTED_MODULE_3___default()(data.metadata.labels, 'node-role.kubernetes.io/master') ? 'Master' : 'Worker';\n\n    const ready = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.conditions, {\n      type: KubernetesNodeConditionTypes.READY\n    });\n\n    const memoryPressure = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.conditions, {\n      type: KubernetesNodeConditionTypes.MEMORY_PRESSURE\n    });\n\n    const PIDPressure = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.conditions, {\n      type: KubernetesNodeConditionTypes.PID_PRESSURE\n    });\n\n    const diskPressure = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.conditions, {\n      type: KubernetesNodeConditionTypes.DISK_PRESSURE\n    });\n\n    const networkUnavailable = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.conditions, {\n      type: KubernetesNodeConditionTypes.NETWORK_UNAVAILABLE\n    });\n\n    res.Conditions = {\n      MemoryPressure: memoryPressure && memoryPressure.status === 'True',\n      PIDPressure: PIDPressure && PIDPressure.status === 'True',\n      DiskPressure: diskPressure && diskPressure.status === 'True',\n      NetworkUnavailable: networkUnavailable && networkUnavailable.status === 'True'\n    };\n    res.Availability = Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeAvailabilities.ACTIVE;\n\n    if (data.spec.unschedulable === true) {\n      res.Availability = lodash_es_has__WEBPACK_IMPORTED_MODULE_3___default()(data.metadata.labels, Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerNodeDrainLabel) ? Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeAvailabilities.DRAIN : Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeAvailabilities.PAUSE;\n    }\n\n    if (ready.status === 'False') {\n      res.Status = 'Unhealthy';\n    } else if (ready.status === 'Unknown' || res.Conditions.MemoryPressure || res.Conditions.PIDPressure || res.Conditions.DiskPressure || res.Conditions.NetworkUnavailable) {\n      res.Status = 'Warning';\n    } else {\n      res.Status = 'Ready';\n    }\n\n    res.CPU = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].parseCPU(data.status.allocatable.cpu);\n    res.Memory = data.status.allocatable.memory;\n    res.Version = data.status.nodeInfo.kubeletVersion;\n\n    const internalIP = lodash_es_find__WEBPACK_IMPORTED_MODULE_4___default()(data.status.addresses, {\n      type: 'InternalIP'\n    });\n\n    res.IPAddress = internalIP ? internalIP.address : '-';\n    res.Taints = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(data.spec.taints, taint => {\n      const res = new Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeTaint();\n      res.Key = taint.key;\n      res.Value = taint.value;\n      res.Effect = taint.effect;\n      return res;\n    });\n    return res;\n  }\n\n  static apiToNodeDetails(data, yaml) {\n    let res = new Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeDetails();\n    res = KubernetesNodeConverter.apiToNode(data, res);\n    res.CreationDate = data.metadata.creationTimestamp;\n    res.OS.Architecture = data.status.nodeInfo.architecture;\n    res.OS.Platform = data.status.nodeInfo.operatingSystem;\n    res.OS.Image = data.status.nodeInfo.osImage;\n    res.Yaml = yaml ? yaml.data : '';\n    return res;\n  }\n\n  static nodeToFormValues(node) {\n    const res = new Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_8__.KubernetesNodeFormValues();\n    res.Availability = node.Availability;\n    res.Taints = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(node.Taints, taint => {\n      const res = new Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_8__.KubernetesNodeTaintFormValues();\n      res.Key = taint.Key;\n      res.Value = taint.Value;\n      res.Effect = taint.Effect;\n      res.NeedsDeletion = false;\n      res.IsNew = false;\n      return res;\n    });\n    res.Labels = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(node.Labels, (value, key) => {\n      const res = new Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_8__.KubernetesNodeLabelFormValues();\n      res.Key = key;\n      res.Value = value;\n      res.NeedsDeletion = false;\n      res.IsNew = false;\n      return res;\n    });\n    return res;\n  }\n\n  static formValuesToNode(node, formValues) {\n    const res = angular.copy(node);\n    res.Availability = formValues.Availability;\n\n    const filteredTaints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(formValues.Taints, taint => !taint.NeedsDeletion);\n\n    res.Taints = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(filteredTaints, item => {\n      const taint = new Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeTaint();\n      taint.Key = item.Key;\n      taint.Value = item.Value;\n      taint.Effect = item.Effect;\n      return taint;\n    });\n\n    const filteredLabels = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(formValues.Labels, label => !label.NeedsDeletion);\n\n    res.Labels = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(filteredLabels, (acc, item) => {\n      acc[item.Key] = item.Value ? item.Value : '';\n      return acc;\n    }, {});\n    return res;\n  }\n\n  static createPayload(node) {\n    const payload = new Kubernetes_node_payload__WEBPACK_IMPORTED_MODULE_9__.KubernetesNodeCreatePayload();\n    payload.metadata.name = node.Name;\n\n    const taints = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(node.Taints, taint => {\n      const res = new Kubernetes_node_payload__WEBPACK_IMPORTED_MODULE_9__.KubernetesNodeTaintPayload();\n      res.key = taint.Key;\n      res.value = taint.Value;\n      res.effect = taint.Effect;\n      return res;\n    });\n\n    payload.spec.taints = taints.length ? taints : undefined;\n    payload.metadata.labels = node.Labels;\n\n    if (node.Availability !== Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeAvailabilities.ACTIVE) {\n      payload.spec.unschedulable = true;\n\n      if (node.Availability === Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesNodeAvailabilities.DRAIN) {\n        payload.metadata.labels[Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerNodeDrainLabel] = '';\n      } else {\n        delete payload.metadata.labels[Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerNodeDrainLabel];\n      }\n    }\n\n    return payload;\n  }\n\n  static patchPayload(oldNode, newNode) {\n    const oldPayload = KubernetesNodeConverter.createPayload(oldNode);\n    const newPayload = KubernetesNodeConverter.createPayload(newNode);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_5__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\nconst KubernetesNodeConditionTypes = Object.freeze({\n  READY: 'Ready',\n  MEMORY_PRESSURE: 'MemoryPressure',\n  PID_PRESSURE: 'PIDPressure',\n  DISK_PRESSURE: 'DiskPressure',\n  NETWORK_UNAVAILABLE: 'NetworkUnavailable'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNodeConverter);//# sourceURL=webpack-internal:///76676\n");

}),

57067:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.kubernetes').filter('kubernetesNodeStatusColor', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default()(text);\n\n    switch (status) {\n      case 'ready':\n        return 'success';\n\n      case 'warning':\n        return 'warning';\n\n      default:\n        return 'danger';\n    }\n  };\n}).filter('kubernetesNodeConditionsMessage', function () {\n  'use strict';\n\n  return function (conditions) {\n    if (conditions.MemoryPressure) {\n      return 'Node memory is running low';\n    }\n\n    if (conditions.PIDPressure) {\n      return 'Too many processes running on the node';\n    }\n\n    if (conditions.DiskPressure) {\n      return 'Node disk capacity is running low';\n    }\n\n    if (conditions.NetworkUnavailable) {\n      return 'Incorrect node network configuration';\n    }\n  };\n});//# sourceURL=webpack-internal:///57067\n");

}),

2949:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNodeFormValues\": function() { return /* binding */ KubernetesNodeFormValues; },\n/* harmony export */   \"KubernetesNodeTaintFormValues\": function() { return /* binding */ KubernetesNodeTaintFormValues; },\n/* harmony export */   \"KubernetesNodeLabelFormValues\": function() { return /* binding */ KubernetesNodeLabelFormValues; }\n/* harmony export */ });\nconst _KubernetesNodeFormValues = Object.freeze({\n  Taints: [],\n  Labels: [],\n  Availability: ''\n});\n\nclass KubernetesNodeFormValues {\n  constructor() {\n    Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeFormValues)));\n  }\n\n}\n\nconst _KubernetesNodeTaintFormValues = Object.freeze({\n  Key: '',\n  Values: '',\n  Effect: '',\n  NeedsDeletion: false,\n  IsNew: false,\n  IsChanged: false\n});\n\nclass KubernetesNodeTaintFormValues {\n  constructor() {\n    Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeTaintFormValues)));\n  }\n\n}\n\nconst _KubernetesNodeLabelFormValues = Object.freeze({\n  Key: '',\n  Values: '',\n  NeedsDeletion: false,\n  IsNew: false,\n  IsUsed: false,\n  IsChanged: false\n});\n\nclass KubernetesNodeLabelFormValues {\n  constructor() {\n    Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeLabelFormValues)));\n  }\n\n}//# sourceURL=webpack-internal:///2949\n");

}),

14780:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNodeHelper\": function() { return /* binding */ KubernetesNodeHelper; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/groupBy */ 86103);\n/* harmony import */ var lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/toPairs */ 4160);\n/* harmony import */ var lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\nclass KubernetesNodeHelper {\n  static isSystemLabel(label) {\n    return !label.IsNew && (lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_8___default()(label.Key, 'beta.kubernetes.io') || lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_8___default()(label.Key, 'kubernetes.io') || label.Key === 'node-role.kubernetes.io/master');\n  }\n\n  static reorderLabels(labels) {\n    return lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_7___default()(labels, label => {\n      return !KubernetesNodeHelper.isSystemLabel(label);\n    });\n  }\n\n  static computeUsedLabels(applications, labels) {\n    const pods = lodash_es_flatten__WEBPACK_IMPORTED_MODULE_6___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(applications, 'Pods'));\n\n    const nodeSelectors = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_6___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(pods, 'NodeSelector')));\n\n    return lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(labels, label => {\n      label.IsUsed = lodash_es_find__WEBPACK_IMPORTED_MODULE_3___default()(nodeSelectors, ns => ns && ns[label.Key] === label.Value) ? true : false;\n      return label;\n    });\n  }\n\n  static generateNodeLabelsFromNodes(nodes) {\n    const pairs = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_2___default()(nodes, node => {\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_toPairs__WEBPACK_IMPORTED_MODULE_1___default()(node.Labels), ([k, v]) => {\n        return {\n          key: k,\n          value: v\n        };\n      });\n    });\n\n    return lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(lodash_es_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(pairs, 'key'), (values, key) => {\n      return {\n        Key: key,\n        Values: lodash_es_uniq__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(values, 'value'))\n      };\n    });\n  }\n\n}//# sourceURL=webpack-internal:///14780\n");

}),

85001:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPortainerNodeDrainLabel\": function() { return /* binding */ KubernetesPortainerNodeDrainLabel; },\n/* harmony export */   \"KubernetesNode\": function() { return /* binding */ KubernetesNode; },\n/* harmony export */   \"KubernetesNodeDetails\": function() { return /* binding */ KubernetesNodeDetails; },\n/* harmony export */   \"KubernetesNodeTaint\": function() { return /* binding */ KubernetesNodeTaint; },\n/* harmony export */   \"KubernetesNodeAvailabilities\": function() { return /* binding */ KubernetesNodeAvailabilities; },\n/* harmony export */   \"KubernetesNodeTaintEffects\": function() { return /* binding */ KubernetesNodeTaintEffects; }\n/* harmony export */ });\nconst KubernetesPortainerNodeDrainLabel = 'io.portainer/node-status-drain';\n/**\n * KubernetesNode Model\n */\n\nconst _KubernetesNode = Object.freeze({\n  Id: '',\n  Name: '',\n  Labels: {},\n  Role: '',\n  Status: '',\n  CPU: 0,\n  Memory: '',\n  Version: '',\n  IPAddress: '',\n  Api: false,\n  Taints: [],\n  Port: 0,\n  Availability: ''\n});\n\nclass KubernetesNode {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNode)));\n  }\n\n}\n/**\n * KubernetesNodeDetails Model\n */\n\nconst _KubernetesNodeDetails = Object.freeze({\n  CreationDate: '',\n  OS: {\n    Architecture: '',\n    Platform: '',\n    Image: ''\n  },\n  Conditions: [],\n  Yaml: ''\n});\n\nclass KubernetesNodeDetails {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNode)));\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeDetails)));\n  }\n\n}\n/**\n * KubernetesNodeTaint Model\n */\n\nconst _KubernetesNodeTaint = Object.freeze({\n  Key: '',\n  Value: '',\n  Effect: ''\n});\n\nclass KubernetesNodeTaint {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeTaint)));\n  }\n\n}\nconst KubernetesNodeAvailabilities = Object.freeze({\n  ACTIVE: 'Active',\n  PAUSE: 'Pause',\n  DRAIN: 'Drain'\n});\nconst KubernetesNodeTaintEffects = Object.freeze({\n  NOSCHEDULE: 'NoSchedule',\n  PREFERNOSCHEDULE: 'PreferNoSchedule',\n  NOEXECUTE: 'NoExecute'\n});//# sourceURL=webpack-internal:///85001\n");

}),

11801:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesNodeCreatePayload\": function() { return /* binding */ KubernetesNodeCreatePayload; },\n/* harmony export */   \"KubernetesNodeTaintPayload\": function() { return /* binding */ KubernetesNodeTaintPayload; }\n/* harmony export */ });\n/**\n * KubernetesNode Create Payload Model\n * Note: The current payload is here just to create patch payload.\n */\nconst _KubernetesNodeCreatePayload = Object.freeze({\n  metadata: {\n    name: '',\n    labels: {}\n  },\n  spec: {\n    taints: undefined\n  }\n});\n\nclass KubernetesNodeCreatePayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeCreatePayload)));\n  }\n\n}\n\nconst _KubernetesNodeTaintPayload = Object.freeze({\n  key: '',\n  value: '',\n  effect: ''\n});\n\nclass KubernetesNodeTaintPayload {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeTaintPayload)));\n  }\n\n}//# sourceURL=webpack-internal:///11801\n");

}),

9790:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesNodes', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesNodesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function () {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1/nodes/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///9790\n");

}),

6795:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/node/converter */ 76676);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n\n\n\n\n\n\nclass KubernetesNodeService {\n  /* @ngInject */\n  constructor($async, KubernetesNodes) {\n    this.$async = $async;\n    this.KubernetesNodes = KubernetesNodes;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = name;\n      const [details, yaml] = await Promise.all([this.KubernetesNodes().get(params).$promise, this.KubernetesNodes().getYaml(params).$promise]);\n      return Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToNodeDetails(details, yaml);\n    } catch (err) {\n      // changing the structure of error message to fix [object, Object] issue\n      const errData = err.data;\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve node details', errData);\n    }\n  }\n\n  async getAllAsync() {\n    try {\n      const data = await this.KubernetesNodes().get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToNode(item));\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve nodes',\n        err: err\n      };\n    }\n  }\n\n  get(name) {\n    if (name) {\n      return this.$async(this.getAsync, name);\n    }\n\n    return this.$async(this.getAllAsync);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(node, nodeFormValues) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = node.Name;\n      const newNode = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].formValuesToNode(node, nodeFormValues);\n      const payload = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(node, newNode);\n      const data = await this.KubernetesNodes().patch(params, payload).$promise;\n      const patchedNode = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToNodeDetails(data);\n      return patchedNode;\n    } catch (err) {\n      throw {\n        msg: 'Unable to patch node',\n        err: err\n      };\n    }\n  }\n\n  patch(node, nodeFormValues) {\n    return this.$async(this.patchAsync, node, nodeFormValues);\n  }\n\n}\n\nKubernetesNodeService.$inject = [\"$async\", \"KubernetesNodes\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNodeService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesNodeService', KubernetesNodeService);//# sourceURL=webpack-internal:///6795\n");

}),

22050:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesPodConverter; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/sumBy */ 37336);\n/* harmony import */ var lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/pod/models */ 31275);\n/* harmony import */ var _payloads_create__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./payloads/create */ 61005);\n\n\n\n\n\n\n\n\n\n\n\nfunction computeStatus(statuses) {\n  const containerStatuses = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(statuses, 'state');\n\n  const running = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(containerStatuses, s => s.running).length;\n\n  const waiting = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(containerStatuses, s => s.waiting).length;\n\n  if (waiting) {\n    return 'Waiting';\n  } else if (!running) {\n    return 'Terminated';\n  }\n\n  return 'Running';\n}\n\nfunction computeContainerStatus(statuses, name) {\n  const status = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(statuses, {\n    name: name\n  });\n\n  if (!status) {\n    return 'Terminated';\n  }\n\n  const state = status.state;\n\n  if (state.waiting) {\n    return 'Waiting';\n  }\n\n  if (!state.running) {\n    return 'Terminated';\n  }\n\n  return 'Running';\n}\n\nfunction computeAffinity(affinity) {\n  const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodAffinity();\n\n  if (affinity) {\n    res.nodeAffinity = affinity.nodeAffinity || {};\n  }\n\n  return res;\n}\n\nfunction computeTolerations(tolerations) {\n  return lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(tolerations, item => {\n    const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodToleration();\n    res.Key = item.key;\n    res.Operator = item.operator;\n    res.Value = item.value;\n    res.TolerationSeconds = item.tolerationSeconds;\n    res.Effect = item.effect;\n    return res;\n  });\n}\n\nfunction computeContainers(data) {\n  const containers = data.spec.containers;\n  const initContainers = data.spec.initContainers;\n  return lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(containers, item => {\n    const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodContainer();\n    res.Type = Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodContainerTypes.APP;\n    res.PodName = data.metadata.name;\n    res.PodIP = data.status.podIP;\n    res.Name = item.name;\n    res.Image = item.image;\n    res.ImagePullPolicy = item.imagePullPolicy;\n    res.Node = data.spec.nodeName;\n    res.CreationDate = data.status.startTime;\n    res.Status = computeContainerStatus(data.status.containerStatuses, item.name);\n    res.Limits = item.resources.limits;\n    res.Requests = item.resources.requests;\n    res.VolumeMounts = item.volumeMounts;\n    res.Env = item.env;\n    return res;\n  }), lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(initContainers, item => {\n    const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodContainer();\n    res.Type = Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodContainerTypes.INIT;\n    res.PodName = data.metadata.name;\n    res.Name = item.name;\n    res.Image = item.image;\n    res.Node = data.spec.nodeName;\n    res.CreationDate = data.status.startTime;\n    res.Status = computeContainerStatus(data.status.containerStatuses, item.name);\n    res.Limits = item.resources.limits;\n    res.Requests = item.resources.requests;\n    res.VolumeMounts = item.volumeMounts;\n    res.Env = item.env;\n    return res;\n  }));\n}\n\nclass KubernetesPodConverter {\n  static apiToModel(data) {\n    const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPod();\n    res.Id = data.metadata.uid;\n    res.Name = data.metadata.name;\n    res.Namespace = data.metadata.namespace;\n    res.Images = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(data.spec.containers, 'image');\n    res.Status = computeStatus(data.status.containerStatuses);\n    res.Restarts = lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_0___default()(data.status.containerStatuses, 'restartCount');\n    res.Node = data.spec.nodeName;\n    res.CreationDate = data.status.startTime;\n    res.Containers = computeContainers(data);\n    res.Labels = data.metadata.labels;\n    res.Affinity = computeAffinity(data.spec.affinity);\n    res.NodeSelector = data.spec.nodeSelector;\n    res.Tolerations = computeTolerations(data.spec.tolerations);\n    return res;\n  }\n\n  static evictionPayload(pod) {\n    const res = new Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesPodEviction();\n    res.metadata.name = pod.Name;\n    res.metadata.namespace = pod.Namespace;\n    return res;\n  }\n\n  static patchPayload(oldPod, newPod) {\n    const oldPayload = createPayload(oldPod);\n    const newPayload = createPayload(newPod);\n    const payload = fast_json_patch__WEBPACK_IMPORTED_MODULE_5__.compare(oldPayload, newPayload);\n    return payload;\n  }\n\n}\n\nfunction createPayload(pod) {\n  const payload = (0,_payloads_create__WEBPACK_IMPORTED_MODULE_9__.createPayloadFactory)();\n  payload.metadata.name = pod.Name;\n  payload.metadata.namespace = pod.Namespace;\n  payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationStackNameLabel] = pod.StackName;\n  payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationNameLabel] = pod.ApplicationName;\n  payload.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationOwnerLabel] = pod.ApplicationOwner;\n\n  if (pod.Note) {\n    payload.metadata.annotations[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationNote] = pod.Note;\n  } else {\n    payload.metadata.annotations = undefined;\n  }\n\n  payload.spec.replicas = pod.ReplicaCount;\n  payload.spec.selector.matchLabels.app = pod.Name;\n  payload.spec.template.metadata.labels.app = pod.Name;\n  payload.spec.template.metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationNameLabel] = pod.ApplicationName;\n  payload.spec.template.spec.containers[0].name = pod.Name;\n  payload.spec.template.spec.containers[0].image = pod.Image;\n  payload.spec.template.spec.affinity = pod.Affinity;\n  Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', pod.Env);\n  Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', pod.VolumeMounts);\n  Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', pod.Volumes);\n\n  if (pod.MemoryLimit) {\n    payload.spec.template.spec.containers[0].resources.limits.memory = pod.MemoryLimit;\n    payload.spec.template.spec.containers[0].resources.requests.memory = pod.MemoryLimit;\n  }\n\n  if (pod.CpuLimit) {\n    payload.spec.template.spec.containers[0].resources.limits.cpu = pod.CpuLimit;\n    payload.spec.template.spec.containers[0].resources.requests.cpu = pod.CpuLimit;\n  }\n\n  if (!pod.CpuLimit && !pod.MemoryLimit) {\n    delete payload.spec.template.spec.containers[0].resources;\n  }\n\n  return payload;\n}//# sourceURL=webpack-internal:///22050\n");

}),

15826:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.kubernetes').filter('kubernetesPodStatusColor', function () {\n  'use strict';\n\n  return function (text) {\n    var status = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_0___default()(text);\n\n    switch (status) {\n      case 'running':\n        return 'success';\n\n      case 'waiting':\n        return 'warning';\n\n      case 'terminated':\n        return 'info';\n\n      default:\n        return 'danger';\n    }\n  };\n}).filter('kubernetesPodConditionStatusBadge', function () {\n  'use strict';\n\n  return function (status, type) {\n    switch (type) {\n      case 'Unschedulable':\n        switch (status) {\n          case 'True':\n            return 'fa-exclamation-triangle red-icon';\n\n          case 'False':\n            return 'fa-check green-icon';\n\n          case 'Unknown':\n            return 'fa-exclamation-circle orange-icon';\n        }\n\n        break;\n\n      case 'PodScheduled':\n      case 'Ready':\n      case 'Initialized':\n      case 'ContainersReady':\n        switch (status) {\n          case 'True':\n            return 'fa-check green-icon';\n\n          case 'False':\n            return 'fa-exclamation-triangle red-icon';\n\n          case 'Unknown':\n            return 'fa-exclamation-circle orange-icon';\n        }\n\n        break;\n\n      default:\n        return 'fa-question-circle red-icon';\n    }\n  };\n}).filter('kubernetesPodConditionStatusText', function () {\n  'use strict';\n\n  return function (status, type) {\n    switch (type) {\n      case 'Unschedulable':\n        switch (status) {\n          case 'True':\n            return 'Alert';\n\n          case 'False':\n            return 'OK';\n\n          case 'Unknown':\n            return 'Warning';\n        }\n\n        break;\n\n      case 'PodScheduled':\n      case 'Ready':\n      case 'Initialized':\n      case 'ContainersReady':\n        switch (status) {\n          case 'True':\n            return 'Ok';\n\n          case 'False':\n            return 'Alert';\n\n          case 'Unknown':\n            return 'Warning';\n        }\n\n        break;\n\n      default:\n        return 'Unknown';\n    }\n  };\n});//# sourceURL=webpack-internal:///15826\n");

}),

73689:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPodNodeAffinityNodeSelectorRequirementOperators\": function() { return /* binding */ KubernetesPodNodeAffinityNodeSelectorRequirementOperators; },\n/* harmony export */   \"KubernetesPodAffinity\": function() { return /* binding */ KubernetesPodAffinity; }\n/* harmony export */ });\nconst KubernetesPodNodeAffinityNodeSelectorRequirementOperators = Object.freeze({\n  IN: 'In',\n  NOT_IN: 'NotIn',\n  EXISTS: 'Exists',\n  DOES_NOT_EXIST: 'DoesNotExist',\n  GREATER_THAN: 'Gt',\n  LOWER_THAN: 'Lt'\n});\n/**\n * KubernetesPodAffinity Model\n */\n// this model will contain non transformed data (raw payload data)\n// either during creation flow (model > api)\n// than during reading flow (api > model)\n\nfunction KubernetesPodAffinity() {\n  return {\n    nodeAffinity: {} // KubernetesPodNodeAffinityPayload\n    // podAffinity: {},\n    // podAntiAffinity: {},\n\n  };\n}//# sourceURL=webpack-internal:///73689\n");

}),

31275:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPodAffinity\": function() { return /* reexport safe */ _affinities__WEBPACK_IMPORTED_MODULE_0__.KubernetesPodAffinity; },\n/* harmony export */   \"KubernetesPodNodeAffinityNodeSelectorRequirementOperators\": function() { return /* reexport safe */ _affinities__WEBPACK_IMPORTED_MODULE_0__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators; },\n/* harmony export */   \"KubernetesPod\": function() { return /* binding */ KubernetesPod; },\n/* harmony export */   \"KubernetesPodToleration\": function() { return /* binding */ KubernetesPodToleration; },\n/* harmony export */   \"KubernetesPodContainer\": function() { return /* binding */ KubernetesPodContainer; },\n/* harmony export */   \"KubernetesPodEviction\": function() { return /* binding */ KubernetesPodEviction; },\n/* harmony export */   \"KubernetesPodContainerTypes\": function() { return /* binding */ KubernetesPodContainerTypes; }\n/* harmony export */ });\n/* harmony import */ var _affinities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./affinities */ 73689);\n\n/**\n * KubernetesPod Model\n */\n\nconst _KubernetesPod = Object.freeze({\n  Id: '',\n  Name: '',\n  Namespace: '',\n  Images: [],\n  Status: '',\n  Restarts: 0,\n  Node: '',\n  CreationDate: '',\n  Containers: [],\n  Labels: [],\n  Affinity: {},\n  // KubernetesPodAffinity\n  Tolerations: [],\n  // KubernetesPodToleration[]\n  NodeSelector: undefined\n});\n\nclass KubernetesPod {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPod)));\n  }\n\n}\n/**\n * KubernetesPodToleration Model\n */\n\nconst _KubernetesPodToleration = Object.freeze({\n  Key: '',\n  Operator: '',\n  Value: '',\n  TolerationSeconds: 0,\n  Effect: ''\n});\n\nclass KubernetesPodToleration {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodToleration)));\n  }\n\n}\n\nconst _KubernetesPodContainer = Object.freeze({\n  Type: 0,\n  PodName: '',\n  Name: '',\n  Image: '',\n  ImagePullPolicy: '',\n  Node: '',\n  CreationDate: '',\n  Status: '',\n  Limits: {},\n  Requests: {},\n  VolumeMounts: {},\n  ConfigurationVolumes: [],\n  PersistedFolders: [],\n  Env: []\n});\n\nclass KubernetesPodContainer {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodContainer)));\n  }\n\n}\n\nconst _KubernetesPodEviction = Object.freeze({\n  apiVersion: 'policy/v1beta1',\n  kind: 'Eviction',\n  metadata: {\n    name: '',\n    namespace: ''\n  }\n});\n\nclass KubernetesPodEviction {\n  constructor() {\n    Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodEviction)));\n  }\n\n}\nconst KubernetesPodContainerTypes = {\n  INIT: 1,\n  APP: 2\n};//# sourceURL=webpack-internal:///31275\n");

}),

78398:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesPodNodeAffinityPayload\": function() { return /* binding */ KubernetesPodNodeAffinityPayload; },\n/* harmony export */   \"KubernetesPreferredSchedulingTermPayload\": function() { return /* binding */ KubernetesPreferredSchedulingTermPayload; },\n/* harmony export */   \"KubernetesNodeSelectorTermPayload\": function() { return /* binding */ KubernetesNodeSelectorTermPayload; },\n/* harmony export */   \"KubernetesNodeSelectorRequirementPayload\": function() { return /* binding */ KubernetesNodeSelectorRequirementPayload; }\n/* harmony export */ });\nfunction KubernetesPodNodeAffinityPayload() {\n  return {\n    requiredDuringSchedulingIgnoredDuringExecution: {\n      nodeSelectorTerms: [] // []KubernetesNodeSelectorTermPayload\n\n    },\n    preferredDuringSchedulingIgnoredDuringExecution: [] // []KubernetesPreferredSchedulingTermPayload\n\n  };\n}\nfunction KubernetesPreferredSchedulingTermPayload() {\n  return {\n    weight: 1,\n    preference: {} // KubernetesNodeSelectorTermPayload\n\n  };\n}\nfunction KubernetesNodeSelectorTermPayload() {\n  return {\n    matchExpressions: [] // []KubernetesNodeSelectorRequirementPayload\n\n  };\n}\nfunction KubernetesNodeSelectorRequirementPayload() {\n  return {\n    key: '',\n    // string\n    operator: '',\n    // KubernetesPodNodeAffinityNodeSelectorRequirementOperators\n    values: [] // []string\n\n  };\n}//# sourceURL=webpack-internal:///78398\n");

}),

61005:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createPayloadFactory\": function() { return /* binding */ createPayloadFactory; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/common/payloads */ 27367);\n\nfunction createPayloadFactory() {\n  return {\n    metadata: new Kubernetes_models_common_payloads__WEBPACK_IMPORTED_MODULE_0__.KubernetesCommonMetadataPayload(),\n    spec: {\n      replicas: 0,\n      selector: {\n        matchLabels: {\n          app: ''\n        }\n      },\n      strategy: {\n        type: 'RollingUpdate',\n        rollingUpdate: {\n          maxSurge: 0,\n          maxUnavailable: '100%'\n        }\n      },\n      template: {\n        metadata: {\n          labels: {\n            app: ''\n          }\n        },\n        spec: {\n          affinity: {},\n          containers: [{\n            name: '',\n            image: '',\n            env: [],\n            resources: {\n              limits: {},\n              requests: {}\n            },\n            volumeMounts: []\n          }],\n          volumes: []\n        }\n      }\n    }\n  };\n}//# sourceURL=webpack-internal:///61005\n");

}),

30754:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/pod/converter */ 22050);\n\n\n\n\n\nclass KubernetesPodService {\n  /* @ngInject */\n  constructor($async, KubernetesPods) {\n    this.$async = $async;\n    this.KubernetesPods = KubernetesPods;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.logsAsync = this.logsAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.evictionAsync = this.evictionAsync.bind(this);\n  }\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesPods(namespace).get(params).$promise, this.KubernetesPods(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: raw,\n        Yaml: yaml.data\n      };\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve pod', err);\n    }\n  }\n  /**\n   * GET ALL\n   */\n\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesPods(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve pods', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * Logs\n   *\n   * @param {string} namespace\n   * @param {string} podName\n   * @param {string} containerName\n   */\n\n\n  async logsAsync(namespace, podName, containerName) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = podName;\n\n      if (containerName) {\n        params.container = containerName;\n      }\n\n      const data = await this.KubernetesPods(namespace).logs(params).$promise;\n      return data.logs;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve pod logs', err);\n    }\n  }\n\n  logs(namespace, podName, containerName) {\n    return this.$async(this.logsAsync, namespace, podName, containerName);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldPod, newPod) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = newPod.Name;\n      const namespace = newPod.Namespace;\n      const payload = Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldPod, newPod);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesPods(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to patch pod', err);\n    }\n  }\n\n  patch(oldPod, newPod) {\n    return this.$async(this.patchAsync, oldPod, newPod);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(pod) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = pod.Name;\n      const namespace = pod.Namespace;\n      await this.KubernetesPods(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to remove pod', err);\n    }\n  }\n\n  delete(pod) {\n    return this.$async(this.deleteAsync, pod);\n  }\n  /**\n   * EVICT\n   */\n\n\n  async evictionAsync(pod) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = pod.Name;\n      params.action = 'eviction';\n      const namespace = pod.Namespace;\n      const podEvictionPayload = Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].evictionPayload(pod);\n      await this.KubernetesPods(namespace).evict(params, podEvictionPayload).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to evict pod', err);\n    }\n  }\n\n  eviction(pod) {\n    return this.$async(this.evictionAsync, pod);\n  }\n\n}\n\nKubernetesPodService.$inject = [\"$async\", \"KubernetesPods\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesPodService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesPodService', KubernetesPodService);//# sourceURL=webpack-internal:///30754\n");

}),

87658:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kube_registry_access_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kube-registry-access-view */ 51482);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes.registries', []).component('kubernetesRegistryAccessView', _kube_registry_access_view__WEBPACK_IMPORTED_MODULE_1__.kubernetesRegistryAccessView).name);//# sourceURL=webpack-internal:///87658\n");

}),

51482:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"kubernetesRegistryAccessView\": function() { return /* binding */ kubernetesRegistryAccessView; }\n/* harmony export */ });\n/* harmony import */ var _kube_registry_access_view_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-registry-access-view.controller */ 60124);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kube-registry-access-view.html */ 2780);\n\n\nconst kubernetesRegistryAccessView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kube_registry_access_view_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n};//# sourceURL=webpack-internal:///51482\n");

}),

60124:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesRegistryAccessController; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\nclass KubernetesRegistryAccessController {\n  /* @ngInject */\n  constructor($async, $scope, $state, ModalService, EndpointService, Notifications, RegistryService, KubernetesResourcePoolService) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.$state = $state;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.RegistryService = RegistryService;\n    this.EndpointService = EndpointService;\n    this.state = {\n      actionInProgress: false\n    };\n    this.selectedResourcePools = [];\n    this.resourcePools = [];\n    this.savedResourcePools = [];\n    this.handleRemove = this.handleRemove.bind(this);\n    this.onChangeResourcePools = this.onChangeResourcePools.bind(this);\n  }\n\n  async submit() {\n    return this.updateNamespaces([...this.savedResourcePools.map(({\n      value\n    }) => value), ...this.selectedResourcePools]);\n  }\n\n  handleRemove(namespaces) {\n    const removeNamespaces = namespaces.map(({\n      value\n    }) => value);\n    const nsToUpdate = this.savedResourcePools.map(({\n      value\n    }) => value).filter(value => !removeNamespaces.includes(value));\n    const displayedMessage = 'This registry might be used by one or more applications inside this environment. Removing the registry access could lead to a service interruption for these applications.<br/><br/>Do you wish to continue?';\n    this.ModalService.confirmDeletion(displayedMessage, confirmed => {\n      if (confirmed) {\n        return this.updateNamespaces(nsToUpdate);\n      }\n    });\n  }\n\n  updateNamespaces(namespaces) {\n    return this.$async(async () => {\n      try {\n        await this.EndpointService.updateRegistryAccess(this.endpoint.Id, this.registry.Id, {\n          namespaces\n        });\n        this.$state.reload(this.$state.current);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed saving registry access');\n      }\n    });\n  }\n\n  onChangeResourcePools(resourcePools) {\n    return this.$scope.$evalAsync(() => {\n      this.selectedResourcePools = resourcePools;\n    });\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      try {\n        this.state = {\n          registryId: this.$state.params.id\n        };\n        this.registry = await this.RegistryService.registry(this.state.registryId, this.endpoint.Id);\n\n        if (this.registry.RegistryAccesses && this.registry.RegistryAccesses[this.endpoint.Id]) {\n          this.savedResourcePools = this.registry.RegistryAccesses[this.endpoint.Id].Namespaces.map(value => ({\n            value\n          }));\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registry details');\n      }\n\n      try {\n        const resourcePools = await this.KubernetesResourcePoolService.get();\n        this.resourcePools = resourcePools.filter(pool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSystemNamespace(pool.Namespace.Name) && !this.savedResourcePools.find(({\n          value\n        }) => value === pool.Namespace.Name)).map(pool => ({\n          name: pool.Namespace.Name,\n          id: pool.Namespace.Id\n        }));\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve namespaces');\n      }\n    });\n  }\n\n}\nKubernetesRegistryAccessController.$inject = [\"$async\", \"$scope\", \"$state\", \"ModalService\", \"EndpointService\", \"Notifications\", \"RegistryService\", \"KubernetesResourcePoolService\"];//# sourceURL=webpack-internal:///60124\n");

}),

83972:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesConfigMaps', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesConfigMapsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/configmaps/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///83972\n");

}),

20017:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesControllerRevisions', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesControllerRevisionsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/controllerrevisions/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///20017\n");

}),

38345:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesDaemonSets', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesDaemonSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/daemonsets/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      rollback: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/strategic-merge-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///38345\n");

}),

36566:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesDeployments', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesDeploymentsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/deployments/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      rollback: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///36566\n");

}),

85333:

(function() {

eval("angular.module('portainer.kubernetes').factory('KubernetesEndpoints', [\"$resource\", \"API_ENDPOINT_ENDPOINTS\", \"EndpointProvider\", function KubernetesEndpointsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/endpoints/:id';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///85333\n");

}),

69673:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesEvents', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesEventsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/events/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///69673\n");

}),

71461:

(function() {

eval("angular.module('portainer.kubernetes').factory('KubernetesHealth', ['$resource', 'API_ENDPOINT_ENDPOINTS', function KubernetesHealthFactory($resource, API_ENDPOINT_ENDPOINTS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:id/kubernetes/healthz', {}, {\n    ping: {\n      method: 'GET',\n      params: {\n        id: 'id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///71461\n");

}),

82475:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesNamespaces', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesNamespacesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function () {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1/namespaces/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      getJSON: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/json'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      delete: {\n        method: 'DELETE'\n      },\n      status: {\n        method: 'GET',\n        params: {\n          action: 'status'\n        },\n        ignoreLoadingBar: true\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///82475\n");

}),

40912:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nKubernetesNodesLimitsFactory.$inject = [\"$resource\", \"API_ENDPOINT_KUBERNETES\", \"EndpointProvider\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').factory('KubernetesNodesLimits', KubernetesNodesLimitsFactory);\n/* @ngInject */\n\nfunction KubernetesNodesLimitsFactory($resource, API_ENDPOINT_KUBERNETES, EndpointProvider) {\n  const url = API_ENDPOINT_KUBERNETES + '/:endpointId/nodes_limits';\n  return $resource(url, {\n    endpointId: EndpointProvider.endpointID\n  }, {\n    get: {\n      method: 'GET',\n      ignoreLoadingBar: true,\n      transformResponse: data => ({\n        data: JSON.parse(data)\n      })\n    }\n  });\n}//# sourceURL=webpack-internal:///40912\n");

}),

58732:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesPersistentVolumeClaims', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesPersistentVolumeClaimsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/persistentvolumeclaims/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///58732\n");

}),

83699:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n/* harmony import */ var Docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Docker/rest/response/handlers */ 12944);\n\n\nangular.module('portainer.kubernetes').factory('KubernetesPods', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesPodsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/pods/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      delete: {\n        method: 'DELETE'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      logs: {\n        method: 'GET',\n        params: {\n          action: 'log'\n        },\n        transformResponse: Docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__.logsHandler\n      },\n      evict: {\n        method: 'POST'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///83699\n");

}),

93449:

(function() {

eval("KubernetesPortainerNamespacesFactory.$inject = [\"$resource\"];\nangular.module('portainer.kubernetes').factory('KubernetesPortainerNamespaces', KubernetesPortainerNamespacesFactory);\n\nfunction KubernetesPortainerNamespacesFactory($resource) {\n  const url = '/api/kubernetes/:endpointId/namespaces/:namespaceName/:action';\n  return $resource(url, {}, {\n    toggleSystem: {\n      method: 'PUT',\n      params: {\n        action: 'system'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///93449\n");

}),

81056:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesReplicaSets', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesReplicaSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/replicasets/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///81056\n");

}),

10129:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesResourceQuotas', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesResourceQuotasFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/resourcequotas/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///10129\n");

}),

25658:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rawResponse\": function() { return /* binding */ rawResponse; }\n/* harmony export */ });\n// Returns the raw response without JSON parsing\nfunction rawResponse(data) {\n  const response = {\n    data: data\n  };\n  return response;\n}//# sourceURL=webpack-internal:///25658\n");

}),

61588:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesSecrets', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesSecretsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/secrets/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///61588\n");

}),

68376:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesServices', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesServicesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/services/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///68376\n");

}),

13535:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getServiceAccounts\": function() { return /* binding */ getServiceAccounts; }\n/* harmony export */ });\n/* harmony import */ var _portainer_services_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/services/axios */ 6811);\n\nasync function getServiceAccounts(environmentId, namespaceId) {\n  try {\n    const {\n      data: {\n        items\n      }\n    } = await _portainer_services_axios__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(urlBuilder(environmentId, namespaceId));\n    return items;\n  } catch (error) {\n    throw (0,_portainer_services_axios__WEBPACK_IMPORTED_MODULE_0__.parseAxiosError)(error);\n  }\n}\n\nfunction urlBuilder(environmentId, namespaceId) {\n  return `endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespaceId}/serviceaccounts`;\n}//# sourceURL=webpack-internal:///13535\n");

}),

55594:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesStatefulSets', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesStatefulSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function (namespace) {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/statefulsets/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID,\n      namespace: namespace\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      rollback: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/strategic-merge-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///55594\n");

}),

33415:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/rest/response/transform */ 25658);\n\nangular.module('portainer.kubernetes').factory('KubernetesStorage', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function KubernetesStorageFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n  'use strict';\n\n  return function () {\n    const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/storage.k8s.io/v1/storageclasses/:id/:action';\n    return $resource(url, {\n      endpointId: EndpointProvider.endpointID\n    }, {\n      get: {\n        method: 'GET',\n        ignoreLoadingBar: true\n      },\n      getYaml: {\n        method: 'GET',\n        headers: {\n          Accept: 'application/yaml'\n        },\n        transformResponse: Kubernetes_rest_response_transform__WEBPACK_IMPORTED_MODULE_0__.rawResponse,\n        ignoreLoadingBar: true\n      },\n      create: {\n        method: 'POST'\n      },\n      update: {\n        method: 'PUT'\n      },\n      patch: {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json-patch+json'\n        }\n      },\n      delete: {\n        method: 'DELETE'\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///33415\n");

}),

94358:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_application_rollback__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/helpers/application/rollback */ 65011);\n/* harmony import */ var Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/converters/application */ 10293);\n/* harmony import */ var Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/models/deployment/models */ 59238);\n/* harmony import */ var Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/models/stateful-set/models */ 91920);\n/* harmony import */ var Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Kubernetes/models/daemon-set/models */ 12745);\n/* harmony import */ var Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Kubernetes/helpers/serviceHelper */ 57637);\n/* harmony import */ var Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Kubernetes/horizontal-pod-auto-scaler/helper */ 1239);\n/* harmony import */ var Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Kubernetes/horizontal-pod-auto-scaler/converter */ 41247);\n/* harmony import */ var Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Kubernetes/pod/converter */ 22050);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesApplicationService {\n  /* #region  CONSTRUCTOR */\n\n  /* @ngInject */\n  constructor($async, Authentication, KubernetesDeploymentService, KubernetesDaemonSetService, KubernetesStatefulSetService, KubernetesServiceService, KubernetesSecretService, KubernetesPersistentVolumeClaimService, KubernetesNamespaceService, KubernetesPodService, KubernetesHistoryService, KubernetesHorizontalPodAutoScalerService, KubernetesIngressService) {\n    this.$async = $async;\n    this.Authentication = Authentication;\n    this.KubernetesDeploymentService = KubernetesDeploymentService;\n    this.KubernetesDaemonSetService = KubernetesDaemonSetService;\n    this.KubernetesStatefulSetService = KubernetesStatefulSetService;\n    this.KubernetesServiceService = KubernetesServiceService;\n    this.KubernetesSecretService = KubernetesSecretService;\n    this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n    this.KubernetesNamespaceService = KubernetesNamespaceService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.KubernetesHistoryService = KubernetesHistoryService;\n    this.KubernetesHorizontalPodAutoScalerService = KubernetesHorizontalPodAutoScalerService;\n    this.KubernetesIngressService = KubernetesIngressService;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.patchPartialAsync = this.patchPartialAsync.bind(this);\n    this.rollbackAsync = this.rollbackAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /* #endregion */\n\n  /* #region  UTILS */\n\n\n  _getApplicationApiService(app) {\n    let apiService;\n\n    if (app instanceof Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_14__.KubernetesDeployment || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DEPLOYMENT) {\n      apiService = this.KubernetesDeploymentService;\n    } else if (app instanceof Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_16__.KubernetesDaemonSet || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.DAEMONSET) {\n      apiService = this.KubernetesDaemonSetService;\n    } else if (app instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesStatefulSet || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.STATEFULSET) {\n      apiService = this.KubernetesStatefulSetService;\n    } else if (app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationTypes.POD) {\n      apiService = this.KubernetesPodService;\n    } else {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('Unable to determine which association to use to retrieve API Service');\n    }\n\n    return apiService;\n  }\n  /* #endregion */\n\n  /* #region  GET */\n\n\n  async getAsync(namespace, name) {\n    const [deployment, daemonSet, statefulSet, pod, pods, autoScalers, ingresses] = await Promise.allSettled([this.KubernetesDeploymentService.get(namespace, name), this.KubernetesDaemonSetService.get(namespace, name), this.KubernetesStatefulSetService.get(namespace, name), this.KubernetesPodService.get(namespace, name), this.KubernetesPodService.get(namespace), this.KubernetesHorizontalPodAutoScalerService.get(namespace), this.KubernetesIngressService.get(namespace)]);\n    let rootItem;\n    let converterFunc;\n\n    if (deployment.status === 'fulfilled') {\n      rootItem = deployment;\n      converterFunc = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiDeploymentToApplication;\n    } else if (daemonSet.status === 'fulfilled') {\n      rootItem = daemonSet;\n      converterFunc = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiDaemonSetToApplication;\n    } else if (statefulSet.status === 'fulfilled') {\n      rootItem = statefulSet;\n      converterFunc = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiStatefulSetToapplication;\n    } else if (pod.status === 'fulfilled') {\n      rootItem = pod;\n      converterFunc = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiPodToApplication;\n    } else {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('Unable to determine which association to use to convert application');\n    }\n\n    const services = await this.KubernetesServiceService.get(namespace);\n    const boundService = Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_17__[\"default\"].findApplicationBoundService(services, rootItem.value.Raw);\n    const service = boundService ? await this.KubernetesServiceService.get(namespace, boundService.metadata.name) : {};\n    const boundServices = Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_17__[\"default\"].findApplicationBoundServices(services, rootItem.value.Raw);\n    const application = converterFunc(rootItem.value.Raw, pods.value, service.Raw, ingresses.value);\n    application.Yaml = rootItem.value.Yaml;\n    application.Raw = rootItem.value.Raw;\n    application.Pods = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(application.Pods, item => Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_20__[\"default\"].apiToModel(item));\n    application.Containers = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_11__[\"default\"].associateContainersAndApplication(application);\n    application.Services = boundServices;\n    const boundScaler = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__.KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers.value, application);\n    const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(namespace, boundScaler.Name) : undefined;\n    application.AutoScaler = scaler;\n    application.Ingresses = ingresses;\n    await this.KubernetesHistoryService.get(application);\n\n    if (service.Yaml) {\n      application.Yaml += '---\\n' + service.Yaml;\n    }\n\n    if (scaler && scaler.Yaml) {\n      application.Yaml += '---\\n' + scaler.Yaml;\n    } // TODO: refactor @LP\n    // append ingress yaml ?\n\n\n    return application;\n  }\n\n  async getAllAsync(namespace) {\n    const namespaces = namespace ? [namespace] : lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(await this.KubernetesNamespaceService.get(), 'Name');\n\n    const convertToApplication = (item, converterFunc, services, pods, ingresses) => {\n      const service = Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_17__[\"default\"].findApplicationBoundService(services, item);\n      const servicesFound = Kubernetes_helpers_serviceHelper__WEBPACK_IMPORTED_MODULE_17__[\"default\"].findApplicationBoundServices(services, item);\n      const application = converterFunc(item, pods, service, ingresses);\n      application.Containers = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_11__[\"default\"].associateContainersAndApplication(application);\n      application.Services = servicesFound;\n      return application;\n    };\n\n    const res = await Promise.all(lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(namespaces, async ns => {\n      const [deployments, daemonSets, statefulSets, services, pods, ingresses, autoScalers] = await Promise.all([this.KubernetesDeploymentService.get(ns), this.KubernetesDaemonSetService.get(ns), this.KubernetesStatefulSetService.get(ns), this.KubernetesServiceService.get(ns), this.KubernetesPodService.get(ns), this.KubernetesIngressService.get(ns), this.KubernetesHorizontalPodAutoScalerService.get(ns)]);\n\n      const deploymentApplications = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(deployments, item => convertToApplication(item, Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiDeploymentToApplication, services, pods, ingresses));\n\n      const daemonSetApplications = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(daemonSets, item => convertToApplication(item, Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiDaemonSetToApplication, services, pods, ingresses));\n\n      const statefulSetApplications = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(statefulSets, item => convertToApplication(item, Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiStatefulSetToapplication, services, pods, ingresses));\n\n      const boundPods = lodash_es_concat__WEBPACK_IMPORTED_MODULE_6___default()(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5___default()(deploymentApplications, 'Pods'), lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5___default()(daemonSetApplications, 'Pods'), lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_5___default()(statefulSetApplications, 'Pods'));\n\n      const unboundPods = lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default()(pods, ...boundPods);\n\n      const nakedPodsApplications = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(unboundPods, item => convertToApplication(item, Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].apiPodToApplication, services, pods, ingresses));\n\n      const applications = lodash_es_concat__WEBPACK_IMPORTED_MODULE_6___default()(deploymentApplications, daemonSetApplications, statefulSetApplications, nakedPodsApplications);\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default()(applications, app => {\n        app.Pods = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(app.Pods, item => Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_20__[\"default\"].apiToModel(item));\n      });\n\n      await Promise.all(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default()(applications, async application => {\n        const boundScaler = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__.KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers, application);\n        const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(ns, boundScaler.Name) : undefined;\n        application.AutoScaler = scaler;\n        application.Ingresses = await this.KubernetesIngressService.get(ns);\n      }));\n      return applications;\n    }));\n    return lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default()(res);\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /* #endregion */\n\n  /* #region  CREATE */\n  // TODO: review\n  // resource creation flow\n  // should we keep formValues > Resource_1 || Resource_2\n  // or should we switch to formValues > Composite > Resource_1 || Resource_2\n\n  /**\n   * NOTE: Keep this method flow in sync with `getCreatedApplicationResources` method in the `applicationService` file\n   *    To synchronise with kubernetes resource creation summary output, any new resources created in this method should\n   *    also be displayed in the summary output (getCreatedApplicationResources)\n   */\n\n\n  async createAsync(formValues) {\n    // formValues -> Application\n    let [app, headlessService, services,, claims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].applicationFormValuesToApplication(formValues);\n\n    if (services) {\n      services.forEach(async service => {\n        try {\n          await this.KubernetesServiceService.create(service);\n        } catch (error) {\n          (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to create service', error);\n        }\n      });\n    }\n\n    const apiService = this._getApplicationApiService(app);\n\n    if (app instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesStatefulSet) {\n      app.VolumeClaims = claims;\n\n      try {\n        headlessService = await this.KubernetesServiceService.create(headlessService);\n      } catch (error) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to create service', error);\n      }\n\n      app.ServiceName = headlessService.metadata.name;\n    } else {\n      const claimPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(claims, item => {\n        if (!item.PreviousName && !item.Id) {\n          return this.KubernetesPersistentVolumeClaimService.create(item);\n        }\n      });\n\n      await Promise.all(lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default()(claimPromises, undefined));\n    }\n\n    if (formValues.AutoScaler.IsUsed && formValues.DeploymentType !== Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesApplicationDeploymentTypes.GLOBAL) {\n      const kind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n      const autoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_19__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(formValues, kind);\n      await this.KubernetesHorizontalPodAutoScalerService.create(autoScaler);\n    }\n\n    await apiService.create(app);\n  }\n\n  create(formValues) {\n    return this.$async(this.createAsync, formValues);\n  }\n  /* #endregion */\n\n  /* #region  PATCH */\n  // this function accepts KubernetesApplicationFormValues as parameters\n\n  /**\n   * NOTE: Keep this method flow in sync with `getUpdatedApplicationResources` method in the `applicationService` file\n   *    To synchronise with kubernetes resource creation, update and delete summary output, any new resources created\n   *    in this method should also be displayed in the summary output (getUpdatedApplicationResources)\n   */\n\n\n  async patchAsync(oldFormValues, newFormValues) {\n    const [oldApp, oldHeadlessService, oldServices,, oldClaims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].applicationFormValuesToApplication(oldFormValues);\n    const [newApp, newHeadlessService, newServices,, newClaims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].applicationFormValuesToApplication(newFormValues);\n\n    const oldApiService = this._getApplicationApiService(oldApp);\n\n    const newApiService = this._getApplicationApiService(newApp);\n\n    if (oldApiService !== newApiService) {\n      // delete services first\n      if (oldServices) {\n        await this.KubernetesServiceService.delete(oldServices);\n      } // delete the app\n\n\n      await this.delete(oldApp); // sleep for 5 seconds to allow the app/services to be deleted\n\n      await new Promise(r => setTimeout(r, 5000)); // create the app\n\n      return await this.create(newFormValues);\n    }\n\n    if (newApp instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesStatefulSet) {\n      try {\n        await this.KubernetesServiceService.patch(oldHeadlessService, newHeadlessService);\n      } catch (error) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to update service', error);\n      }\n    } else {\n      const claimPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(newClaims, newClaim => {\n        if (!newClaim.PreviousName && !newClaim.Id) {\n          return this.KubernetesPersistentVolumeClaimService.create(newClaim);\n        } else if (!newClaim.Id) {\n          const oldClaim = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(oldClaims, {\n            Name: newClaim.PreviousName\n          });\n\n          return this.KubernetesPersistentVolumeClaimService.patch(oldClaim, newClaim);\n        }\n      });\n\n      await Promise.all(claimPromises);\n    }\n\n    await newApiService.patch(oldApp, newApp); // Create services\n\n    if (oldServices.length === 0 && newServices.length !== 0) {\n      newServices.forEach(async service => {\n        try {\n          await this.KubernetesServiceService.create(service);\n        } catch (error) {\n          (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to create service', error);\n        }\n      });\n    } // Delete services ( only called when all services been deleted )\n\n\n    if (oldServices.length !== 0 && newServices.length === 0) {\n      await this.KubernetesServiceService.deleteAll(oldServices);\n    } // Patch services ( Action including: Delete, Update, Create )\n\n\n    if (oldServices.length !== 0 && newServices.length !== 0) {\n      oldServices.forEach(async oldService => {\n        const newServiceMatched = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(newServices, {\n          Name: oldService.Name\n        });\n\n        if (!newServiceMatched) {\n          await this.KubernetesServiceService.deleteSingle(oldService);\n        }\n      });\n      newServices.forEach(async newService => {\n        const oldServiceMatched = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(oldServices, {\n          Name: newService.Name\n        });\n\n        if (oldServiceMatched) {\n          try {\n            await this.KubernetesServiceService.patch(oldServiceMatched, newService);\n          } catch (error) {\n            (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to update service', error);\n          }\n        } else {\n          try {\n            await this.KubernetesServiceService.create(newService);\n          } catch (error) {\n            (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_21__.notifyError)('Unable to create service', error);\n          }\n        }\n      });\n    }\n\n    const newKind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(newApp);\n    const newAutoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_19__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(newFormValues, newKind);\n\n    if (!oldFormValues.AutoScaler.IsUsed) {\n      if (newFormValues.AutoScaler.IsUsed) {\n        await this.KubernetesHorizontalPodAutoScalerService.create(newAutoScaler);\n      }\n    } else {\n      const oldKind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_18__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(oldApp);\n      const oldAutoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_19__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(oldFormValues, oldKind);\n\n      if (newFormValues.AutoScaler.IsUsed) {\n        await this.KubernetesHorizontalPodAutoScalerService.patch(oldAutoScaler, newAutoScaler);\n      } else {\n        await this.KubernetesHorizontalPodAutoScalerService.delete(oldAutoScaler);\n      }\n    }\n  } // this function accepts KubernetesApplication as parameters\n\n\n  async patchPartialAsync(oldApp, newApp) {\n    const oldAppPayload = {\n      Name: oldApp.Name,\n      Namespace: oldApp.ResourcePool,\n      StackName: oldApp.StackName,\n      Note: oldApp.Note\n    };\n    const newAppPayload = {\n      Name: newApp.Name,\n      Namespace: newApp.ResourcePool,\n      StackName: newApp.StackName,\n      Note: newApp.Note\n    };\n\n    const apiService = this._getApplicationApiService(oldApp);\n\n    await apiService.patch(oldAppPayload, newAppPayload);\n  } // accept either formValues or applications as parameters depending on partial value\n  // true = KubernetesApplication\n  // false = KubernetesApplicationFormValues\n  //\n  // 例如 signatures are\n  //\n  // patch(oldValues: KubernetesApplication, newValues: KubernetesApplication, partial: (undefined | false)): Promise<unknown>\n  // patch(oldValues: KubernetesApplicationFormValues, newValues: KubernetesApplicationFormValues, partial: true): Promise<unknown>\n\n\n  patch(oldValues, newValues, partial = false) {\n    if (partial) {\n      return this.$async(this.patchPartialAsync, oldValues, newValues);\n    }\n\n    return this.$async(this.patchAsync, oldValues, newValues);\n  }\n  /* #endregion */\n\n  /* #region  DELETE */\n\n\n  async deleteAsync(application) {\n    const payload = {\n      Namespace: application.ResourcePool || application.Namespace,\n      Name: application.Name\n    };\n    const servicePayload = angular__WEBPACK_IMPORTED_MODULE_8___default().copy(payload);\n    servicePayload.Name = application.Name;\n\n    const apiService = this._getApplicationApiService(application);\n\n    await apiService.delete(payload);\n\n    if (apiService === this.KubernetesStatefulSetService) {\n      const headlessServicePayload = angular__WEBPACK_IMPORTED_MODULE_8___default().copy(payload);\n      headlessServicePayload.Name = application instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesStatefulSet ? application.ServiceName : application.HeadlessServiceName;\n    }\n\n    if (application.ServiceType) {\n      // delete headless service && non-headless service\n      await this.KubernetesServiceService.delete(application.Services);\n    }\n\n    if (!lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default()(application.AutoScaler)) {\n      await this.KubernetesHorizontalPodAutoScalerService.delete(application.AutoScaler);\n    }\n  }\n\n  delete(application) {\n    return this.$async(this.deleteAsync, application);\n  }\n  /* #endregion */\n\n  /* #region  ROLLBACK */\n\n\n  async rollbackAsync(application, targetRevision) {\n    const payload = Kubernetes_helpers_application_rollback__WEBPACK_IMPORTED_MODULE_12__[\"default\"].getPatchPayload(application, targetRevision);\n\n    const apiService = this._getApplicationApiService(application);\n\n    await apiService.rollback(application.ResourcePool, application.Name, payload);\n  }\n\n  rollback(application, targetRevision) {\n    return this.$async(this.rollbackAsync, application, targetRevision);\n  }\n  /* #endregion */\n\n\n}\n\nKubernetesApplicationService.$inject = [\"$async\", \"Authentication\", \"KubernetesDeploymentService\", \"KubernetesDaemonSetService\", \"KubernetesStatefulSetService\", \"KubernetesServiceService\", \"KubernetesSecretService\", \"KubernetesPersistentVolumeClaimService\", \"KubernetesNamespaceService\", \"KubernetesPodService\", \"KubernetesHistoryService\", \"KubernetesHorizontalPodAutoScalerService\", \"KubernetesIngressService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationService);\nangular__WEBPACK_IMPORTED_MODULE_8___default().module('portainer.kubernetes').service('KubernetesApplicationService', KubernetesApplicationService);//# sourceURL=webpack-internal:///94358\n");

}),

45819:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/get */ 6632);\n/* harmony import */ var lodash_es_get__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_get__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/converters/configMap */ 40654);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/config-map/models */ 13978);\n\n\n\n\n\n\n\n\nclass KubernetesConfigMapService {\n  /* @ngInject */\n  constructor($async, KubernetesConfigMaps) {\n    this.$async = $async;\n    this.KubernetesConfigMaps = KubernetesConfigMaps;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.updateAsync = this.updateAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n\n  getAccess(namespace, name) {\n    return this.$async(async () => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__.KubernetesCommonParams();\n        params.id = name;\n        const raw = await this.KubernetesConfigMaps(namespace).get(params).$promise;\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToPortainerAccessConfigMap(raw);\n      } catch (err) {\n        if (err.status === 404) {\n          return new Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesPortainerAccessConfigMap();\n        }\n\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve Portainer accesses', err);\n      }\n    });\n  }\n\n  createAccess(config) {\n    return this.$async(async () => {\n      try {\n        const payload = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createAccessPayload(config);\n        const params = {};\n        const namespace = payload.metadata.namespace;\n        const data = await this.KubernetesConfigMaps(namespace).create(params, payload).$promise;\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToPortainerAccessConfigMap(data);\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to create Portainer accesses', err);\n      }\n    });\n  }\n\n  updateAccess(config) {\n    return this.$async(async () => {\n      try {\n        if (!config.Id) {\n          return await this.createAccess(config);\n        }\n\n        const payload = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].updateAccessPayload(config);\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__.KubernetesCommonParams();\n        params.id = payload.metadata.name;\n        const namespace = payload.metadata.namespace;\n        const data = await this.KubernetesConfigMaps(namespace).update(params, payload).$promise;\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToPortainerAccessConfigMap(data);\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to update Portainer accesses', err);\n      }\n    });\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__.KubernetesCommonParams();\n      params.id = name;\n      const [rawPromise, yamlPromise] = await Promise.allSettled([this.KubernetesConfigMaps(namespace).get(params).$promise, this.KubernetesConfigMaps(namespace).getYaml(params).$promise]);\n\n      if (lodash_es_get__WEBPACK_IMPORTED_MODULE_1___default()(rawPromise, 'reason.status') === 404 && lodash_es_get__WEBPACK_IMPORTED_MODULE_1___default()(yamlPromise, 'reason.status') === 404) {\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].defaultConfigMap(namespace, name);\n      } // Saving binary data to 'data' field in configMap Object is not allowed by kubernetes and getYaml() may get\n      // an error. We should keep binary data to 'binaryData' field instead of 'data'. Before that, we\n      // use response from get() and ignore 500 error as a workaround.\n\n\n      if (rawPromise.value) {\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToConfigMap(rawPromise.value, yamlPromise.value);\n      }\n\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve config map ', name);\n    } catch (err) {\n      if (err.status === 404) {\n        return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].defaultConfigMap(namespace, name);\n      }\n\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve config map', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesConfigMaps(namespace).get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToConfigMap(item));\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to retrieve config maps', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(config) {\n    try {\n      const payload = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createPayload(config);\n      const params = {};\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesConfigMaps(namespace).create(params, payload).$promise;\n      return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToConfigMap(data);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to create config map', err);\n    }\n  }\n\n  create(config) {\n    return this.$async(this.createAsync, config);\n  }\n  /**\n   * UPDATE\n   */\n\n\n  async updateAsync(config) {\n    try {\n      if (!config.Id) {\n        return await this.create(config);\n      }\n\n      const payload = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].updatePayload(config);\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__.KubernetesCommonParams();\n      params.id = payload.metadata.name;\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesConfigMaps(namespace).update(params, payload).$promise;\n      return Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToConfigMap(data);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to update config map', err);\n    }\n  }\n\n  update(config) {\n    return this.$async(this.updateAsync, config);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(config) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_5__.KubernetesCommonParams();\n      params.id = config.Name;\n      const namespace = config.Namespace;\n      await this.KubernetesConfigMaps(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unable to delete config map', err);\n    }\n  }\n\n  delete(config) {\n    return this.$async(this.deleteAsync, config);\n  }\n\n}\n\nKubernetesConfigMapService.$inject = [\"$async\", \"KubernetesConfigMaps\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigMapService);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').service('KubernetesConfigMapService', KubernetesConfigMapService);//# sourceURL=webpack-internal:///45819\n");

}),

81567:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/converters/configuration */ 10241);\n/* harmony import */ var Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/converters/configMap */ 40654);\n/* harmony import */ var Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/converters/secret */ 52341);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/helpers/commonHelper */ 61515);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigurationService {\n  /* @ngInject */\n  constructor($async, Authentication, KubernetesNamespaceService, KubernetesConfigMapService, KubernetesSecretService) {\n    this.$async = $async;\n    this.Authentication = Authentication;\n    this.KubernetesNamespaceService = KubernetesNamespaceService;\n    this.KubernetesConfigMapService = KubernetesConfigMapService;\n    this.KubernetesSecretService = KubernetesSecretService;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.updateAsync = this.updateAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    const [configMap, secret] = await Promise.allSettled([this.KubernetesConfigMapService.get(namespace, name), this.KubernetesSecretService.get(namespace, name)]);\n    let configuration;\n\n    if (secret.status === 'fulfilled') {\n      configuration = Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_4__[\"default\"].secretToConfiguration(secret.value);\n      return configuration;\n    }\n\n    configuration = Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_4__[\"default\"].configMapToConfiguration(configMap.value);\n    return configuration;\n  }\n\n  async getAllAsync(namespace) {\n    const namespaces = namespace ? [namespace] : lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(await this.KubernetesNamespaceService.get(), 'Name');\n    const res = await Promise.all(lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(namespaces, async ns => {\n      const [configMaps, secrets] = await Promise.all([this.KubernetesConfigMapService.get(ns), this.KubernetesSecretService.get(ns)]);\n\n      const secretsConfigurations = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(secrets, secret => Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_4__[\"default\"].secretToConfiguration(secret));\n\n      const configMapsConfigurations = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(configMaps, configMap => Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_4__[\"default\"].configMapToConfiguration(configMap));\n\n      return lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(configMapsConfigurations, secretsConfigurations);\n    }));\n    return lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0___default()(res);\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(formValues) {\n    formValues.ConfigurationOwner = Kubernetes_helpers_commonHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].ownerToLabel(formValues.ConfigurationOwner);\n\n    if (formValues.Kind === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationKinds.CONFIGMAP) {\n      const configMap = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_5__[\"default\"].configurationFormValuesToConfigMap(formValues);\n      await this.KubernetesConfigMapService.create(configMap);\n    } else {\n      const secret = Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_6__[\"default\"].configurationFormValuesToSecret(formValues);\n      await this.KubernetesSecretService.create(secret);\n    }\n  }\n\n  create(formValues) {\n    return this.$async(this.createAsync, formValues);\n  }\n  /**\n   * UPDATE\n   */\n\n\n  async updateAsync(formValues, configuration) {\n    if (formValues.Kind === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationKinds.CONFIGMAP) {\n      const configMap = Kubernetes_converters_configMap__WEBPACK_IMPORTED_MODULE_5__[\"default\"].configurationFormValuesToConfigMap(formValues);\n      configMap.ConfigurationOwner = configuration.ConfigurationOwner;\n      await this.KubernetesConfigMapService.update(configMap);\n    } else {\n      const secret = Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_6__[\"default\"].configurationFormValuesToSecret(formValues);\n      secret.ConfigurationOwner = configuration.ConfigurationOwner;\n      await this.KubernetesSecretService.update(secret);\n    }\n  }\n\n  update(formValues, configuration) {\n    return this.$async(this.updateAsync, formValues, configuration);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(config) {\n    if (config.Kind == Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesConfigurationKinds.CONFIGMAP) {\n      await this.KubernetesConfigMapService.delete(config);\n    } else {\n      await this.KubernetesSecretService.delete(config);\n    }\n  }\n\n  delete(config) {\n    return this.$async(this.deleteAsync, config);\n  }\n\n}\n\nKubernetesConfigurationService.$inject = [\"$async\", \"Authentication\", \"KubernetesNamespaceService\", \"KubernetesConfigMapService\", \"KubernetesSecretService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationService);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').service('KubernetesConfigurationService', KubernetesConfigurationService);//# sourceURL=webpack-internal:///81567\n");

}),

40917:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n\n\n\nclass KubernetesControllerRevisionService {\n  /* @ngInject */\n  constructor($async, KubernetesControllerRevisions) {\n    this.$async = $async;\n    this.KubernetesControllerRevisions = KubernetesControllerRevisions;\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesControllerRevisions(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve ControllerRevisions', err);\n    }\n  }\n\n  get(namespace) {\n    return this.$async(this.getAllAsync, namespace);\n  }\n\n}\n\nKubernetesControllerRevisionService.$inject = [\"$async\", \"KubernetesControllerRevisions\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesControllerRevisionService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesControllerRevisionService', KubernetesControllerRevisionService);//# sourceURL=webpack-internal:///40917\n");

}),

42183:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_daemonSet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/daemonSet */ 12512);\n\n\n\n\n\nclass KubernetesDaemonSetService {\n  /* @ngInject */\n  constructor($async, KubernetesDaemonSets) {\n    this.$async = $async;\n    this.KubernetesDaemonSets = KubernetesDaemonSets;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.rollbackAsync = this.rollbackAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesDaemonSets(namespace).get(params).$promise, this.KubernetesDaemonSets(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: raw,\n        Yaml: yaml.data\n      };\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve DaemonSet', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesDaemonSets(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve DaemonSets', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(daemonSet) {\n    try {\n      const params = {};\n      const payload = Kubernetes_converters_daemonSet__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(daemonSet);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesDaemonSets(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to create daemonset', err);\n    }\n  }\n\n  create(daemonSet) {\n    return this.$async(this.createAsync, daemonSet);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldDaemonSet, newDaemonSet) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = newDaemonSet.Name;\n      const namespace = newDaemonSet.Namespace;\n      const payload = Kubernetes_converters_daemonSet__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldDaemonSet, newDaemonSet);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesDaemonSets(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to patch daemonSet', err);\n    }\n  }\n\n  patch(oldDaemonSet, newDaemonSet) {\n    return this.$async(this.patchAsync, oldDaemonSet, newDaemonSet);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(daemonSet) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = daemonSet.Name;\n      const namespace = daemonSet.Namespace;\n      await this.KubernetesDaemonSets(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to remove daemonset', err);\n    }\n  }\n\n  delete(daemonSet) {\n    return this.$async(this.deleteAsync, daemonSet);\n  }\n  /**\n   * ROLLBACK\n   */\n\n\n  async rollbackAsync(namespace, name, payload) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      await this.KubernetesDaemonSets(namespace).rollback(params, payload).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to rollback daemonset', err);\n    }\n  }\n\n  rollback(namespace, name, payload) {\n    return this.$async(this.rollbackAsync, namespace, name, payload);\n  }\n\n}\n\nKubernetesDaemonSetService.$inject = [\"$async\", \"KubernetesDaemonSets\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDaemonSetService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesDaemonSetService', KubernetesDaemonSetService);//# sourceURL=webpack-internal:///42183\n");

}),

18354:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_deployment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/deployment */ 95929);\n\n\n\n\n\nclass KubernetesDeploymentService {\n  /* @ngInject */\n  constructor($async, KubernetesDeployments) {\n    this.$async = $async;\n    this.KubernetesDeployments = KubernetesDeployments;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.rollbackAsync = this.rollbackAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesDeployments(namespace).get(params).$promise, this.KubernetesDeployments(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: raw,\n        Yaml: yaml.data\n      };\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve Deployment', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesDeployments(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve Deployments', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(deployment) {\n    try {\n      const params = {};\n      const payload = Kubernetes_converters_deployment__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(deployment);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesDeployments(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to create deployment', err);\n    }\n  }\n\n  create(deployment) {\n    return this.$async(this.createAsync, deployment);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldDeployment, newDeployment) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = newDeployment.Name;\n      const namespace = newDeployment.Namespace;\n      const payload = Kubernetes_converters_deployment__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldDeployment, newDeployment);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesDeployments(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to patch deployment', err);\n    }\n  }\n\n  patch(oldDeployment, newDeployment) {\n    return this.$async(this.patchAsync, oldDeployment, newDeployment);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(deployment) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = deployment.Name;\n      const namespace = deployment.Namespace;\n      await this.KubernetesDeployments(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to remove deployment', err);\n    }\n  }\n\n  delete(deployment) {\n    return this.$async(this.deleteAsync, deployment);\n  }\n  /**\n   * ROLLBACK\n   */\n\n\n  async rollbackAsync(namespace, name, payload) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      await this.KubernetesDeployments(namespace).rollback(params, payload).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to rollback deployment', err);\n    }\n  }\n\n  rollback(namespace, name, payload) {\n    return this.$async(this.rollbackAsync, namespace, name, payload);\n  }\n\n}\n\nKubernetesDeploymentService.$inject = [\"$async\", \"KubernetesDeployments\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDeploymentService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesDeploymentService', KubernetesDeploymentService);//# sourceURL=webpack-internal:///18354\n");

}),

3855:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_converters_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/event */ 43083);\n\n\n\n\n\nclass KubernetesEventService {\n  /* @ngInject */\n  constructor($async, KubernetesEvents) {\n    this.$async = $async;\n    this.KubernetesEvents = KubernetesEvents;\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesEvents(namespace).get().$promise;\n\n      const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_converters_event__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToEvent(item));\n\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve events', err);\n    }\n  }\n\n  get(namespace) {\n    return this.$async(this.getAllAsync, namespace);\n  }\n\n}\n\nKubernetesEventService.$inject = [\"$async\", \"KubernetesEvents\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesEventService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesEventService', KubernetesEventService);//# sourceURL=webpack-internal:///3855\n");

}),

24717:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n\n\n\nclass KubernetesHealthService {\n  /* @ngInject */\n  constructor($async, KubernetesHealth) {\n    this.$async = $async;\n    this.KubernetesHealth = KubernetesHealth;\n    this.pingAsync = this.pingAsync.bind(this);\n  }\n  /**\n   * PING\n   */\n\n\n  async pingAsync(endpointID) {\n    try {\n      return await this.KubernetesHealth.ping({\n        id: endpointID\n      }).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve environment health', err);\n    }\n  }\n\n  ping(endpointID) {\n    return this.$async(this.pingAsync, endpointID);\n  }\n\n}\n\nKubernetesHealthService.$inject = [\"$async\", \"KubernetesHealth\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesHealthService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesHealthService', KubernetesHealthService);//# sourceURL=webpack-internal:///24717\n");

}),

18842:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_helpers_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/helpers/history */ 70224);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n\n\n\n\n\nclass KubernetesHistoryService {\n  /* @ngInject */\n  constructor($async, KubernetesReplicaSetService, KubernetesControllerRevisionService) {\n    this.$async = $async;\n    this.KubernetesReplicaSetService = KubernetesReplicaSetService;\n    this.KubernetesControllerRevisionService = KubernetesControllerRevisionService;\n    this.getAsync = this.getAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(application) {\n    try {\n      const namespace = application.ResourcePool;\n      let rawRevisions;\n\n      switch (application.ApplicationType) {\n        case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.DEPLOYMENT:\n          rawRevisions = await this.KubernetesReplicaSetService.get(namespace);\n          break;\n\n        case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.DAEMONSET:\n          rawRevisions = await this.KubernetesControllerRevisionService.get(namespace);\n          break;\n\n        case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.STATEFULSET:\n          rawRevisions = await this.KubernetesControllerRevisionService.get(namespace);\n          break;\n\n        case Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationTypes.POD:\n          rawRevisions = [];\n          break;\n\n        default:\n          throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to determine which association to use for history');\n      }\n\n      if (rawRevisions.length) {\n        const [currentRevision, revisionsList] = Kubernetes_helpers_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRevisions(rawRevisions, application);\n        application.CurrentRevision = currentRevision;\n        application.Revisions = revisionsList;\n      }\n\n      return application;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('', err);\n    }\n  }\n\n  get(application) {\n    return this.$async(this.getAsync, application);\n  }\n\n}\n\nKubernetesHistoryService.$inject = [\"$async\", \"KubernetesReplicaSetService\", \"KubernetesControllerRevisionService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesHistoryService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesHistoryService', KubernetesHistoryService);//# sourceURL=webpack-internal:///18842\n");

}),

44987:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_namespace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/converters/namespace */ 2544);\n/* harmony import */ var Kubernetes_store_namespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/store/namespace */ 22823);\n/* harmony import */ var Portainer_services_allSettled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Portainer/services/allSettled */ 67808);\n\n\n\n\n\n\n\n\nclass KubernetesNamespaceService {\n  /* @ngInject */\n  constructor($async, KubernetesNamespaces) {\n    this.$async = $async;\n    this.KubernetesNamespaces = KubernetesNamespaces;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n    this.getJSONAsync = this.getJSONAsync.bind(this);\n    this.updateFinalizeAsync = this.updateFinalizeAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = name;\n      await this.KubernetesNamespaces().status(params).$promise;\n      const [raw, yaml] = await Promise.all([this.KubernetesNamespaces().get(params).$promise, this.KubernetesNamespaces().getYaml(params).$promise]);\n      const ns = Kubernetes_converters_namespace__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToNamespace(raw, yaml);\n      (0,Kubernetes_store_namespace__WEBPACK_IMPORTED_MODULE_5__.updateNamespaces)([ns]);\n      return ns;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve namespace', err);\n    }\n  }\n  /**\n   * GET namesspace in JSON format\n   */\n\n\n  async getJSONAsync(name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = name;\n      await this.KubernetesNamespaces().status(params).$promise;\n      return await this.KubernetesNamespaces().getJSON(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve namespace', err);\n    }\n  }\n  /**\n   * Update finalize\n   */\n\n\n  async updateFinalizeAsync(namespace) {\n    try {\n      return await this.KubernetesNamespaces().update({\n        id: namespace.metadata.name,\n        action: 'finalize'\n      }, namespace).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to update namespace', err);\n    }\n  }\n\n  async getAllAsync() {\n    try {\n      const data = await this.KubernetesNamespaces().get().$promise;\n\n      const promises = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => this.KubernetesNamespaces().status({\n        id: item.metadata.name\n      }).$promise);\n\n      const namespaces = await (0,Portainer_services_allSettled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(promises);\n\n      const allNamespaces = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(namespaces.fulfilled, item => {\n        return Kubernetes_converters_namespace__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToNamespace(item);\n      });\n\n      (0,Kubernetes_store_namespace__WEBPACK_IMPORTED_MODULE_5__.updateNamespaces)(allNamespaces);\n      return allNamespaces;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve namespaces', err);\n    }\n  }\n\n  get(name) {\n    if (name) {\n      return this.$async(this.getAsync, name);\n    }\n\n    return this.$async(this.getAllAsync);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(namespace) {\n    try {\n      const payload = Kubernetes_converters_namespace__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createPayload(namespace);\n      const params = {};\n      const data = await this.KubernetesNamespaces().create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to create namespace', err);\n    }\n  }\n\n  create(namespace) {\n    return this.$async(this.createAsync, namespace);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(namespace) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = namespace.Name;\n      await this.KubernetesNamespaces().delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to delete namespace', err);\n    }\n  }\n\n  delete(namespace) {\n    return this.$async(this.deleteAsync, namespace);\n  }\n\n}\n\nKubernetesNamespaceService.$inject = [\"$async\", \"KubernetesNamespaces\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNamespaceService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesNamespaceService', KubernetesNamespaceService);//# sourceURL=webpack-internal:///44987\n");

}),

73774:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_nodes_limits_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/nodes-limits/models */ 74335);\n\n\n\n\nclass KubernetesNodesLimitsService {\n  /* @ngInject */\n  constructor(KubernetesNodesLimits) {\n    this.KubernetesNodesLimits = KubernetesNodesLimits;\n  }\n  /**\n   * GET\n   */\n\n\n  async get() {\n    try {\n      const nodesLimits = await this.KubernetesNodesLimits.get().$promise;\n      return new Kubernetes_models_nodes_limits_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesNodesLimits(nodesLimits.data);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve nodes limits', err);\n    }\n  }\n\n}\n\nKubernetesNodesLimitsService.$inject = [\"KubernetesNodesLimits\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNodesLimitsService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesNodesLimitsService', KubernetesNodesLimitsService);//# sourceURL=webpack-internal:///73774\n");

}),

79362:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/persistentVolumeClaim */ 56636);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n\n\n\n\n\n\nclass KubernetesPersistentVolumeClaimService {\n  /* @ngInject */\n  constructor($async, KubernetesPersistentVolumeClaims) {\n    this.$async = $async;\n    this.KubernetesPersistentVolumeClaims = KubernetesPersistentVolumeClaims;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n\n  async getAsync(namespace, storageClasses, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesPersistentVolumeClaims(namespace).get(params).$promise, this.KubernetesPersistentVolumeClaims(namespace).getYaml(params).$promise]);\n      return Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToPersistentVolumeClaim(raw, storageClasses, yaml);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve persistent volume claim', err);\n    }\n  }\n\n  async getAllAsync(namespace, storageClasses) {\n    try {\n      const data = await this.KubernetesPersistentVolumeClaims(namespace).get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToPersistentVolumeClaim(item, storageClasses));\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve persistent volume claims', err);\n    }\n  }\n\n  get(namespace, storageClasses, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, storageClasses, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace, storageClasses);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(claim) {\n    try {\n      const params = {};\n      const payload = Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(claim);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesPersistentVolumeClaims(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to create persistent volume claim', err);\n    }\n  }\n\n  create(claim) {\n    return this.$async(this.createAsync, claim);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldPVC, newPVC) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = newPVC.Name;\n      const namespace = newPVC.Namespace;\n      const payload = Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldPVC, newPVC);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesPersistentVolumeClaims(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to patch persistent volume claim', err);\n    }\n  }\n\n  patch(oldPVC, newPVC) {\n    return this.$async(this.patchAsync, oldPVC, newPVC);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(pvc) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = pvc.Name;\n      const namespace = pvc.Namespace;\n      await this.KubernetesPersistentVolumeClaims(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to delete persistent volume claim', err);\n    }\n  }\n\n  delete(pvc) {\n    return this.$async(this.deleteAsync, pvc);\n  }\n\n}\n\nKubernetesPersistentVolumeClaimService.$inject = [\"$async\", \"KubernetesPersistentVolumeClaims\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesPersistentVolumeClaimService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesPersistentVolumeClaimService', KubernetesPersistentVolumeClaimService);//# sourceURL=webpack-internal:///79362\n");

}),

59010:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n\n\n\nclass KubernetesReplicaSetService {\n  /* @ngInject */\n  constructor($async, KubernetesReplicaSets) {\n    this.$async = $async;\n    this.KubernetesReplicaSets = KubernetesReplicaSets;\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesReplicaSets(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve ReplicaSets', err);\n    }\n  }\n\n  get(namespace) {\n    return this.$async(this.getAllAsync, namespace);\n  }\n\n}\n\nKubernetesReplicaSetService.$inject = [\"$async\", \"KubernetesReplicaSets\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesReplicaSetService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesReplicaSetService', KubernetesReplicaSetService);//# sourceURL=webpack-internal:///59010\n");

}),

22539:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourcePoolService\": function() { return /* binding */ KubernetesResourcePoolService; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_pull__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/pull */ 67386);\n/* harmony import */ var lodash_es_pull__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_pull__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_intersectionBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/intersectionBy */ 66900);\n/* harmony import */ var lodash_es_intersectionBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_intersectionBy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/converters/resourcePool */ 57911);\n/* harmony import */ var Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/helpers/resourceQuotaHelper */ 21458);\n\n\n\n\n\n\n\n\nKubernetesResourcePoolService.$inject = [\"$async\", \"EndpointService\", \"KubernetesNamespaceService\", \"KubernetesResourceQuotaService\", \"KubernetesIngressService\", \"KubernetesPortainerNamespaces\"];\n\n\n\n/* @ngInject */\n\nfunction KubernetesResourcePoolService($async, EndpointService, KubernetesNamespaceService, KubernetesResourceQuotaService, KubernetesIngressService, KubernetesPortainerNamespaces) {\n  return {\n    get,\n    create,\n    patch,\n    delete: _delete,\n    toggleSystem\n  };\n\n  async function getOne(name) {\n    const namespace = await KubernetesNamespaceService.get(name);\n    const [quotaAttempt] = await Promise.allSettled([KubernetesResourceQuotaService.get(name, Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_10__[\"default\"].generateResourceQuotaName(name))]);\n    const pool = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__[\"default\"].apiToResourcePool(namespace);\n\n    if (quotaAttempt.status === 'fulfilled') {\n      pool.Quota = quotaAttempt.value;\n      pool.Yaml += '---\\n' + quotaAttempt.value.Yaml;\n    }\n\n    return pool;\n  }\n\n  async function getAll() {\n    const namespaces = await KubernetesNamespaceService.get();\n    const pools = await Promise.all(lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(namespaces, async namespace => {\n      const name = namespace.Name;\n      const [quotaAttempt] = await Promise.allSettled([KubernetesResourceQuotaService.get(name, Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_10__[\"default\"].generateResourceQuotaName(name))]);\n      const pool = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__[\"default\"].apiToResourcePool(namespace);\n\n      if (quotaAttempt.status === 'fulfilled') {\n        pool.Quota = quotaAttempt.value;\n        pool.Yaml += '---\\n' + quotaAttempt.value.Yaml;\n      }\n\n      return pool;\n    }));\n    return pools;\n  }\n\n  function get(name) {\n    if (name) {\n      return $async(getOne, name);\n    }\n\n    return $async(getAll);\n  }\n\n  function create(formValues) {\n    return $async(async () => {\n      const [namespace, quota, ingresses, registries] = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formValuesToResourcePool(formValues);\n      await KubernetesNamespaceService.create(namespace);\n\n      if (quota) {\n        await KubernetesResourceQuotaService.create(quota);\n      }\n\n      const ingressPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(ingresses, i => KubernetesIngressService.create(i));\n\n      await Promise.all(ingressPromises);\n      const endpointId = formValues.EndpointId;\n\n      const registriesPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(registries, r => EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]));\n\n      await Promise.all(registriesPromises);\n    });\n  }\n\n  function patch(oldFormValues, newFormValues) {\n    return $async(async () => {\n      const [, oldQuota, oldIngresses, oldRegistries] = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formValuesToResourcePool(oldFormValues);\n      const [, newQuota, newIngresses, newRegistries] = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formValuesToResourcePool(newFormValues);\n\n      if (oldQuota && newQuota) {\n        await KubernetesResourceQuotaService.patch(oldQuota, newQuota);\n      } else if (!oldQuota && newQuota) {\n        await KubernetesResourceQuotaService.create(newQuota);\n      } else if (oldQuota && !newQuota) {\n        await KubernetesResourceQuotaService.delete(oldQuota);\n      }\n\n      const create = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(newIngresses, ing => !lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(oldIngresses, {\n        Name: ing.Name\n      }));\n\n      const del = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(oldIngresses, ing => !lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(newIngresses, {\n        Name: ing.Name\n      }));\n\n      const patch = lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default()(newIngresses, ...create);\n\n      const createPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(create, i => KubernetesIngressService.create(i));\n\n      const delPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(del, i => KubernetesIngressService.delete(i.Namespace, i.Name));\n\n      const patchPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(patch, ing => {\n        const old = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(oldIngresses, {\n          Name: ing.Name\n        });\n\n        ing.Paths = angular__WEBPACK_IMPORTED_MODULE_8___default().copy(old.Paths);\n        ing.PreviousHost = old.Host;\n        return KubernetesIngressService.patch(old, ing);\n      });\n\n      const promises = lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3___default()([createPromises, delPromises, patchPromises]);\n\n      await Promise.all(promises);\n      const endpointId = newFormValues.EndpointId;\n\n      const keptRegistries = lodash_es_intersectionBy__WEBPACK_IMPORTED_MODULE_2___default()(oldRegistries, newRegistries, 'Id');\n\n      const removedRegistries = lodash_es_without__WEBPACK_IMPORTED_MODULE_4___default()(oldRegistries, ...keptRegistries);\n\n      const newRegistriesPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(newRegistries, r => EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]));\n\n      const removedRegistriesPromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_7___default()(removedRegistries, r => {\n        lodash_es_pull__WEBPACK_IMPORTED_MODULE_1___default()(r.RegistryAccesses[endpointId].Namespaces, newFormValues.Name);\n\n        return EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]);\n      });\n\n      await Promise.all(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default()(newRegistriesPromises, removedRegistriesPromises));\n    });\n  }\n\n  function _delete(pool) {\n    return $async(async () => {\n      await KubernetesNamespaceService.delete(pool.Namespace);\n    });\n  }\n\n  function toggleSystem(endpointId, namespaceName, system) {\n    return KubernetesPortainerNamespaces.toggleSystem({\n      namespaceName,\n      endpointId\n    }, {\n      system\n    }).$promise;\n  }\n}\nangular__WEBPACK_IMPORTED_MODULE_8___default().module('portainer.kubernetes').service('KubernetesResourcePoolService', KubernetesResourcePoolService);//# sourceURL=webpack-internal:///22539\n");

}),

85927:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KubernetesResourceQuotaService\": function() { return /* binding */ KubernetesResourceQuotaService; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/converters/resourceQuota */ 57456);\n\nKubernetesResourceQuotaService.$inject = [\"$async\", \"KubernetesResourceQuotas\"];\n\n\n\n\n/* @ngInject */\n\nfunction KubernetesResourceQuotaService($async, KubernetesResourceQuotas) {\n  return {\n    get,\n    create,\n    patch,\n    delete: _delete\n  };\n\n  async function getOne(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([KubernetesResourceQuotas(namespace).get(params).$promise, KubernetesResourceQuotas(namespace).getYaml(params).$promise]);\n      return Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToResourceQuota(raw, yaml);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve resource quota', err);\n    }\n  }\n\n  async function getAll(namespace) {\n    try {\n      const data = await KubernetesResourceQuotas(namespace).get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToResourceQuota(item));\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve resource quotas', err);\n    }\n  }\n\n  function get(namespace, name) {\n    if (name) {\n      return $async(getOne, namespace, name);\n    }\n\n    return $async(getAll, namespace);\n  }\n\n  function create(quota) {\n    return $async(async () => {\n      try {\n        const payload = Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createPayload(quota);\n        const namespace = payload.metadata.namespace;\n        const params = {};\n        const data = await KubernetesResourceQuotas(namespace).create(params, payload).$promise;\n        return Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apiToResourceQuota(data);\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to create quota', err);\n      }\n    });\n  }\n\n  function patch(oldQuota, newQuota) {\n    return $async(async () => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n        params.id = newQuota.Name;\n        const namespace = newQuota.Namespace;\n        const payload = Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_4__[\"default\"].patchPayload(oldQuota, newQuota);\n\n        if (!payload.length) {\n          return;\n        }\n\n        const data = await KubernetesResourceQuotas(namespace).patch(params, payload).$promise;\n        return data;\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to update resource quota', err);\n      }\n    });\n  }\n\n  function _delete(quota) {\n    return $async(async () => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_3__.KubernetesCommonParams();\n        params.id = quota.Name;\n        await KubernetesResourceQuotas(quota.Namespace).delete(params).$promise;\n      } catch (err) {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to delete quota', err);\n      }\n    });\n  }\n}\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesResourceQuotaService', KubernetesResourceQuotaService);//# sourceURL=webpack-internal:///85927\n");

}),

76354:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/secret */ 52341);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n\n\n\n\n\n\nclass KubernetesSecretService {\n  /* @ngInject */\n  constructor($async, KubernetesSecrets) {\n    this.$async = $async;\n    this.KubernetesSecrets = KubernetesSecrets;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.updateAsync = this.updateAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesSecrets(namespace).get(params).$promise, this.KubernetesSecrets(namespace).getYaml(params).$promise]);\n      const secret = Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToSecret(raw, yaml);\n      return secret;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve secret', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesSecrets(namespace).get().$promise;\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data.items, item => Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToSecret(item));\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve secrets', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(secret) {\n    try {\n      const payload = Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(secret);\n      const namespace = payload.metadata.namespace;\n      const params = {};\n      const data = await this.KubernetesSecrets(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to create secret', err);\n    }\n  }\n\n  create(secret) {\n    return this.$async(this.createAsync, secret);\n  }\n  /**\n   * UPDATE\n   */\n\n\n  async updateAsync(secret) {\n    try {\n      const payload = Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__[\"default\"].updatePayload(secret);\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = payload.metadata.name;\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesSecrets(namespace).update(params, payload).$promise;\n      return Kubernetes_converters_secret__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToSecret(data);\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to update secret', err);\n    }\n  }\n\n  update(secret) {\n    return this.$async(this.updateAsync, secret);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(secret) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = secret.Name;\n      const namespace = secret.Namespace;\n      await this.KubernetesSecrets(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to delete secret', err);\n    }\n  }\n\n  delete(secret) {\n    return this.$async(this.deleteAsync, secret);\n  }\n\n}\n\nKubernetesSecretService.$inject = [\"$async\", \"KubernetesSecrets\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesSecretService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesSecretService', KubernetesSecretService);//# sourceURL=webpack-internal:///76354\n");

}),

7055:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/service */ 86998);\n\n\n\n\n\nclass KubernetesServiceService {\n  /* @ngInject */\n  constructor($async, KubernetesServices) {\n    this.$async = $async;\n    this.KubernetesServices = KubernetesServices;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n    this.deleteSingleAsync = this.deleteSingleAsync.bind(this);\n    this.deleteAllAsync = this.deleteAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesServices(namespace).get(params).$promise, this.KubernetesServices(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: raw,\n        Yaml: yaml.data\n      };\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve service', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesServices(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve services', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(service) {\n    try {\n      const params = {};\n      const payload = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(service);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesServices(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to create service', err);\n    }\n  }\n\n  create(service) {\n    return this.$async(this.createAsync, service);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldService, newService) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = newService.Name;\n      const namespace = newService.Namespace;\n      const payload = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldService, newService);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesServices(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to patch service', err);\n    }\n  }\n\n  patch(oldService, newService) {\n    return this.$async(this.patchAsync, oldService, newService);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(services) {\n    services.forEach(async service => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n        params.id = service.metadata && service.metadata.name || service.Name;\n        const namespace = service.metadata && service.metadata.namespace || service.Namespace;\n        await this.KubernetesServices(namespace).delete(params).$promise;\n      } catch (err) {\n        // eslint-disable-next-line no-console\n        console.error('unable to remove service', err);\n      }\n    });\n  }\n\n  delete(services) {\n    return this.$async(this.deleteAsync, services);\n  }\n\n  async deleteAllAsync(formValuesServices) {\n    formValuesServices.forEach(async service => {\n      try {\n        const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n        params.id = service.Name;\n        const namespace = service.Namespace;\n        await this.KubernetesServices(namespace).delete(params).$promise;\n      } catch (err) {\n        // eslint-disable-next-line no-console\n        console.error('unable to remove service', err);\n      }\n    });\n  }\n\n  deleteAll(formValuesServices) {\n    return this.$async(this.deleteAllAsync, formValuesServices);\n  }\n\n  async deleteSingleAsync(service) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = service.Name;\n      const namespace = service.Namespace;\n      await this.KubernetesServices(namespace).delete(params).$promise;\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error('unable to remove service', err);\n    }\n  }\n\n  deleteSingle(service) {\n    return this.$async(this.deleteSingleAsync, service);\n  }\n\n}\n\nKubernetesServiceService.$inject = [\"$async\", \"KubernetesServices\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesServiceService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesServiceService', KubernetesServiceService);//# sourceURL=webpack-internal:///7055\n");

}),

4063:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nclass KubernetesStackService {\n  /* @ngInject */\n  constructor($async, KubernetesApplicationService) {\n    this.$async = $async;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAllAsync(namespace) {\n    const applications = await this.KubernetesApplicationService.get(namespace);\n\n    const stacks = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(applications, item => item.StackName);\n\n    return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default()(stacks, '-', ''));\n  }\n\n  get(namespace) {\n    return this.$async(this.getAllAsync, namespace);\n  }\n\n}\n\nKubernetesStackService.$inject = [\"$async\", \"KubernetesApplicationService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStackService);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').service('KubernetesStackService', KubernetesStackService);//# sourceURL=webpack-internal:///4063\n");

}),

4165:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n/* harmony import */ var Kubernetes_converters_statefulSet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/statefulSet */ 15986);\n\n\n\n\n\nclass KubernetesStatefulSetService {\n  /* @ngInject */\n  constructor($async, KubernetesStatefulSets, KubernetesServiceService) {\n    this.$async = $async;\n    this.KubernetesStatefulSets = KubernetesStatefulSets;\n    this.KubernetesServiceService = KubernetesServiceService;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.createAsync = this.createAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n    this.rollbackAsync = this.rollbackAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, name) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      const [raw, yaml] = await Promise.all([this.KubernetesStatefulSets(namespace).get(params).$promise, this.KubernetesStatefulSets(namespace).getYaml(params).$promise]);\n      const res = {\n        Raw: raw,\n        Yaml: yaml.data\n      };\n      const headlessServiceName = raw.spec.serviceName;\n\n      if (headlessServiceName) {\n        try {\n          const headlessService = await this.KubernetesServiceService.get(namespace, headlessServiceName);\n          res.Yaml += '---\\n' + headlessService.Yaml;\n        } catch (error) {// if has error means headless service does not exist\n          // skip error as we don't care in this case\n        }\n      }\n\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve StatefulSet', err);\n    }\n  }\n\n  async getAllAsync(namespace) {\n    try {\n      const data = await this.KubernetesStatefulSets(namespace).get().$promise;\n      return data.items;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to retrieve StatefulSets', err);\n    }\n  }\n\n  get(namespace, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace);\n  }\n  /**\n   * CREATE\n   */\n\n\n  async createAsync(statefulSet) {\n    try {\n      const params = {};\n      const payload = Kubernetes_converters_statefulSet__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPayload(statefulSet);\n      const namespace = payload.metadata.namespace;\n      const data = await this.KubernetesStatefulSets(namespace).create(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to create statefulSet', err);\n    }\n  }\n\n  create(statefulSet) {\n    return this.$async(this.createAsync, statefulSet);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(oldStatefulSet, newStatefulSet) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = newStatefulSet.Name;\n      const namespace = newStatefulSet.Namespace;\n      const payload = Kubernetes_converters_statefulSet__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldStatefulSet, newStatefulSet);\n\n      if (!payload.length) {\n        return;\n      }\n\n      const data = await this.KubernetesStatefulSets(namespace).patch(params, payload).$promise;\n      return data;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to patch statefulSet', err);\n    }\n  }\n\n  patch(oldStatefulSet, newStatefulSet) {\n    return this.$async(this.patchAsync, oldStatefulSet, newStatefulSet);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(statefulSet) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = statefulSet.Name;\n      const namespace = statefulSet.Namespace;\n      await this.KubernetesStatefulSets(namespace).delete(params).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to remove statefulSet', err);\n    }\n  }\n\n  delete(statefulSet) {\n    return this.$async(this.deleteAsync, statefulSet);\n  }\n  /**\n   * ROLLBACK\n   */\n\n\n  async rollbackAsync(namespace, name, payload) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_2__.KubernetesCommonParams();\n      params.id = name;\n      await this.KubernetesStatefulSets(namespace).rollback(params, payload).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unable to rollback statefulSet', err);\n    }\n  }\n\n  rollback(namespace, name, payload) {\n    return this.$async(this.rollbackAsync, namespace, name, payload);\n  }\n\n}\n\nKubernetesStatefulSetService.$inject = [\"$async\", \"KubernetesStatefulSets\", \"KubernetesServiceService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStatefulSetService);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').service('KubernetesStatefulSetService', KubernetesStatefulSetService);//# sourceURL=webpack-internal:///4165\n");

}),

36552:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/error */ 20023);\n/* harmony import */ var Kubernetes_converters_storageClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/storageClass */ 17981);\n/* harmony import */ var Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/common/params */ 82469);\n\n\n\n\n\n\nclass KubernetesStorageService {\n  /* @ngInject */\n  constructor($async, KubernetesStorage) {\n    this.$async = $async;\n    this.KubernetesStorage = KubernetesStorage;\n    this.getAsync = this.getAsync.bind(this);\n    this.patchAsync = this.patchAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(endpointId) {\n    try {\n      const params = {\n        endpointId: endpointId\n      };\n      const classes = await this.KubernetesStorage().get(params).$promise;\n\n      const res = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(classes.items, item => Kubernetes_converters_storageClass__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apiToStorageClass(item));\n\n      return res;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to retrieve storage classes', err);\n    }\n  }\n\n  get(endpointId) {\n    return this.$async(this.getAsync, endpointId);\n  }\n  /**\n   * PATCH\n   */\n\n\n  async patchAsync(endpointId, oldStorageClass, newStorageClass) {\n    try {\n      const params = new Kubernetes_models_common_params__WEBPACK_IMPORTED_MODULE_4__.KubernetesCommonParams();\n      params.id = newStorageClass.Name;\n      params.endpointId = endpointId;\n      const payload = Kubernetes_converters_storageClass__WEBPACK_IMPORTED_MODULE_3__[\"default\"].patchPayload(oldStorageClass, newStorageClass);\n      await this.KubernetesStorage().patch(params, payload).$promise;\n    } catch (err) {\n      throw new Portainer_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Unable to patch storage class', err);\n    }\n  }\n\n  patch(endpointId, oldStorageClass, newStorageClass) {\n    return this.$async(this.patchAsync, endpointId, oldStorageClass, newStorageClass);\n  }\n\n}\n\nKubernetesStorageService.$inject = [\"$async\", \"KubernetesStorage\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStorageService);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').service('KubernetesStorageService', KubernetesStorageService);//# sourceURL=webpack-internal:///36552\n");

}),

78085:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_converters_volume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/converters/volume */ 92192);\n\n\n\n\n\nclass KubernetesVolumeService {\n  /* @ngInject */\n  constructor($async, KubernetesResourcePoolService, KubernetesApplicationService, KubernetesPersistentVolumeClaimService) {\n    this.$async = $async;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n    this.getAsync = this.getAsync.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n    this.deleteAsync = this.deleteAsync.bind(this);\n  }\n  /**\n   * GET\n   */\n\n\n  async getAsync(namespace, storageClasses, name) {\n    const [pvc, pool] = await Promise.all([this.KubernetesPersistentVolumeClaimService.get(namespace, storageClasses, name), this.KubernetesResourcePoolService.get(namespace)]);\n    return Kubernetes_converters_volume__WEBPACK_IMPORTED_MODULE_3__[\"default\"].pvcToVolume(pvc, pool);\n  }\n\n  async getAllAsync(namespace, storageClasses) {\n    const data = await this.KubernetesResourcePoolService.get(namespace);\n    const pools = data instanceof Array ? data : [data];\n    const res = await Promise.all(lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(pools, async pool => {\n      const pvcs = await this.KubernetesPersistentVolumeClaimService.get(pool.Namespace.Name, storageClasses);\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(pvcs, pvc => Kubernetes_converters_volume__WEBPACK_IMPORTED_MODULE_3__[\"default\"].pvcToVolume(pvc, pool));\n    }));\n    return lodash_es_flatten__WEBPACK_IMPORTED_MODULE_0___default()(res);\n  }\n\n  get(namespace, storageClasses, name) {\n    if (name) {\n      return this.$async(this.getAsync, namespace, storageClasses, name);\n    }\n\n    return this.$async(this.getAllAsync, namespace, storageClasses);\n  }\n  /**\n   * DELETE\n   */\n\n\n  async deleteAsync(volume) {\n    await this.KubernetesPersistentVolumeClaimService.delete(volume.PersistentVolumeClaim);\n  }\n\n  delete(volume) {\n    return this.$async(this.deleteAsync, volume);\n  }\n\n}\n\nKubernetesVolumeService.$inject = [\"$async\", \"KubernetesResourcePoolService\", \"KubernetesApplicationService\", \"KubernetesPersistentVolumeClaimService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumeService);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').service('KubernetesVolumeService', KubernetesVolumeService);//# sourceURL=webpack-internal:///78085\n");

}),

22823:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isSystem\": function() { return /* binding */ isSystem; },\n/* harmony export */   \"updateNamespaces\": function() { return /* binding */ updateNamespaces; }\n/* harmony export */ });\n// singleton pattern as:\n// * we don't want to use AngularJS DI to fetch the single instance\n// * we need to use the Store in static functions / non-instanciated classes\nconst storeNamespaces = {};\n/**\n * Check if a namespace of the store is system or not\n * @param {String} name Namespace name\n * @returns Boolean\n */\n\nfunction isSystem(name) {\n  return storeNamespaces[name] && storeNamespaces[name].IsSystem;\n}\n/**\n * Called from KubernetesNamespaceService.get()\n * @param {KubernetesNamespace[]} namespaces list of namespaces to update in Store\n */\n\nfunction updateNamespaces(namespaces) {\n  namespaces.forEach(ns => storeNamespaces[ns.Name] = ns);\n}//# sourceURL=webpack-internal:///22823\n");

}),

86393:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./applications.html */ 79573);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///86393\n");

}),

55495:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_helpers_stackHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/stackHelper */ 41208);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesApplicationsController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, KubernetesApplicationService, HelmService, KubernetesConfigurationService, Authentication, ModalService, LocalStorage, StackService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.HelmService = HelmService;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.Authentication = Authentication;\n    this.ModalService = ModalService;\n    this.LocalStorage = LocalStorage;\n    this.StackService = StackService;\n    this.onInit = this.onInit.bind(this);\n    this.getApplications = this.getApplications.bind(this);\n    this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n    this.removeStacksAction = this.removeStacksAction.bind(this);\n    this.removeStacksActionAsync = this.removeStacksActionAsync.bind(this);\n    this.onPublishingModeClick = this.onPublishingModeClick.bind(this);\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('applications', index);\n  }\n\n  async removeStacksActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const stack of selectedItems) {\n      try {\n        const isAppFormCreated = stack.Applications.some(x => !x.ApplicationKind);\n\n        if (isAppFormCreated) {\n          const promises = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(stack.Applications, app => this.KubernetesApplicationService.delete(app));\n\n          await Promise.all(promises);\n        } else {\n          const application = stack.Applications.find(x => x.StackId !== null);\n\n          if (application && application.StackId) {\n            await this.StackService.remove({\n              Id: application.StackId\n            }, false, this.endpoint.Id);\n          }\n        }\n\n        this.Notifications.success('Stack successfully removed', stack.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default()(this.state.stacks, {\n          Name: stack.Name\n        });\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to remove stack');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload(this.$state.current);\n        }\n      }\n    }\n  }\n\n  removeStacksAction(selectedItems) {\n    this.ModalService.confirmDeletion('Are you sure that you want to remove the selected stack(s) ? This will remove all the applications associated to the stack(s).', confirmed => {\n      if (confirmed) {\n        return this.$async(this.removeStacksActionAsync, selectedItems);\n      }\n    });\n  }\n\n  async removeActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const application of selectedItems) {\n      try {\n        if (application.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationTypes.HELM) {\n          await this.HelmService.uninstall(this.endpoint.Id, application);\n        } else {\n          await this.KubernetesApplicationService.delete(application);\n\n          if (application.Metadata.labels[Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesPortainerApplicationStackNameLabel]) {\n            // Update applications in stack\n            const stack = this.state.stacks.find(x => x.Name === application.StackName);\n            const index = stack.Applications.indexOf(application);\n            stack.Applications.splice(index, 1); // remove stack if no app left in the stack\n\n            if (stack.Applications.length === 0 && application.StackId) {\n              await this.StackService.remove({\n                Id: application.StackId\n              }, false, this.endpoint.Id);\n            }\n          }\n        }\n\n        this.Notifications.success('应用程序成功删除', application.Name);\n        const index = this.state.applications.indexOf(application);\n        this.state.applications.splice(index, 1);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法删除应用程序');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload(this.$state.current);\n        }\n      }\n    }\n  }\n\n  removeAction(selectedItems) {\n    this.ModalService.confirmDeletion('你想删除选定的应用程序吗？', confirmed => {\n      if (confirmed) {\n        return this.$async(this.removeActionAsync, selectedItems);\n      }\n    });\n  }\n\n  onPublishingModeClick(application) {\n    this.state.activeTab = 1;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.ports, item => {\n      item.Expanded = false;\n      item.Highlighted = false;\n\n      if (item.Name === application.Name && item.Ports.length > 1) {\n        item.Expanded = true;\n        item.Highlighted = true;\n      }\n    });\n  }\n\n  async getApplicationsAsync() {\n    try {\n      const [applications, configurations] = await Promise.all([this.KubernetesApplicationService.get(), this.KubernetesConfigurationService.get()]);\n      const configuredApplications = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getApplicationConfigurations(applications, configurations);\n      const {\n        helmApplications,\n        nonHelmApplications\n      } = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getNestedApplications(configuredApplications);\n      this.state.applications = [...helmApplications, ...nonHelmApplications];\n      this.state.stacks = Kubernetes_helpers_stackHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].stacksFromApplications(applications);\n      this.state.ports = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_5__[\"default\"].portMappingsFromApplications(applications);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索到应用程序s');\n    }\n  }\n\n  getApplications() {\n    return this.$async(this.getApplicationsAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      activeTab: this.LocalStorage.getActiveTab('applications'),\n      currentName: this.$state.$current.name,\n      isAdmin: this.Authentication.isAdmin(),\n      viewReady: false,\n      applications: [],\n      stacks: [],\n      ports: []\n    };\n    await this.getApplications();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('applications', 0);\n    }\n  }\n\n}\n\nKubernetesApplicationsController.$inject = [\"$async\", \"$state\", \"Notifications\", \"KubernetesApplicationService\", \"HelmService\", \"KubernetesConfigurationService\", \"Authentication\", \"ModalService\", \"LocalStorage\", \"StackService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationsController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesApplicationsController', KubernetesApplicationsController);//# sourceURL=webpack-internal:///55495\n");

}),

51819:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./console.html */ 65998);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationConsoleView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationConsoleController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///51819\n");

}),

33243:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm */ 96049);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n\n\n\n\nclass KubernetesApplicationConsoleController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, KubernetesApplicationService, LocalStorage) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.LocalStorage = LocalStorage;\n    this.onInit = this.onInit.bind(this);\n  }\n\n  disconnect() {\n    this.state.socket.close();\n    this.state.term.dispose();\n    this.state.connected = false;\n  }\n\n  configureSocketAndTerminal(socket, term) {\n    socket.onopen = function () {\n      const terminal_container = document.getElementById('terminal-container');\n      term.open(terminal_container);\n      term.setOption('cursorBlink', true);\n      term.focus();\n    };\n\n    term.on('data', function (data) {\n      socket.send(data);\n    });\n\n    socket.onmessage = function (msg) {\n      term.write(msg.data);\n    };\n\n    socket.onerror = function (err) {\n      this.disconnect();\n      this.Notifications.error('失败', err, 'Websocket connection error');\n    }.bind(this);\n\n    this.state.socket.onclose = function () {\n      this.disconnect();\n    }.bind(this);\n\n    this.state.connected = true;\n  }\n\n  connectConsole() {\n    const params = {\n      token: this.LocalStorage.getJWT(),\n      endpointId: this.endpoint.Id,\n      namespace: this.application.ResourcePool,\n      podName: this.podName,\n      containerName: this.containerName,\n      command: this.state.command\n    };\n    const base = window.location.origin.startsWith('http') ? `${window.location.origin}${(0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_2__.baseHref)()}` : (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_2__.baseHref)();\n    let url = base + 'api/websocket/pod?' + Object.keys(params).map(k => k + '=' + params[k]).join('&');\n\n    if (url.indexOf('https') > -1) {\n      url = url.replace('https://', 'wss://');\n    } else {\n      url = url.replace('http://', 'ws://');\n    }\n\n    this.state.socket = new WebSocket(url);\n    this.state.term = new xterm__WEBPACK_IMPORTED_MODULE_1__.Terminal();\n    this.configureSocketAndTerminal(this.state.socket, this.state.term);\n  }\n\n  async onInit() {\n    const availableCommands = ['/bin/bash', '/bin/sh'];\n    this.state = {\n      actionInProgress: false,\n      availableCommands: availableCommands,\n      command: availableCommands[1],\n      connected: false,\n      socket: null,\n      term: null,\n      viewReady: false\n    };\n    const podName = this.$transition$.params().pod;\n    const applicationName = this.$transition$.params().name;\n    const namespace = this.$transition$.params().namespace;\n    const containerName = this.$transition$.params().container;\n    this.podName = podName;\n    this.containerName = containerName;\n\n    try {\n      this.application = await this.KubernetesApplicationService.get(namespace, applicationName);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application logs');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesApplicationConsoleController.$inject = [\"$async\", \"$state\", \"Notifications\", \"KubernetesApplicationService\", \"LocalStorage\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationConsoleController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesApplicationConsoleController', KubernetesApplicationConsoleController);//# sourceURL=webpack-internal:///33243\n");

}),

58791:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createApplication.html */ 1866);\n\nangular.module('portainer.kubernetes').component('kubernetesCreateApplicationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesCreateApplicationController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///58791\n");

}),

8924:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_floor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/floor */ 83464);\n/* harmony import */ var lodash_es_floor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_floor__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/flatMap */ 74362);\n/* harmony import */ var lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es/keys */ 68260);\n/* harmony import */ var lodash_es_keys__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_es_keys__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/portainer/models/registryTypes */ 56414);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Kubernetes/helpers/formValidationHelper */ 54241);\n/* harmony import */ var Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Kubernetes/converters/application */ 10293);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_helpers_application_index__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Kubernetes/helpers/application/index */ 57947);\n/* harmony import */ var Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Kubernetes/helpers/volumeHelper */ 11507);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Kubernetes/node/helper */ 14780);\n/* harmony import */ var _kubernetes_react_views_networks_ingresses_service__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @/kubernetes/react/views/networks/ingresses/service */ 38770);\n/* harmony import */ var _portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/portainer/services/modal.service/prompt */ 77918);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesCreateApplicationController {\n  /* #region  CONSTRUCTOR */\n\n  /* @ngInject */\n  constructor($scope, $async, $state, Notifications, Authentication, ModalService, KubernetesResourcePoolService, KubernetesApplicationService, KubernetesStackService, KubernetesConfigurationService, KubernetesNodeService, KubernetesIngressService, KubernetesPersistentVolumeClaimService, KubernetesVolumeService, RegistryService, StackService, KubernetesNodesLimitsService) {\n    this.$scope = $scope;\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.Authentication = Authentication;\n    this.ModalService = ModalService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesStackService = KubernetesStackService;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesVolumeService = KubernetesVolumeService;\n    this.KubernetesIngressService = KubernetesIngressService;\n    this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n    this.RegistryService = RegistryService;\n    this.StackService = StackService;\n    this.KubernetesNodesLimitsService = KubernetesNodesLimitsService;\n    this.ApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationDeploymentTypes;\n    this.ApplicationDataAccessPolicies = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationDataAccessPolicies;\n    this.ApplicationPublishingTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes;\n    this.ApplicationPlacementTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPlacementTypes;\n    this.ApplicationTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationTypes;\n    this.ApplicationConfigurationFormValueOverridenKeyTypes = Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationConfigurationFormValueOverridenKeyTypes;\n    this.ServiceTypes = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_23__.KubernetesServiceTypes;\n    this.KubernetesDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesDeploymentTypes;\n    this.state = {\n      appType: this.KubernetesDeploymentTypes.APPLICATION_FORM,\n      updateWebEditorInProgress: false,\n      actionInProgress: false,\n      useLoadBalancer: false,\n      useServerMetrics: false,\n      sliders: {\n        cpu: {\n          min: 0,\n          max: 0\n        },\n        memory: {\n          min: 0,\n          max: 0\n        }\n      },\n      nodes: {\n        memory: 0,\n        cpu: 0\n      },\n      namespaceLimits: {\n        memory: 0,\n        cpu: 0\n      },\n      resourcePoolHasQuota: false,\n      viewReady: false,\n      availableSizeUnits: ['MB', 'GB', 'TB'],\n      alreadyExists: false,\n      duplicates: {\n        environmentVariables: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n        persistedFolders: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n        configurationPaths: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n        existingVolumes: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n        publishedPorts: {\n          containerPorts: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n          nodePorts: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n          ingressRoutes: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences(),\n          loadBalancerPorts: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences()\n        },\n        placements: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesFormValidationReferences()\n      },\n      isEdit: this.$state.params.namespace && this.$state.params.name,\n      persistedFoldersUseExistingVolumes: false,\n      pullImageValidity: false\n    };\n    this.isAdmin = this.Authentication.isAdmin();\n    this.editChanges = [];\n    this.storageClasses = [];\n    this.state.useLoadBalancer = false;\n    this.state.useServerMetrics = false;\n    this.formValues = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationFormValues();\n    this.updateApplicationAsync = this.updateApplicationAsync.bind(this);\n    this.deployApplicationAsync = this.deployApplicationAsync.bind(this);\n    this.setPullImageValidity = this.setPullImageValidity.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.onServicePublishChange = this.onServicePublishChange.bind(this);\n    this.checkIngressesToUpdate = this.checkIngressesToUpdate.bind(this);\n    this.confirmUpdateApplicationAsync = this.confirmUpdateApplicationAsync.bind(this);\n  }\n  /* #endregion */\n\n\n  onChangeFileContent(value) {\n    if (this.stackFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== value.replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n      this.state.isEditorDirty = true;\n      this.stackFileContent = value;\n    }\n  }\n\n  async updateApplicationViaWebEditor() {\n    return this.$async(async () => {\n      try {\n        const confirmed = await this.ModalService.confirmAsync({\n          title: '你确定吗？',\n          message: 'Any changes to this application will be overriden and may cause a service interruption. Do you wish to continue?',\n          buttons: {\n            confirm: {\n              label: 'Update',\n              className: 'btn-warning'\n            }\n          }\n        });\n\n        if (!confirmed) {\n          return;\n        }\n\n        this.state.updateWebEditorInProgress = true;\n        await this.StackService.updateKubeStack({\n          EndpointId: this.endpoint.Id,\n          Id: this.application.StackId\n        }, this.stackFileContent, null);\n        this.state.isEditorDirty = false;\n        await this.$state.reload(this.$state.current);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed redeploying application');\n      } finally {\n        this.state.updateWebEditorInProgress = false;\n      }\n    });\n  }\n\n  async uiCanExit() {\n    if (this.stackFileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  setPullImageValidity(validity) {\n    this.state.pullImageValidity = validity;\n  }\n\n  imageValidityIsValid() {\n    return this.state.pullImageValidity || this.formValues.ImageModel.Registry.Type !== _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_17__.RegistryTypes.DOCKERHUB;\n  }\n\n  onChangeName() {\n    const existingApplication = lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default()(this.applications, {\n      Name: this.formValues.Name\n    });\n\n    this.state.alreadyExists = this.state.isEdit && existingApplication && this.application.Id !== existingApplication.Id || !this.state.isEdit && existingApplication;\n  }\n  /* #region  AUTO SCALER UI MANAGEMENT */\n\n\n  unselectAutoScaler() {\n    if (this.formValues.DeploymentType === this.ApplicationDeploymentTypes.GLOBAL) {\n      this.formValues.AutoScaler.IsUsed = false;\n    }\n  }\n  /* #endregion */\n\n  /* #region  CONFIGURATION UI MANAGEMENT */\n\n\n  addConfiguration() {\n    let config = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationConfigurationFormValue();\n    config.SelectedConfiguration = this.configurations[0];\n    this.formValues.Configurations.push(config);\n  }\n\n  removeConfiguration(index) {\n    this.formValues.Configurations.splice(index, 1);\n    this.onChangeConfigurationPath();\n  }\n\n  overrideConfiguration(index) {\n    const config = this.formValues.Configurations[index];\n    config.Overriden = true;\n    config.OverridenKeys = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(lodash_es_keys__WEBPACK_IMPORTED_MODULE_11___default()(config.SelectedConfiguration.Data), key => {\n      const res = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationConfigurationFormValueOverridenKey();\n      res.Key = key;\n      return res;\n    });\n  }\n\n  resetConfiguration(index) {\n    const config = this.formValues.Configurations[index];\n    config.Overriden = false;\n    config.OverridenKeys = [];\n    this.onChangeConfigurationPath();\n  }\n\n  clearConfigurations() {\n    this.formValues.Configurations = [];\n  }\n\n  onChangeConfigurationPath() {\n    this.state.duplicates.configurationPaths.refs = [];\n\n    const paths = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_10___default()(this.formValues.Configurations, (result, config) => {\n      const uniqOverridenKeysPath = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_9___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(config.OverridenKeys, 'Path'));\n\n      return lodash_es_concat__WEBPACK_IMPORTED_MODULE_8___default()(result, uniqOverridenKeysPath);\n    }, []);\n\n    const duplicatePaths = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(paths);\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(this.formValues.Configurations, (config, index) => {\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(config.OverridenKeys, (overridenKey, keyIndex) => {\n        const findPath = lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default()(duplicatePaths, path => path === overridenKey.Path);\n\n        if (findPath) {\n          this.state.duplicates.configurationPaths.refs[index + '_' + keyIndex] = findPath;\n        }\n      });\n    });\n\n    this.state.duplicates.configurationPaths.hasRefs = Object.keys(this.state.duplicates.configurationPaths.refs).length > 0;\n  }\n  /* #endregion */\n\n  /* #region  ENVIRONMENT UI MANAGEMENT */\n\n\n  addEnvironmentVariable() {\n    this.formValues.EnvironmentVariables.push(new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationEnvironmentVariableFormValue());\n  }\n\n  restoreEnvironmentVariable(item) {\n    item.NeedsDeletion = false;\n  }\n\n  removeEnvironmentVariable(item) {\n    const index = this.formValues.EnvironmentVariables.indexOf(item);\n\n    if (index !== -1) {\n      const envVar = this.formValues.EnvironmentVariables[index];\n\n      if (!envVar.IsNew) {\n        envVar.NeedsDeletion = true;\n      } else {\n        this.formValues.EnvironmentVariables.splice(index, 1);\n      }\n    }\n\n    this.onChangeEnvironmentName();\n  }\n\n  onChangeEnvironmentName() {\n    this.state.duplicates.environmentVariables.refs = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.EnvironmentVariables, 'Name'));\n    this.state.duplicates.environmentVariables.hasRefs = Object.keys(this.state.duplicates.environmentVariables.refs).length > 0;\n  }\n  /* #endregion */\n\n  /* #region  PERSISTENT FOLDERS UI MANAGEMENT */\n\n\n  addPersistedFolder() {\n    let storageClass = {};\n\n    if (this.storageClasses.length > 0) {\n      storageClass = this.storageClasses[0];\n    }\n\n    const newPf = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationPersistedFolderFormValue(storageClass);\n    this.formValues.PersistedFolders.push(newPf);\n    this.resetDeploymentType();\n  }\n\n  restorePersistedFolder(index) {\n    this.formValues.PersistedFolders[index].NeedsDeletion = false;\n    this.validatePersistedFolders();\n  }\n\n  resetPersistedFolders() {\n    this.formValues.PersistedFolders = lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(this.formValues.PersistedFolders, persistedFolder => {\n      persistedFolder.ExistingVolume = null;\n      persistedFolder.UseNewVolume = true;\n    });\n    this.validatePersistedFolders();\n  }\n\n  removePersistedFolder(index) {\n    if (this.state.isEdit && this.formValues.PersistedFolders[index].PersistentVolumeClaimName) {\n      this.formValues.PersistedFolders[index].NeedsDeletion = true;\n    } else {\n      this.formValues.PersistedFolders.splice(index, 1);\n    }\n\n    this.validatePersistedFolders();\n  }\n\n  useNewVolume(index) {\n    this.formValues.PersistedFolders[index].UseNewVolume = true;\n    this.formValues.PersistedFolders[index].ExistingVolume = null;\n    this.state.persistedFoldersUseExistingVolumes = !lodash_es_reduce__WEBPACK_IMPORTED_MODULE_10___default()(this.formValues.PersistedFolders, (acc, pf) => acc && pf.UseNewVolume, true);\n    this.validatePersistedFolders();\n  }\n\n  useExistingVolume(index) {\n    this.formValues.PersistedFolders[index].UseNewVolume = false;\n    this.state.persistedFoldersUseExistingVolumes = lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default()(this.formValues.PersistedFolders, {\n      UseNewVolume: false\n    }) ? true : false;\n\n    if (this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED) {\n      this.formValues.DataAccessPolicy = this.ApplicationDataAccessPolicies.SHARED;\n      this.resetDeploymentType();\n    }\n\n    this.validatePersistedFolders();\n  }\n  /* #endregion */\n\n  /* #region  PERSISTENT FOLDERS ON CHANGE VALIDATION */\n\n\n  validatePersistedFolders() {\n    this.onChangePersistedFolderPath();\n    this.onChangeExistingVolumeSelection();\n  }\n\n  onChangePersistedFolderPath() {\n    this.state.duplicates.persistedFolders.refs = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PersistedFolders, persistedFolder => {\n      if (persistedFolder.NeedsDeletion) {\n        return undefined;\n      }\n\n      return persistedFolder.ContainerPath;\n    }));\n    this.state.duplicates.persistedFolders.hasRefs = Object.keys(this.state.duplicates.persistedFolders.refs).length > 0;\n  }\n\n  onChangeExistingVolumeSelection() {\n    this.state.duplicates.existingVolumes.refs = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PersistedFolders, persistedFolder => {\n      if (persistedFolder.NeedsDeletion) {\n        return undefined;\n      }\n\n      return persistedFolder.ExistingVolume ? persistedFolder.ExistingVolume.PersistentVolumeClaim.Name : '';\n    }));\n    this.state.duplicates.existingVolumes.hasRefs = Object.keys(this.state.duplicates.existingVolumes.refs).length > 0;\n  }\n  /* #endregion */\n\n  /* #region  PLACEMENT UI MANAGEMENT */\n\n\n  addPlacement() {\n    const placement = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationPlacementFormValue();\n    const label = this.nodesLabels[0];\n    placement.Label = label;\n    placement.Value = label.Values[0];\n    this.formValues.Placements.push(placement);\n    this.onChangePlacement();\n  }\n\n  restorePlacement(index) {\n    this.formValues.Placements[index].NeedsDeletion = false;\n    this.onChangePlacement();\n  }\n\n  removePlacement(index) {\n    if (this.state.isEdit && !this.formValues.Placements[index].IsNew) {\n      this.formValues.Placements[index].NeedsDeletion = true;\n    } else {\n      this.formValues.Placements.splice(index, 1);\n    }\n\n    this.onChangePlacement();\n  } // call all validation functions when a placement is added/removed/restored\n\n\n  onChangePlacement() {\n    this.onChangePlacementLabelValidate();\n  }\n\n  onChangePlacementLabel(index) {\n    this.formValues.Placements[index].Value = this.formValues.Placements[index].Label.Values[0];\n    this.onChangePlacementLabelValidate();\n  }\n\n  onChangePlacementLabelValidate() {\n    const state = this.state.duplicates.placements;\n\n    const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.Placements, p => p.NeedsDeletion ? undefined : p.Label.Key);\n\n    const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(source);\n    state.refs = duplicates;\n    state.hasRefs = Object.keys(duplicates).length > 0;\n  }\n  /* #endregion */\n\n  /* #region  PUBLISHED PORTS UI MANAGEMENT */\n\n\n  onServicePublishChange() {\n    // enable publishing with no previous ports exposed\n    if (this.formValues.IsPublishingService && !this.formValues.PublishedPorts.length) {\n      this.addPublishedPort();\n      return;\n    } // service update\n\n\n    if (this.formValues.IsPublishingService) {\n      this.formValues.PublishedPorts.forEach(port => port.NeedsDeletion = false);\n    } else {\n      // delete new ports, mark old ports to be deleted\n      this.formValues.PublishedPorts = this.formValues.PublishedPorts.filter(port => !port.IsNew).map(port => ({ ...port,\n        NeedsDeletion: true\n      }));\n    }\n  }\n\n  addPublishedPort() {\n    const p = new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_19__.KubernetesApplicationPublishedPortFormValue();\n    const ingresses = this.ingresses;\n\n    if (this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.INGRESS) {\n      p.IngressName = ingresses && ingresses.length ? ingresses[0].Name : undefined;\n      p.IngressHost = ingresses && ingresses.length ? ingresses[0].Hosts[0] : undefined;\n      p.IngressHosts = ingresses && ingresses.length ? ingresses[0].Hosts : undefined;\n    }\n\n    if (this.formValues.PublishedPorts.length) {\n      p.Protocol = this.formValues.PublishedPorts[0].Protocol;\n    }\n\n    this.formValues.PublishedPorts.push(p);\n  }\n\n  resetPublishedPorts() {\n    const ingresses = this.ingresses;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(this.formValues.PublishedPorts, p => {\n      p.IngressName = ingresses && ingresses.length ? ingresses[0].Name : undefined;\n      p.IngressHost = ingresses && ingresses.length ? ingresses[0].Hosts[0] : undefined;\n    });\n  }\n\n  restorePublishedPort(index) {\n    this.formValues.PublishedPorts[index].NeedsDeletion = false;\n    this.onChangePublishedPorts();\n  }\n\n  removePublishedPort(index) {\n    if (this.state.isEdit && !this.formValues.PublishedPorts[index].IsNew) {\n      this.formValues.PublishedPorts[index].NeedsDeletion = true;\n    } else {\n      this.formValues.PublishedPorts.splice(index, 1);\n    }\n\n    this.onChangePublishedPorts();\n  }\n  /* #endregion */\n\n  /* #region  PUBLISHED PORTS ON CHANGE VALIDATION */\n\n\n  onChangePublishedPorts() {\n    this.onChangePortMappingContainerPort();\n    this.onChangePortMappingNodePort();\n    this.onChangePortMappingIngressRoute();\n    this.onChangePortMappingLoadBalancer();\n    this.onChangePortProtocol();\n  }\n\n  onChangePortMappingContainerPort() {\n    const state = this.state.duplicates.publishedPorts.containerPorts;\n\n    if (this.formValues.PublishingType !== Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.INGRESS) {\n      const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PublishedPorts, p => p.NeedsDeletion ? undefined : p.ContainerPort + p.Protocol);\n\n      const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(source);\n      state.refs = duplicates;\n      state.hasRefs = Object.keys(duplicates).length > 0;\n    } else {\n      state.refs = {};\n      state.hasRefs = false;\n    }\n  }\n\n  onChangePortMappingNodePort() {\n    const state = this.state.duplicates.publishedPorts.nodePorts;\n\n    if (this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.NODE_PORT) {\n      const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PublishedPorts, p => p.NeedsDeletion ? undefined : p.NodePort);\n\n      const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(source);\n      state.refs = duplicates;\n      state.hasRefs = Object.keys(duplicates).length > 0;\n    } else {\n      state.refs = {};\n      state.hasRefs = false;\n    }\n  }\n\n  onChangePortMappingIngress(index) {\n    const publishedPort = this.formValues.PublishedPorts[index];\n\n    const ingress = lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default()(this.ingresses, {\n      Name: publishedPort.IngressName\n    });\n\n    publishedPort.IngressHosts = ingress.Hosts;\n    this.ingressHostnames = ingress.Hosts;\n    publishedPort.IngressHost = this.ingressHostnames.length ? this.ingressHostnames[0] : [];\n    this.onChangePublishedPorts();\n  }\n\n  onChangePortMappingIngressRoute() {\n    const state = this.state.duplicates.publishedPorts.ingressRoutes;\n\n    if (this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.INGRESS) {\n      const newRoutes = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PublishedPorts, p => p.IsNew && p.IngressRoute ? `${p.IngressHost || p.IngressName}${p.IngressRoute}` : undefined);\n\n      const toDelRoutes = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PublishedPorts, p => p.NeedsDeletion && p.IngressRoute ? `${p.IngressHost || p.IngressName}${p.IngressRoute}` : undefined);\n\n      const allRoutes = lodash_es_flatMap__WEBPACK_IMPORTED_MODULE_6___default()(this.ingresses, i => lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(i.Paths, p => `${p.Host || i.Name}${p.Path}`));\n\n      const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(newRoutes);\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(newRoutes, (route, idx) => {\n        if (lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(allRoutes, route) && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(toDelRoutes, route)) {\n          duplicates[idx] = route;\n        }\n      });\n\n      state.refs = duplicates;\n      state.hasRefs = Object.keys(duplicates).length > 0;\n    } else {\n      state.refs = {};\n      state.hasRefs = false;\n    }\n  }\n\n  onChangePortMappingLoadBalancer() {\n    const state = this.state.duplicates.publishedPorts.loadBalancerPorts;\n\n    if (this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n      const source = lodash_es_map__WEBPACK_IMPORTED_MODULE_12___default()(this.formValues.PublishedPorts, p => p.NeedsDeletion ? undefined : p.LoadBalancerPort);\n\n      const duplicates = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_20__[\"default\"].getDuplicates(source);\n      state.refs = duplicates;\n      state.hasRefs = Object.keys(duplicates).length > 0;\n    } else {\n      state.refs = {};\n      state.hasRefs = false;\n    }\n  }\n\n  onChangePortProtocol(index) {\n    if (this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n      const newPorts = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.PublishedPorts, {\n        IsNew: true\n      });\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(newPorts, port => {\n        port.Protocol = index ? this.formValues.PublishedPorts[index].Protocol : newPorts[0].Protocol;\n      });\n\n      this.onChangePortMappingLoadBalancer();\n    }\n\n    this.onChangePortMappingContainerPort();\n  }\n  /* #endregion */\n\n  /* #region  STATE VALIDATION FUNCTIONS */\n\n\n  isValid() {\n    return !this.state.alreadyExists && !this.state.duplicates.environmentVariables.hasRefs && !this.state.duplicates.persistedFolders.hasRefs && !this.state.duplicates.configurationPaths.hasRefs && !this.state.duplicates.existingVolumes.hasRefs && !this.state.duplicates.publishedPorts.containerPorts.hasRefs && !this.state.duplicates.publishedPorts.nodePorts.hasRefs && !this.state.duplicates.publishedPorts.ingressRoutes.hasRefs && !this.state.duplicates.publishedPorts.loadBalancerPorts.hasRefs;\n  }\n\n  storageClassAvailable() {\n    return this.storageClasses && this.storageClasses.length > 0;\n  }\n\n  hasMultipleStorageClassesAvailable() {\n    return this.storageClasses && this.storageClasses.length > 1;\n  }\n\n  resetDeploymentType() {\n    this.formValues.DeploymentType = this.ApplicationDeploymentTypes.REPLICATED;\n  } // The data access policy panel is not shown when:\n  // * There is not persisted folder specified\n\n\n  showDataAccessPolicySection() {\n    return this.formValues.PersistedFolders.length !== 0;\n  } // A global deployment is not available when either:\n  // * For each persisted folder specified, if one of the storage object only supports the RWO access mode\n  // * The data access policy is set to ISOLATED\n\n\n  supportGlobalDeployment() {\n    const hasFolders = this.formValues.PersistedFolders.length !== 0;\n    const hasRWOOnly = Kubernetes_helpers_application_index__WEBPACK_IMPORTED_MODULE_24__[\"default\"].hasRWOOnly(this.formValues);\n    const isIsolated = this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n\n    if (hasFolders && (hasRWOOnly || isIsolated)) {\n      return false;\n    }\n\n    return true;\n  } // A StatefulSet is defined by DataAccessPolicy === ISOLATED\n\n\n  isEditAndStatefulSet() {\n    return this.state.isEdit && this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n  } // A scalable deployment is available when either:\n  // * No persisted folders are specified\n  // * The access policy is set to shared and for each persisted folders specified, all the associated\n  //   storage objects support at least RWX access mode (no RWO only)\n  // * The access policy is set to isolated\n\n\n  supportScalableReplicaDeployment() {\n    const hasFolders = this.formValues.PersistedFolders.length !== 0;\n    const hasRWOOnly = Kubernetes_helpers_application_index__WEBPACK_IMPORTED_MODULE_24__[\"default\"].hasRWOOnly(this.formValues);\n    const isIsolated = this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n\n    if (!hasFolders || isIsolated || hasFolders && !hasRWOOnly) {\n      return true;\n    }\n\n    return false;\n  } // For each persisted folders, returns the non scalable deployments options (storage class that only supports RWO)\n\n\n  getNonScalableStorage() {\n    let storageOptions = [];\n\n    for (let i = 0; i < this.formValues.PersistedFolders.length; i++) {\n      const folder = this.formValues.PersistedFolders[i];\n\n      if (folder.StorageClass && lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3___default()(folder.StorageClass.AccessModes, ['RWO'])) {\n        storageOptions.push(folder.StorageClass.Name);\n      } else {\n        storageOptions.push('<no storage option available>');\n      }\n    }\n\n    return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_9___default()(storageOptions).join(', ');\n  }\n\n  enforceReplicaCountMinimum() {\n    if (this.formValues.ReplicaCount === null) {\n      this.formValues.ReplicaCount = 1;\n    }\n  }\n\n  resourceQuotaCapacityExceeded() {\n    return !this.state.sliders.memory.max || !this.state.sliders.cpu.max;\n  }\n\n  nodeLimitsOverflow() {\n    const cpu = this.formValues.CpuLimit;\n    const memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(this.formValues.MemoryLimit);\n    const overflow = this.nodesLimits.overflowForReplica(cpu, memory, 1);\n    return overflow;\n  }\n\n  effectiveInstances() {\n    return this.formValues.DeploymentType === this.ApplicationDeploymentTypes.GLOBAL ? this.nodeNumber : this.formValues.ReplicaCount;\n  }\n\n  hasPortErrors() {\n    const portError = this.formValues.Services.some(service => service.nodePortError || service.servicePortError);\n    return portError;\n  }\n\n  resourceReservationsOverflow() {\n    const instances = this.effectiveInstances();\n    const cpu = this.formValues.CpuLimit;\n    const maxCpu = this.state.namespaceLimits.cpu;\n    const memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(this.formValues.MemoryLimit);\n    const maxMemory = this.state.namespaceLimits.memory; // multiply 1000 can avoid 0.1 * 3 > 0.3\n\n    if (cpu * 1000 * instances > maxCpu * 1000) {\n      return true;\n    }\n\n    if (memory * instances > maxMemory) {\n      return true;\n    }\n\n    if (this.formValues.DeploymentType === this.ApplicationDeploymentTypes.REPLICATED) {\n      return this.nodesLimits.overflowForReplica(cpu, memory, instances);\n    } // DeploymentType == GLOBAL\n\n\n    return this.nodesLimits.overflowForGlobal(cpu, memory);\n  }\n\n  autoScalerOverflow() {\n    const instances = this.formValues.AutoScaler.MaxReplicas;\n    const cpu = this.formValues.CpuLimit;\n    const maxCpu = this.state.namespaceLimits.cpu;\n    const memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(this.formValues.MemoryLimit);\n    const maxMemory = this.state.namespaceLimits.memory; // multiply 1000 can avoid 0.1 * 3 > 0.3\n\n    if (cpu * 1000 * instances > maxCpu * 1000) {\n      return true;\n    }\n\n    if (memory * instances > maxMemory) {\n      return true;\n    }\n\n    return this.nodesLimits.overflowForReplica(cpu, memory, instances);\n  }\n\n  publishViaLoadBalancerEnabled() {\n    return this.state.useLoadBalancer && this.state.maxLoadBalancersQuota !== 0;\n  }\n\n  publishViaIngressEnabled() {\n    return this.ingresses.length;\n  }\n\n  isEditAndNoChangesMade() {\n    if (!this.state.isEdit) return false;\n    const changes = fast_json_patch__WEBPACK_IMPORTED_MODULE_16__.compare(this.savedFormValues, this.formValues);\n    this.editChanges = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(changes, change => !lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(change.path, '$$hashKey') && change.path !== '/ApplicationType');\n    return !this.editChanges.length;\n  }\n  /* #region  PERSISTED FOLDERS */\n\n  /* #region  BUTTONS STATES */\n\n\n  isAddPersistentFolderButtonShowed() {\n    return !this.isEditAndStatefulSet() && this.formValues.Containers.length <= 1;\n  }\n\n  isNewVolumeButtonDisabled(index) {\n    return this.isEditAndExistingPersistedFolder(index);\n  }\n\n  isExistingVolumeButtonDisabled() {\n    return !this.hasAvailableVolumes() || this.isEdit && this.application.ApplicationType === this.ApplicationTypes.STATEFULSET;\n  }\n  /* #endregion */\n\n\n  hasAvailableVolumes() {\n    return this.availableVolumes.length > 0;\n  }\n\n  isEditAndExistingPersistedFolder(index) {\n    return this.state.isEdit && this.formValues.PersistedFolders[index].PersistentVolumeClaimName;\n  }\n  /* #endregion */\n\n\n  isEditAndNotNewPublishedPort(index) {\n    return this.state.isEdit && !this.formValues.PublishedPorts[index].IsNew;\n  }\n\n  hasNoPublishedPorts() {\n    return this.formValues.PublishedPorts.filter(port => !port.NeedsDeletion).length === 0;\n  }\n\n  isEditAndNotNewPlacement(index) {\n    return this.state.isEdit && !this.formValues.Placements[index].IsNew;\n  }\n\n  isNewAndNotFirst(index) {\n    return !this.state.isEdit && index !== 0;\n  }\n\n  showPlacementPolicySection() {\n    const placements = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.Placements, {\n      NeedsDeletion: false\n    });\n\n    return placements.length !== 0;\n  }\n\n  isNonScalable() {\n    const scalable = this.supportScalableReplicaDeployment();\n    const global = this.supportGlobalDeployment();\n    const replica = this.formValues.ReplicaCount > 1;\n    const replicated = this.formValues.DeploymentType === this.ApplicationDeploymentTypes.REPLICATED;\n    const res = replicated && !scalable && replica || !replicated && !global;\n    return res;\n  }\n\n  isDeployUpdateButtonDisabled() {\n    const overflow = this.resourceReservationsOverflow();\n    const autoScalerOverflow = this.autoScalerOverflow();\n    const inProgress = this.state.actionInProgress;\n    const invalid = !this.isValid();\n    const hasNoChanges = this.isEditAndNoChangesMade();\n    const nonScalable = this.isNonScalable();\n    const isPublishingWithoutPorts = this.formValues.IsPublishingService && this.hasNoPublishedPorts();\n    return overflow || autoScalerOverflow || inProgress || invalid || hasNoChanges || nonScalable || isPublishingWithoutPorts;\n  }\n\n  isExternalApplication() {\n    if (this.application) {\n      return Kubernetes_helpers_application_index__WEBPACK_IMPORTED_MODULE_24__[\"default\"].isExternalApplication(this.application);\n    } else {\n      return false;\n    }\n  }\n\n  disableLoadBalancerEdit() {\n    return this.state.isEdit && this.application.ServiceType === this.ServiceTypes.LOAD_BALANCER && !this.application.LoadBalancerIPAddress && this.formValues.PublishingType === this.ApplicationPublishingTypes.LOAD_BALANCER;\n  }\n\n  isPublishingTypeEditDisabled() {\n    const ports = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.PublishedPorts, {\n      IsNew: false,\n      NeedsDeletion: false\n    });\n\n    return this.state.isEdit && this.formValues.PublishedPorts.length > 0 && ports.length > 0;\n  }\n\n  isEditLBWithPorts() {\n    return this.formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationPublishingTypes.LOAD_BALANCER && lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.PublishedPorts, {\n      IsNew: false\n    }).length === 0;\n  }\n\n  isProtocolOptionDisabled(index, protocol) {\n    return this.disableLoadBalancerEdit() || this.isEditAndNotNewPublishedPort(index) && this.formValues.PublishedPorts[index].Protocol !== protocol || this.isEditLBWithPorts() && this.formValues.PublishedPorts[index].Protocol !== protocol && this.isNewAndNotFirst(index);\n  }\n  /* #endregion */\n\n  /* #region  DATA AUTO REFRESH */\n\n\n  updateSliders() {\n    const quota = this.formValues.ResourcePool.Quota;\n    let minCpu = 0,\n        minMemory = 0,\n        maxCpu = this.state.namespaceLimits.cpu,\n        maxMemory = this.state.namespaceLimits.memory;\n\n    if (quota) {\n      if (quota.CpuLimit) {\n        minCpu = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationQuotaDefaults.CpuLimit;\n      }\n\n      if (quota.MemoryLimit) {\n        minMemory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationQuotaDefaults.MemoryLimit);\n      }\n    }\n\n    maxCpu = Math.min(maxCpu, this.nodesLimits.MaxCPU);\n    maxMemory = Math.min(maxMemory, this.nodesLimits.MaxMemory);\n\n    if (maxMemory < minMemory) {\n      minMemory = 0;\n      maxMemory = 0;\n    }\n\n    this.state.sliders.memory.min = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].megaBytesValue(minMemory);\n    this.state.sliders.memory.max = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].megaBytesValue(maxMemory);\n    this.state.sliders.cpu.min = minCpu;\n    this.state.sliders.cpu.max = lodash_es_floor__WEBPACK_IMPORTED_MODULE_2___default()(maxCpu, 2);\n\n    if (!this.state.isEdit) {\n      this.formValues.CpuLimit = minCpu;\n      this.formValues.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].megaBytesValue(minMemory);\n    }\n  }\n\n  updateNamespaceLimits() {\n    let maxCpu = this.state.nodes.cpu;\n    let maxMemory = this.state.nodes.memory;\n    const quota = this.formValues.ResourcePool.Quota;\n    this.state.resourcePoolHasQuota = false;\n\n    if (quota) {\n      if (quota.CpuLimit) {\n        this.state.resourcePoolHasQuota = true;\n        maxCpu = quota.CpuLimit - quota.CpuLimitUsed;\n\n        if (this.state.isEdit && this.savedFormValues.CpuLimit) {\n          maxCpu += this.savedFormValues.CpuLimit * this.effectiveInstances();\n        }\n      }\n\n      if (quota.MemoryLimit) {\n        this.state.resourcePoolHasQuota = true;\n        maxMemory = quota.MemoryLimit - quota.MemoryLimitUsed;\n\n        if (this.state.isEdit && this.savedFormValues.MemoryLimit) {\n          maxMemory += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(this.savedFormValues.MemoryLimit) * this.effectiveInstances();\n        }\n      }\n    }\n\n    this.state.namespaceLimits.cpu = maxCpu;\n    this.state.namespaceLimits.memory = maxMemory;\n  }\n\n  refreshStacks(namespace) {\n    return this.$async(async () => {\n      try {\n        this.stacks = await this.KubernetesStackService.get(namespace);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve stacks');\n      }\n    });\n  }\n\n  refreshConfigurations(namespace) {\n    return this.$async(async () => {\n      try {\n        this.configurations = await this.KubernetesConfigurationService.get(namespace);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve configurations');\n      }\n    });\n  }\n\n  refreshApplications(namespace) {\n    return this.$async(async () => {\n      try {\n        this.applications = await this.KubernetesApplicationService.get(namespace);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve applications');\n      }\n    });\n  }\n\n  refreshVolumes(namespace) {\n    return this.$async(async () => {\n      try {\n        const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n        const volumes = await this.KubernetesVolumeService.get(namespace, storageClasses);\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(volumes, volume => {\n          volume.Applications = Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_25__[\"default\"].getUsingApplications(volume, this.applications);\n        });\n\n        this.volumes = volumes;\n\n        const filteredVolumes = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.volumes, volume => {\n          const isUnused = !Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_25__[\"default\"].isUsed(volume);\n\n          const isRWX = volume.PersistentVolumeClaim.StorageClass && lodash_es_includes__WEBPACK_IMPORTED_MODULE_5___default()(volume.PersistentVolumeClaim.StorageClass.AccessModes, 'RWX');\n\n          return isUnused || isRWX;\n        });\n\n        this.availableVolumes = filteredVolumes;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve volumes');\n      }\n    });\n  }\n\n  refreshIngresses(namespace) {\n    return this.$async(async () => {\n      try {\n        this.ingresses = await this.KubernetesIngressService.get(namespace);\n        this.ingressHostnames = this.ingresses.length ? this.ingresses[0].Hosts : [];\n\n        if (!this.publishViaIngressEnabled()) {\n          if (this.savedFormValues) {\n            this.formValues.PublishingType = this.savedFormValues.PublishingType;\n          } else {\n            this.formValues.PublishingType = this.ApplicationPublishingTypes.CLUSTER_IP;\n          }\n        }\n\n        this.formValues.OriginalIngresses = this.ingresses;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve ingresses');\n      }\n    });\n  }\n\n  refreshNamespaceData(namespace) {\n    return this.$async(async () => {\n      await Promise.all([this.refreshStacks(namespace), this.refreshConfigurations(namespace), this.refreshApplications(namespace), this.refreshIngresses(namespace), this.refreshVolumes(namespace)]);\n      this.onChangeName();\n    });\n  }\n\n  resetFormValues() {\n    this.clearConfigurations();\n    this.resetPersistedFolders();\n    this.resetPublishedPorts();\n  }\n\n  onResourcePoolSelectionChange() {\n    return this.$async(async () => {\n      const namespace = this.formValues.ResourcePool.Namespace.Name;\n      this.updateNamespaceLimits();\n      this.updateSliders();\n      await this.refreshNamespaceData(namespace);\n      this.resetFormValues();\n    });\n  }\n  /* #endregion */\n\n  /* #region  ACTIONS */\n\n\n  async deployApplicationAsync() {\n    this.state.actionInProgress = true;\n\n    try {\n      this.formValues.ApplicationOwner = this.Authentication.getUserDetails().username;\n\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.Configurations, item => item.SelectedConfiguration === undefined);\n\n      await this.KubernetesApplicationService.create(this.formValues);\n      this.Notifications.success('应用程序成功部署', this.formValues.Name);\n      this.$state.go('kubernetes.applications');\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法创建应用程序');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  async updateApplicationAsync(ingressesToUpdate, rulePlural) {\n    if (ingressesToUpdate.length) {\n      try {\n        await Promise.all(ingressesToUpdate.map(ing => (0,_kubernetes_react_views_networks_ingresses_service__WEBPACK_IMPORTED_MODULE_28__.updateIngress)(this.endpoint.Id, ing)));\n        this.Notifications.success('Success', `入口$ ${rulePlural} 成功更新了`);\n      } catch (error) {\n        this.Notifications.error('失败', error, '无法更新接入点');\n      }\n    }\n\n    try {\n      this.state.actionInProgress = true;\n      await this.KubernetesApplicationService.patch(this.savedFormValues, this.formValues);\n      this.Notifications.success('Success', '应用程序成功更新');\n      this.$state.go('kubernetes.applications.application', {\n        name: this.application.Name,\n        namespace: this.application.ResourcePool\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法更新应用程序');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  async confirmUpdateApplicationAsync() {\n    const [ingressesToUpdate, servicePortsToUpdate] = await this.checkIngressesToUpdate(); // if there is an ingressesToUpdate, then show a warning modal with asking if they want to update the ingresses\n\n    if (ingressesToUpdate.length) {\n      const rulePlural = ingressesToUpdate.length > 1 ? 'rules' : 'rule';\n      const noMatchSentence = servicePortsToUpdate.length > 1 ? `此应用程序中的服务端口不再匹配入口 ${rulePlural}.` : `该应用中的一个服务端口不再匹配入口 ${rulePlural} ，这可能会破坏入口规则路径。`;\n      const message = `\n        <ul class=\"ml-3\">\n          <li>更新应用程序可能会导致服务中断。</li>\n          <li>${noMatchSentence}</li>\n        </ul>\n      `;\n      const inputLabel = `更新入口 ${rulePlural} 以匹配服务端口的变化`;\n      (0,_portainer_services_modal_service_prompt__WEBPACK_IMPORTED_MODULE_29__.confirmUpdateAppIngress)(`你确定吗？`, message, inputLabel, value => {\n        if (value === null) {\n          return;\n        }\n\n        if (value.length === 0) {\n          return this.$async(this.updateApplicationAsync, [], '');\n        }\n\n        if (value[0] === '1') {\n          return this.$async(this.updateApplicationAsync, ingressesToUpdate, rulePlural);\n        }\n      });\n    } else {\n      this.ModalService.confirmUpdate('更新应用程序可能会导致服务中断。您希望继续吗？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateApplicationAsync, [], '');\n        }\n      });\n    }\n  } // check if service ports with ingresses have changed and allow the user to update the ingress to the new port values with a modal\n\n\n  async checkIngressesToUpdate() {\n    let ingressesToUpdate = [];\n    let servicePortsToUpdate = [];\n    const fullIngresses = await (0,_kubernetes_react_views_networks_ingresses_service__WEBPACK_IMPORTED_MODULE_28__.getIngresses)(this.endpoint.Id, this.formValues.ResourcePool.Namespace.Name);\n    this.formValues.Services.forEach(updatedService => {\n      const oldServiceIndex = this.oldFormValues.Services.findIndex(oldService => oldService.Name === updatedService.Name);\n      const numberOfPortsInOldService = this.oldFormValues.Services[oldServiceIndex] && this.oldFormValues.Services[oldServiceIndex].Ports.length; // if the service has an ingress and there is the same number of ports or more in the updated service\n\n      if (updatedService.Ingress && numberOfPortsInOldService && numberOfPortsInOldService <= updatedService.Ports.length) {\n        const updatedOldPorts = updatedService.Ports.slice(0, numberOfPortsInOldService);\n        const ingressesForService = fullIngresses.filter(ing => {\n          const ingServiceNames = ing.Paths.map(path => path.ServiceName);\n\n          if (ingServiceNames.includes(updatedService.Name)) {\n            return true;\n          }\n        });\n        ingressesForService.forEach(ingressForService => {\n          updatedOldPorts.forEach((servicePort, pIndex) => {\n            if (servicePort.ingress) {\n              // if there isn't a ingress path that has a matching service name and port\n              const doesIngressPathMatchServicePort = ingressForService.Paths.find(ingPath => ingPath.ServiceName === updatedService.Name && ingPath.Port === servicePort.port);\n\n              if (!doesIngressPathMatchServicePort) {\n                // then find the ingress path index to update by looking for the matching port in the old form values\n                const oldServicePort = this.oldFormValues.Services[oldServiceIndex].Ports[pIndex].port;\n                const newServicePort = servicePort.port;\n                const ingressPathIndex = ingressForService.Paths.findIndex(ingPath => {\n                  return ingPath.ServiceName === updatedService.Name && ingPath.Port === oldServicePort;\n                });\n\n                if (ingressPathIndex !== -1) {\n                  // if the ingress to update isn't in the ingressesToUpdate list\n                  const ingressUpdateIndex = ingressesToUpdate.findIndex(ing => ing.Name === ingressForService.Name);\n\n                  if (ingressUpdateIndex === -1) {\n                    // then add it to the list with the new port\n                    const ingressToUpdate = angular__WEBPACK_IMPORTED_MODULE_14___default().copy(ingressForService);\n                    ingressToUpdate.Paths[ingressPathIndex].Port = newServicePort;\n                    ingressesToUpdate.push(ingressToUpdate);\n                  } else {\n                    // if the ingress is already in the list, then update the path with the new port\n                    ingressesToUpdate[ingressUpdateIndex].Paths[ingressPathIndex].Port = newServicePort;\n                  }\n\n                  if (!servicePortsToUpdate.includes(newServicePort)) {\n                    servicePortsToUpdate.push(newServicePort);\n                  }\n                }\n              }\n            }\n          });\n        });\n      }\n    });\n    return [ingressesToUpdate, servicePortsToUpdate];\n  }\n\n  deployApplication() {\n    if (this.state.isEdit) {\n      return this.$async(this.confirmUpdateApplicationAsync);\n    } else {\n      return this.$async(this.deployApplicationAsync);\n    }\n  }\n  /* #endregion */\n\n  /* #region  APPLICATION - used on edit context only */\n\n\n  getApplication() {\n    return this.$async(async () => {\n      try {\n        const namespace = this.$state.params.namespace;\n        const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n        [this.application, this.persistentVolumeClaims] = await Promise.all([this.KubernetesApplicationService.get(namespace, this.$state.params.name), this.KubernetesPersistentVolumeClaimService.get(namespace, storageClasses)]);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法检索到应用程序的详细信息');\n      }\n    });\n  }\n\n  async parseImageConfiguration(imageModel) {\n    return this.$async(async () => {\n      try {\n        return await this.RegistryService.retrievePorRegistryModelFromRepository(imageModel.Image, this.endpoint.Id, imageModel.Registry.Id, this.$state.params.namespace);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registry');\n        return imageModel;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  ON INIT */\n\n\n  $onInit() {\n    return this.$async(async () => {\n      try {\n        this.storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n        this.state.useLoadBalancer = this.endpoint.Kubernetes.Configuration.UseLoadBalancer;\n        this.state.useServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n        const [resourcePools, nodes, nodesLimits] = await Promise.all([this.KubernetesResourcePoolService.get(), this.KubernetesNodeService.get(), this.KubernetesNodesLimitsService.get()]);\n        this.nodesLimits = nodesLimits;\n\n        const nonSystemNamespaces = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(resourcePools, resourcePool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_26__[\"default\"].isSystemNamespace(resourcePool.Namespace.Name));\n\n        this.allNamespaces = resourcePools.map(({\n          Namespace\n        }) => Namespace.Name);\n        this.resourcePools = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_0___default()(nonSystemNamespaces, ({\n          Namespace\n        }) => Namespace.Name === 'default' ? 0 : 1);\n        this.formValues.ResourcePool = this.resourcePools[0];\n\n        if (!this.formValues.ResourcePool) {\n          return;\n        }\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(nodes, item => {\n          this.state.nodes.memory += filesize_parser__WEBPACK_IMPORTED_MODULE_15___default()(item.Memory);\n          this.state.nodes.cpu += item.CPU;\n        });\n\n        this.nodesLabels = Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_27__.KubernetesNodeHelper.generateNodeLabelsFromNodes(nodes);\n        this.nodeNumber = nodes.length;\n        const namespace = this.state.isEdit ? this.$state.params.namespace : this.formValues.ResourcePool.Namespace.Name;\n        await this.refreshNamespaceData(namespace);\n\n        if (this.state.isEdit) {\n          await this.getApplication();\n          this.formValues = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_21__[\"default\"].applicationToFormValues(this.application, this.resourcePools, this.configurations, this.persistentVolumeClaims, this.nodesLabels, this.ingresses);\n\n          if (this.application.ApplicationKind) {\n            this.state.appType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesDeploymentTypes[this.application.ApplicationKind.toUpperCase()];\n\n            if (this.application.ApplicationKind === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesDeploymentTypes.URL) {\n              this.state.appType = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesDeploymentTypes.CONTENT;\n            }\n\n            if (this.application.StackId) {\n              this.stack = await this.StackService.stack(this.application.StackId);\n\n              if (this.state.appType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesDeploymentTypes.CONTENT) {\n                this.stackFileContent = await this.StackService.getStackFile(this.application.StackId);\n              }\n            }\n          }\n\n          this.formValues.OriginalIngresses = this.ingresses;\n          this.formValues.ImageModel = await this.parseImageConfiguration(this.formValues.ImageModel);\n          this.savedFormValues = angular__WEBPACK_IMPORTED_MODULE_14___default().copy(this.formValues);\n          delete this.formValues.ApplicationType;\n\n          if (this.application.ApplicationType !== Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_18__.KubernetesApplicationTypes.STATEFULSET) {\n            lodash_es_forEach__WEBPACK_IMPORTED_MODULE_7___default()(this.formValues.PersistedFolders, persistedFolder => {\n              const volume = lodash_es_find__WEBPACK_IMPORTED_MODULE_13___default()(this.availableVolumes, ['PersistentVolumeClaim.Name', persistedFolder.PersistentVolumeClaimName]);\n\n              if (volume) {\n                persistedFolder.UseNewVolume = false;\n                persistedFolder.ExistingVolume = volume;\n              }\n            });\n          }\n\n          await this.refreshNamespaceData(namespace);\n        } else {\n          this.formValues.AutoScaler = Kubernetes_helpers_application_index__WEBPACK_IMPORTED_MODULE_24__[\"default\"].generateAutoScalerFormValueFromHorizontalPodAutoScaler(null, this.formValues.ReplicaCount);\n        }\n\n        if (this.state.isEdit) {\n          this.nodesLimits.excludesPods(this.application.Pods, this.formValues.CpuLimit, Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_22__[\"default\"].bytesValue(this.formValues.MemoryLimit));\n        }\n\n        this.formValues.IsPublishingService = this.formValues.PublishedPorts.length > 0;\n        this.oldFormValues = angular__WEBPACK_IMPORTED_MODULE_14___default().copy(this.formValues);\n        this.updateNamespaceLimits();\n        this.updateSliders();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to load view data');\n      } finally {\n        this.state.viewReady = true;\n      }\n    });\n  }\n  /* #endregion */\n\n\n}\n\nKubernetesCreateApplicationController.$inject = [\"$scope\", \"$async\", \"$state\", \"Notifications\", \"Authentication\", \"ModalService\", \"KubernetesResourcePoolService\", \"KubernetesApplicationService\", \"KubernetesStackService\", \"KubernetesConfigurationService\", \"KubernetesNodeService\", \"KubernetesIngressService\", \"KubernetesPersistentVolumeClaimService\", \"KubernetesVolumeService\", \"RegistryService\", \"StackService\", \"KubernetesNodesLimitsService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesCreateApplicationController);\nangular__WEBPACK_IMPORTED_MODULE_14___default().module('portainer.kubernetes').controller('KubernetesCreateApplicationController', KubernetesCreateApplicationController);//# sourceURL=webpack-internal:///8924\n");

}),

56378:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./application.html */ 45758);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///56378\n");

}),

66485:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_nth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/nth */ 92375);\n/* harmony import */ var lodash_es_nth__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_nth__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/trimStart */ 19980);\n/* harmony import */ var lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/helpers/eventHelper */ 52929);\n/* harmony import */ var Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/helpers/application */ 57947);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/pod/models/index */ 31275);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction computeTolerations(nodes, application) {\n  const pod = application.Pods[0];\n\n  lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(nodes, n => {\n    n.AcceptsApplication = true;\n    n.Expanded = false;\n\n    if (!pod) {\n      return;\n    }\n\n    n.UnmetTaints = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(n.Taints, t => {\n      const matchKeyMatchValueMatchEffect = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(pod.Tolerations, {\n        Key: t.Key,\n        Operator: 'Equal',\n        Value: t.Value,\n        Effect: t.Effect\n      });\n\n      const matchKeyAnyValueMatchEffect = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(pod.Tolerations, {\n        Key: t.Key,\n        Operator: 'Exists',\n        Effect: t.Effect\n      });\n\n      const matchKeyMatchValueAnyEffect = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(pod.Tolerations, {\n        Key: t.Key,\n        Operator: 'Equal',\n        Value: t.Value,\n        Effect: ''\n      });\n\n      const matchKeyAnyValueAnyEffect = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(pod.Tolerations, {\n        Key: t.Key,\n        Operator: 'Exists',\n        Effect: ''\n      });\n\n      const anyKeyAnyValueAnyEffect = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(pod.Tolerations, {\n        Key: '',\n        Operator: 'Exists',\n        Effect: ''\n      });\n\n      if (!matchKeyMatchValueMatchEffect && !matchKeyAnyValueMatchEffect && !matchKeyMatchValueAnyEffect && !matchKeyAnyValueAnyEffect && !anyKeyAnyValueAnyEffect) {\n        n.AcceptsApplication = false;\n        n.UnmetTaints.push(t);\n      } else {\n        n.AcceptsApplication = true;\n      }\n    });\n  });\n\n  return nodes;\n} // For node requirement format depending on operator value\n// see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#nodeselectorrequirement-v1-core\n// Some operators require empty \"values\" field, some only one element in \"values\" field, etc\n\n\nfunction computeAffinities(nodes, application) {\n  if (!application.Pods || application.Pods.length === 0) {\n    return nodes;\n  }\n\n  const pod = application.Pods[0];\n\n  lodash_es_forEach__WEBPACK_IMPORTED_MODULE_8___default()(nodes, n => {\n    if (pod.NodeSelector) {\n      const patch = fast_json_patch__WEBPACK_IMPORTED_MODULE_10__.compare(n.Labels, pod.NodeSelector);\n\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(patch, {\n        op: 'remove'\n      });\n\n      n.UnmatchedNodeSelectorLabels = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(patch, i => {\n        return {\n          key: lodash_es_trimStart__WEBPACK_IMPORTED_MODULE_4___default()(i.path, '/'),\n          value: i.value\n        };\n      });\n\n      if (n.UnmatchedNodeSelectorLabels.length) {\n        n.AcceptsApplication = false;\n      }\n    }\n\n    if (pod.Affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution) {\n      const unmatchedTerms = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(pod.Affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms, t => {\n        const unmatchedExpressions = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(t.matchExpressions, e => {\n          const exists = {}.hasOwnProperty.call(n.Labels, e.key);\n\n          const isIn = exists && lodash_es_includes__WEBPACK_IMPORTED_MODULE_3___default()(e.values, n.Labels[e.key]);\n\n          if (e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS && exists || e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.DOES_NOT_EXIST && !exists || e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN && isIn || e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.NOT_IN && !isIn || e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.GREATER_THAN && exists && parseInt(n.Labels[e.key], 10) > parseInt(e.values[0], 10) || e.operator === Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodNodeAffinityNodeSelectorRequirementOperators.LOWER_THAN && exists && parseInt(n.Labels[e.key], 10) < parseInt(e.values[0], 10)) {\n            return;\n          }\n\n          return e;\n        });\n\n        return lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(unmatchedExpressions, undefined);\n      });\n\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_6___default()(unmatchedTerms, i => i.length === 0);\n\n      n.UnmatchedNodeAffinities = unmatchedTerms;\n\n      if (n.UnmatchedNodeAffinities.length) {\n        n.AcceptsApplication = false;\n      }\n    }\n  });\n\n  return nodes;\n}\n\nfunction computePlacements(nodes, application) {\n  nodes = computeTolerations(nodes, application);\n  nodes = computeAffinities(nodes, application);\n  return nodes;\n}\n\nclass KubernetesApplicationController {\n  /* @ngInject */\n  constructor($async, $state, clipboard, Notifications, LocalStorage, ModalService, KubernetesResourcePoolService, KubernetesApplicationService, KubernetesEventService, KubernetesStackService, KubernetesPodService, KubernetesNodeService, StackService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.clipboard = clipboard;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.ModalService = ModalService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.StackService = StackService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesEventService = KubernetesEventService;\n    this.KubernetesStackService = KubernetesStackService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesApplicationDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesApplicationDeploymentTypes;\n    this.KubernetesApplicationTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesApplicationTypes;\n    this.KubernetesDeploymentTypes = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesDeploymentTypes;\n    this.ApplicationDataAccessPolicies = Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_11__.KubernetesApplicationDataAccessPolicies;\n    this.KubernetesServiceTypes = Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_14__.KubernetesServiceTypes;\n    this.KubernetesPodContainerTypes = Kubernetes_pod_models__WEBPACK_IMPORTED_MODULE_15__.KubernetesPodContainerTypes;\n    this.onInit = this.onInit.bind(this);\n    this.getApplication = this.getApplication.bind(this);\n    this.getApplicationAsync = this.getApplicationAsync.bind(this);\n    this.getEvents = this.getEvents.bind(this);\n    this.getEventsAsync = this.getEventsAsync.bind(this);\n    this.updateApplicationKindText = this.updateApplicationKindText.bind(this);\n    this.updateApplicationAsync = this.updateApplicationAsync.bind(this);\n    this.redeployApplicationAsync = this.redeployApplicationAsync.bind(this);\n    this.rollbackApplicationAsync = this.rollbackApplicationAsync.bind(this);\n    this.copyLoadBalancerIP = this.copyLoadBalancerIP.bind(this);\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('application', index);\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n    this.selectTab(3);\n  }\n\n  isSystemNamespace() {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_16__[\"default\"].isSystemNamespace(this.application.ResourcePool);\n  }\n\n  isExternalApplication() {\n    return Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].isExternalApplication(this.application);\n  }\n\n  copyLoadBalancerIP() {\n    this.clipboard.copyText(this.application.LoadBalancerIPAddress);\n    $('#copyNotificationLB').show().fadeOut(2500);\n  }\n\n  copyApplicationName() {\n    this.clipboard.copyText(this.application.Name);\n    $('#copyNotificationApplicationName').show().fadeOut(2500);\n  }\n\n  hasPersistedFolders() {\n    return this.application && this.application.PersistedFolders.length;\n  }\n\n  hasVolumeConfiguration() {\n    return this.application && this.application.ConfigurationVolumes.length;\n  }\n\n  hasEventWarnings() {\n    return this.state.eventWarningCount;\n  }\n\n  buildIngressRuleURL(rule) {\n    const hostname = rule.Host ? rule.Host : rule.IP;\n    return 'http://' + hostname + rule.Path;\n  }\n\n  portHasIngressRules(port) {\n    return port.IngressRules.length > 0;\n  }\n\n  ruleCanBeDisplayed(rule) {\n    return !rule.Host && !rule.IP ? false : true;\n  }\n\n  isStack() {\n    return this.application.StackId;\n  }\n  /**\n   * ROLLBACK\n   */\n\n\n  async rollbackApplicationAsync() {\n    try {\n      // await this.KubernetesApplicationService.rollback(this.application, this.formValues.SelectedRevision);\n      const revision = lodash_es_nth__WEBPACK_IMPORTED_MODULE_1___default()(this.application.Revisions, -2);\n\n      await this.KubernetesApplicationService.rollback(this.application, revision);\n      this.Notifications.success('Success', 'Application successfully rolled back');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to rollback the application');\n    }\n  }\n\n  rollbackApplication() {\n    this.ModalService.confirmUpdate('Rolling back the application to a previous configuration may cause a service interruption. Do you wish to continue?', confirmed => {\n      if (confirmed) {\n        return this.$async(this.rollbackApplicationAsync);\n      }\n    });\n  }\n  /**\n   * REDEPLOY\n   */\n\n\n  async redeployApplicationAsync() {\n    try {\n      const promises = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.application.Pods, item => this.KubernetesPodService.delete(item));\n\n      await Promise.all(promises);\n      this.Notifications.success('Success', 'Application successfully redeployed');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to redeploy the application');\n    }\n  }\n\n  redeployApplication() {\n    this.ModalService.confirmUpdate('Redeploying the application may cause a service interruption. Do you wish to continue?', confirmed => {\n      if (confirmed) {\n        return this.$async(this.redeployApplicationAsync);\n      }\n    });\n  }\n  /**\n   * UPDATE\n   */\n\n\n  async updateApplicationAsync() {\n    try {\n      const application = angular__WEBPACK_IMPORTED_MODULE_9___default().copy(this.application);\n      application.Note = this.formValues.Note;\n      await this.KubernetesApplicationService.patch(this.application, application, true);\n      this.Notifications.success('Success', 'Application successfully updated');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update application');\n    }\n  }\n\n  updateApplication() {\n    return this.$async(this.updateApplicationAsync);\n  }\n\n  updateApplicationKindText() {\n    if (this.application.ApplicationKind === this.KubernetesDeploymentTypes.GIT) {\n      this.state.appType = `git repository`;\n    } else if (this.application.ApplicationKind === this.KubernetesDeploymentTypes.CONTENT) {\n      this.state.appType = `manifest`;\n    } else if (this.application.ApplicationKind === this.KubernetesDeploymentTypes.URL) {\n      this.state.appType = `manifest`;\n    }\n  }\n  /**\n   * EVENTS\n   */\n\n\n  async getEventsAsync() {\n    try {\n      this.state.eventsLoading = true;\n      const events = await this.KubernetesEventService.get(this.state.params.namespace);\n      this.events = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(events, event => event.Involved.uid === this.application.Id || event.Involved.uid === this.application.ServiceId || lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(this.application.Pods, pod => pod.Id === event.Involved.uid) !== undefined);\n      this.state.eventWarningCount = Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_12__[\"default\"].warningCount(this.events);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application related events');\n    } finally {\n      this.state.eventsLoading = false;\n    }\n  }\n\n  getEvents() {\n    return this.$async(this.getEventsAsync);\n  }\n  /**\n   * APPLICATION\n   */\n\n\n  async getApplicationAsync() {\n    try {\n      this.state.dataLoading = true;\n      const [application, nodes] = await Promise.all([this.KubernetesApplicationService.get(this.state.params.namespace, this.state.params.name), this.KubernetesNodeService.get()]);\n      this.application = application;\n      this.allContainers = Kubernetes_helpers_application__WEBPACK_IMPORTED_MODULE_13__[\"default\"].associateAllContainersAndApplication(application);\n      this.formValues.Note = this.application.Note;\n      this.formValues.Services = this.application.Services;\n\n      if (this.application.Note) {\n        this.state.expandedNote = true;\n      }\n\n      if (this.application.CurrentRevision) {\n        this.formValues.SelectedRevision = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(this.application.Revisions, {\n          revision: this.application.CurrentRevision.revision\n        });\n      }\n\n      this.state.useIngress = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(application.PublishedPorts, p => {\n        return this.portHasIngressRules(p);\n      });\n      this.placements = computePlacements(nodes, this.application);\n      this.state.placementWarning = lodash_es_find__WEBPACK_IMPORTED_MODULE_7___default()(this.placements, {\n        AcceptsApplication: true\n      }) ? false : true;\n\n      if (application.StackId) {\n        const file = await this.StackService.getStackFile(application.StackId);\n        this.stackFileContent = file;\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application details');\n    } finally {\n      this.state.dataLoading = false;\n    }\n  }\n\n  getApplication() {\n    return this.$async(this.getApplicationAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      activeTab: 0,\n      currentName: this.$state.$current.name,\n      showEditorTab: false,\n      DisplayedPanel: 'pods',\n      eventsLoading: true,\n      dataLoading: true,\n      viewReady: false,\n      params: {\n        namespace: this.$transition$.params().namespace,\n        name: this.$transition$.params().name\n      },\n      appType: this.KubernetesDeploymentTypes.APPLICATION_FORM,\n      eventWarningCount: 0,\n      placementWarning: false,\n      expandedNote: false,\n      useIngress: false,\n      useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics,\n      publicUrl: this.endpoint.PublicURL\n    };\n    this.state.activeTab = this.LocalStorage.getActiveTab('application');\n    this.formValues = {\n      Note: '',\n      SelectedRevision: undefined\n    };\n    const resourcePools = await this.KubernetesResourcePoolService.get();\n    this.allNamespaces = resourcePools.map(({\n      Namespace\n    }) => Namespace.Name);\n    await this.getApplication();\n    await this.getEvents();\n    this.updateApplicationKindText();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('application', 0);\n    }\n  }\n\n}\n\nKubernetesApplicationController.$inject = [\"$async\", \"$state\", \"clipboard\", \"Notifications\", \"LocalStorage\", \"ModalService\", \"KubernetesResourcePoolService\", \"KubernetesApplicationService\", \"KubernetesEventService\", \"KubernetesStackService\", \"KubernetesPodService\", \"KubernetesNodeService\", \"StackService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationController);\nangular__WEBPACK_IMPORTED_MODULE_9___default().module('portainer.kubernetes').controller('KubernetesApplicationController', KubernetesApplicationController);//# sourceURL=webpack-internal:///66485\n");

}),

20630:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesApplicationIngressController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n\nclass KubernetesApplicationIngressController {\n  /* @ngInject */\n  constructor($async, KubernetesIngressService) {\n    this.$async = $async;\n    this.KubernetesIngressService = KubernetesIngressService;\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.hasIngress;\n      this.applicationIngress = [];\n      const ingresses = await this.KubernetesIngressService.get(this.application.ResourcePool);\n      const services = this.application.Services;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(services, service => {\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(ingresses, ingress => {\n          lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(ingress.Paths, path => {\n            if (path.ServiceName === service.metadata.name) {\n              path.Secure = ingress.TLS && ingress.TLS.filter(tls => tls.hosts && tls.hosts.includes(path.Host)).length > 0;\n              this.applicationIngress.push(path);\n              this.hasIngress = true;\n            }\n          });\n        });\n      });\n    });\n  }\n\n}\nKubernetesApplicationIngressController.$inject = [\"$async\", \"KubernetesIngressService\"];//# sourceURL=webpack-internal:///20630\n");

}),

63060:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ingress_table_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ingress-table.controller */ 20630);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ingress-table.html */ 70881);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesApplicationIngressTable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ingress_table_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    application: '<',\n    publicUrl: '<'\n  }\n});//# sourceURL=webpack-internal:///63060\n");

}),

29272:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.docker').controller('KubernetesApplicationPlacementsDatatableController', [\"$scope\", \"$controller\", \"DatatableService\", \"Authentication\", function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: false\n  });\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return !item.AcceptsApplication;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///29272\n");

}),

50156:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./template.html */ 83260);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationPlacementsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationPlacementsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<',\n    loading: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///50156\n");

}),

18137:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./services-table.html */ 29262);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesApplicationServicesTable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    services: '<',\n    application: '<',\n    publicUrl: '<'\n  }\n});//# sourceURL=webpack-internal:///18137\n");

}),

85392:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KubernetesHelmApplicationController; }\n/* harmony export */ });\n/* harmony import */ var Portainer_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/error */ 20023);\n\nclass KubernetesHelmApplicationController {\n  /* @ngInject */\n  constructor($async, $state, Authentication, Notifications, HelmService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Authentication = Authentication;\n    this.Notifications = Notifications;\n    this.HelmService = HelmService;\n  }\n  /**\n   * APPLICATION\n   */\n\n\n  async getHelmApplication() {\n    try {\n      this.state.dataLoading = true;\n      const releases = await this.HelmService.listReleases(this.endpoint.Id, {\n        selector: `name=${this.state.params.name}`,\n        namespace: this.state.params.namespace\n      });\n\n      if (releases.length > 0) {\n        this.state.release = releases[0];\n      } else {\n        throw new Portainer_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"](`Release ${this.state.params.name} not found`);\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve helm application details');\n    } finally {\n      this.state.dataLoading = false;\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.state = {\n        dataLoading: true,\n        viewReady: false,\n        params: {\n          name: this.$state.params.name,\n          namespace: this.$state.params.namespace\n        },\n        release: {\n          name: undefined,\n          chart: undefined,\n          app_version: undefined\n        }\n      };\n      await this.getHelmApplication();\n      this.state.viewReady = true;\n    });\n  }\n\n}\nKubernetesHelmApplicationController.$inject = [\"$async\", \"$state\", \"Authentication\", \"Notifications\", \"HelmService\"];//# sourceURL=webpack-internal:///85392\n");

}),

8180:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helm_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helm.controller */ 85392);\n/* harmony import */ var _helm_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helm.css */ 554);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./helm.html */ 21152);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesHelmApplicationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _helm_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///8180\n");

}),

81297:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./logs.html */ 28068);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationLogsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationLogsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///81297\n");

}),

94649:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/docker/helpers/logHelper */ 17110);\n\n\n\nclass KubernetesApplicationLogsController {\n  /* @ngInject */\n  constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, Blob, FileSaver) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$interval = $interval;\n    this.Notifications = Notifications;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.Blob = Blob;\n    this.FileSaver = FileSaver;\n    this.onInit = this.onInit.bind(this);\n    this.stopRepeater = this.stopRepeater.bind(this);\n    this.getApplicationLogsAsync = this.getApplicationLogsAsync.bind(this);\n  }\n\n  updateAutoRefresh() {\n    if (this.state.autoRefresh) {\n      this.setUpdateRepeater();\n      return;\n    }\n\n    this.stopRepeater();\n  }\n\n  stopRepeater() {\n    if (angular__WEBPACK_IMPORTED_MODULE_0___default().isDefined(this.repeater)) {\n      this.$interval.cancel(this.repeater);\n      this.repeater = null;\n    }\n  }\n\n  setUpdateRepeater() {\n    this.repeater = this.$interval(this.getApplicationLogsAsync, this.state.refreshRate);\n  }\n\n  downloadLogs() {\n    const logsAsString = (0,_docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_1__.concatLogsToString)(this.applicationLogs);\n    const data = new this.Blob([logsAsString]);\n    this.FileSaver.saveAs(data, this.podName + '_logs.txt');\n  }\n\n  async getApplicationLogsAsync() {\n    try {\n      const rawLogs = await this.KubernetesPodService.logs(this.application.ResourcePool, this.podName, this.containerName);\n      this.applicationLogs = (0,_docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_1__.formatLogs)(rawLogs);\n    } catch (err) {\n      this.stopRepeater();\n      this.Notifications.error('失败', err, 'Unable to retrieve application logs');\n    }\n  }\n\n  async onInit() {\n    this.state = {\n      autoRefresh: false,\n      refreshRate: 5000,\n      // 5 seconds\n      search: '',\n      viewReady: false\n    };\n    const podName = this.$transition$.params().pod;\n    const applicationName = this.$transition$.params().name;\n    const namespace = this.$transition$.params().namespace;\n    const containerName = this.$transition$.params().container;\n    this.applicationLogs = [];\n    this.podName = podName;\n    this.containerName = containerName;\n\n    try {\n      this.application = await this.KubernetesApplicationService.get(namespace, applicationName);\n      await this.getApplicationLogsAsync();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application logs');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    this.stopRepeater();\n  }\n\n}\n\nKubernetesApplicationLogsController.$inject = [\"$async\", \"$state\", \"$interval\", \"Notifications\", \"KubernetesApplicationService\", \"KubernetesPodService\", \"Blob\", \"FileSaver\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationLogsController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesApplicationLogsController', KubernetesApplicationLogsController);//# sourceURL=webpack-internal:///94649\n");

}),

61260:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stats.html */ 96144);\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationStatsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesApplicationStatsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///61260\n");

}),

13754:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/pod/converter */ 22050);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\nclass KubernetesApplicationStatsController {\n  /* @ngInject */\n  constructor($async, $state, $interval, $document, Notifications, KubernetesPodService, KubernetesNodeService, KubernetesMetricsService, ChartService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$interval = $interval;\n    this.$document = $document;\n    this.Notifications = Notifications;\n    this.KubernetesPodService = KubernetesPodService;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesMetricsService = KubernetesMetricsService;\n    this.ChartService = ChartService;\n    this.onInit = this.onInit.bind(this);\n  }\n\n  changeUpdateRepeater() {\n    var cpuChart = this.cpuChart;\n    var memoryChart = this.memoryChart;\n    this.stopRepeater();\n    this.setUpdateRepeater(cpuChart, memoryChart);\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(1500);\n  }\n\n  updateCPUChart() {\n    const label = moment__WEBPACK_IMPORTED_MODULE_2___default()(this.stats.read).format('HH:mm:ss');\n    this.ChartService.UpdateCPUChart(label, this.stats.CPUUsage, this.cpuChart);\n  }\n\n  updateMemoryChart() {\n    const label = moment__WEBPACK_IMPORTED_MODULE_2___default()(this.stats.read).format('HH:mm:ss');\n    this.ChartService.UpdateMemoryChart(label, this.stats.MemoryUsage, this.stats.MemoryCache, this.memoryChart);\n  }\n\n  stopRepeater() {\n    var repeater = this.repeater;\n\n    if (angular__WEBPACK_IMPORTED_MODULE_1___default().isDefined(repeater)) {\n      this.$interval.cancel(repeater);\n      repeater = undefined;\n    }\n  }\n\n  setUpdateRepeater() {\n    const refreshRate = this.state.refreshRate;\n    this.repeater = this.$interval(async () => {\n      try {\n        await this.getStats();\n        this.updateCPUChart();\n        this.updateMemoryChart();\n      } catch (error) {\n        this.stopRepeater();\n        this.Notifications.error('失败', error);\n      }\n    }, refreshRate * 1000);\n  }\n\n  initCharts() {\n    const cpuChartCtx = $('#cpuChart');\n    const cpuChart = this.ChartService.CreateCPUChart(cpuChartCtx);\n    this.cpuChart = cpuChart;\n    const memoryChartCtx = $('#memoryChart');\n    const memoryChart = this.ChartService.CreateMemoryChart(memoryChartCtx);\n    this.memoryChart = memoryChart;\n    this.updateCPUChart();\n    this.updateMemoryChart();\n    this.setUpdateRepeater();\n  }\n\n  getStats() {\n    return this.$async(async () => {\n      try {\n        const stats = await this.KubernetesMetricsService.getPod(this.state.transition.namespace, this.state.transition.podName);\n\n        const container = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(stats.containers, {\n          name: this.state.transition.containerName\n        });\n\n        if (container) {\n          const memory = filesize_parser__WEBPACK_IMPORTED_MODULE_3___default()(container.usage.memory);\n          const cpu = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].parseCPU(container.usage.cpu);\n          this.stats = {\n            read: stats.timestamp,\n            preread: '',\n            MemoryCache: 0,\n            MemoryUsage: memory,\n            NumProcs: '',\n            isWindows: false,\n            PreviousCPUTotalUsage: 0,\n            CPUUsage: cpu / this.nodeCPU * 100,\n            CPUCores: 0\n          };\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve application stats');\n      }\n    });\n  }\n\n  $onDestroy() {\n    this.stopRepeater();\n  }\n\n  async onInit() {\n    this.state = {\n      autoRefresh: false,\n      refreshRate: '30',\n      viewReady: false,\n      transition: {\n        podName: this.$transition$.params().pod,\n        containerName: this.$transition$.params().container,\n        namespace: this.$transition$.params().namespace,\n        applicationName: this.$transition$.params().name\n      },\n      getMetrics: false\n    };\n\n    try {\n      await this.KubernetesMetricsService.getPod(this.state.transition.namespace, this.state.transition.podName);\n    } catch (error) {\n      this.state.getMetrics = false;\n      this.state.viewReady = true;\n      return;\n    }\n\n    try {\n      const podRaw = await this.KubernetesPodService.get(this.state.transition.namespace, this.state.transition.podName);\n      const pod = Kubernetes_pod_converter__WEBPACK_IMPORTED_MODULE_5__[\"default\"].apiToModel(podRaw.Raw);\n\n      if (pod) {\n        const node = await this.KubernetesNodeService.get(pod.Node);\n        this.nodeCPU = node.CPU;\n      } else {\n        throw new Error('Unable to find pod');\n      }\n\n      await this.getStats();\n      this.state.getMetrics = true;\n      this.$document.ready(() => {\n        this.initCharts();\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application stats');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesApplicationStatsController.$inject = [\"$async\", \"$state\", \"$interval\", \"$document\", \"Notifications\", \"KubernetesPodService\", \"KubernetesNodeService\", \"KubernetesMetricsService\", \"ChartService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesApplicationStatsController);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.kubernetes').controller('KubernetesApplicationStatsController', KubernetesApplicationStatsController);//# sourceURL=webpack-internal:///13754\n");

}),

24924:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./cluster.html */ 21284);\n\nangular.module('portainer.kubernetes').component('kubernetesClusterView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesClusterController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///24924\n");

}),

99641:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/models/resource-reservation/models */ 46685);\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesClusterController {\n  /* @ngInject */\n  constructor($async, $state, Authentication, Notifications, LocalStorage, KubernetesNodeService, KubernetesMetricsService, KubernetesApplicationService, KubernetesEndpointService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Authentication = Authentication;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesMetricsService = KubernetesMetricsService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesEndpointService = KubernetesEndpointService;\n    this.onInit = this.onInit.bind(this);\n    this.getNodes = this.getNodes.bind(this);\n    this.getNodesAsync = this.getNodesAsync.bind(this);\n    this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n    this.getEndpointsAsync = this.getEndpointsAsync.bind(this);\n    this.hasResourceUsageAccess = this.hasResourceUsageAccess.bind(this);\n  }\n\n  async getEndpointsAsync() {\n    try {\n      const endpoints = await this.KubernetesEndpointService.get();\n\n      const systemEndpoints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(endpoints, {\n        Namespace: 'kube-system'\n      });\n\n      this.systemEndpoints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(systemEndpoints, ep => ep.HolderIdentity);\n\n      const kubernetesEndpoint = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(endpoints, {\n        Name: 'kubernetes'\n      });\n\n      if (kubernetesEndpoint && kubernetesEndpoint.Subsets) {\n        const ips = lodash_es_flatten__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default()(kubernetesEndpoint.Subsets, 'Ips'));\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(this.nodes, node => {\n          node.Api = lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(ips, node.IPAddress);\n        });\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environments');\n    }\n  }\n\n  getEndpoints() {\n    return this.$async(this.getEndpointsAsync);\n  }\n\n  async getNodesAsync() {\n    try {\n      const nodes = await this.KubernetesNodeService.get();\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(nodes, node => node.Memory = filesize_parser__WEBPACK_IMPORTED_MODULE_8___default()(node.Memory));\n\n      this.nodes = nodes;\n      this.CPULimit = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(this.nodes, (acc, node) => node.CPU + acc, 0);\n      this.CPULimit = Math.round(this.CPULimit * 10000) / 10000;\n      this.MemoryLimit = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(this.nodes, (acc, node) => Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].megaBytesValue(node.Memory) + acc, 0);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve nodes');\n    }\n  }\n\n  getNodes() {\n    return this.$async(this.getNodesAsync);\n  }\n\n  async getApplicationsAsync() {\n    try {\n      this.state.applicationsLoading = true;\n      this.applications = await this.KubernetesApplicationService.get();\n\n      const nodeNames = lodash_es_map__WEBPACK_IMPORTED_MODULE_3___default()(this.nodes, node => node.Name);\n\n      this.resourceReservation = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(this.applications, (acc, app) => {\n        app.Pods = lodash_es_filter__WEBPACK_IMPORTED_MODULE_6___default()(app.Pods, pod => nodeNames.includes(pod.Node));\n        const resourceReservation = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].computeResourceReservation(app.Pods);\n        acc.CPU += resourceReservation.CPU;\n        acc.Memory += resourceReservation.Memory;\n        return acc;\n      }, new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesResourceReservation());\n      this.resourceReservation.Memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].megaBytesValue(this.resourceReservation.Memory);\n\n      if (this.hasResourceUsageAccess()) {\n        await this.getResourceUsage(this.endpoint.Id);\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve applications');\n    } finally {\n      this.state.applicationsLoading = false;\n    }\n  }\n\n  getApplications() {\n    return this.$async(this.getApplicationsAsync);\n  }\n\n  async getResourceUsage(endpointId) {\n    try {\n      const nodeMetrics = await this.KubernetesMetricsService.getNodes(endpointId);\n      const resourceUsageList = nodeMetrics.items.map(i => i.usage);\n      const clusterResourceUsage = resourceUsageList.reduce((total, u) => {\n        total.CPU += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].parseCPU(u.cpu);\n        total.Memory += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].megaBytesValue(u.memory);\n        return total;\n      }, new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_10__.KubernetesResourceReservation());\n      this.resourceUsage = clusterResourceUsage;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve cluster resource usage');\n    }\n  }\n  /**\n   * Check if resource usage stats can be displayed\n   * @returns {boolean}\n   */\n\n\n  hasResourceUsageAccess() {\n    return this.isAdmin && this.state.useServerMetrics;\n  }\n\n  async onInit() {\n    this.isAdmin = this.Authentication.isAdmin();\n    const useServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n    this.state = {\n      applicationsLoading: true,\n      viewReady: false,\n      useServerMetrics\n    };\n    await this.getNodes();\n\n    if (this.isAdmin) {\n      await this.getEndpoints();\n      await this.getApplications();\n    }\n\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesClusterController.$inject = [\"$async\", \"$state\", \"Authentication\", \"Notifications\", \"LocalStorage\", \"KubernetesNodeService\", \"KubernetesMetricsService\", \"KubernetesApplicationService\", \"KubernetesEndpointService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesClusterController);\nangular__WEBPACK_IMPORTED_MODULE_7___default().module('portainer.kubernetes').controller('KubernetesClusterController', KubernetesClusterController);//# sourceURL=webpack-internal:///99641\n");

}),

64696:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./node.html */ 78928);\n\nangular.module('portainer.kubernetes').component('kubernetesNodeView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesNodeController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<',\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///64696\n");

}),

79308:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/values */ 68582);\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_values__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/resource-reservation/models */ 46685);\n/* harmony import */ var Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/helpers/eventHelper */ 52929);\n/* harmony import */ var Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/node/converter */ 76676);\n/* harmony import */ var Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/node/formValues */ 2949);\n/* harmony import */ var Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/node/models */ 85001);\n/* harmony import */ var Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/helpers/formValidationHelper */ 54241);\n/* harmony import */ var Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/node/helper */ 14780);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesNodeController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, LocalStorage, ModalService, KubernetesNodeService, KubernetesEventService, KubernetesPodService, KubernetesApplicationService, KubernetesEndpointService, KubernetesMetricsService, Authentication) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.ModalService = ModalService;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesEventService = KubernetesEventService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesEndpointService = KubernetesEndpointService;\n    this.KubernetesMetricsService = KubernetesMetricsService;\n    this.Authentication = Authentication;\n    this.onInit = this.onInit.bind(this);\n    this.getNodesAsync = this.getNodesAsync.bind(this);\n    this.getEvents = this.getEvents.bind(this);\n    this.getEventsAsync = this.getEventsAsync.bind(this);\n    this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n    this.getEndpointsAsync = this.getEndpointsAsync.bind(this);\n    this.updateNodeAsync = this.updateNodeAsync.bind(this);\n    this.drainNodeAsync = this.drainNodeAsync.bind(this);\n    this.hasResourceUsageAccess = this.hasResourceUsageAccess.bind(this);\n    this.getNodeUsageAsync = this.getNodeUsageAsync.bind(this);\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('node', index);\n  }\n  /* #region taint */\n\n\n  onChangeTaintKey(index) {\n    this.state.duplicateTaintKeys = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_13__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.formValues.Taints, taint => {\n      if (taint.NeedsDeletion) {\n        return undefined;\n      }\n\n      return taint.Key;\n    }));\n    this.state.hasDuplicateTaintKeys = Object.keys(this.state.duplicateTaintKeys).length > 0;\n    this.onChangeTaint(index);\n  }\n\n  onChangeTaint(index) {\n    if (this.formValues.Taints[index]) {\n      this.formValues.Taints[index].IsChanged = true;\n    }\n  }\n\n  addTaint() {\n    const taint = new Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_11__.KubernetesNodeTaintFormValues();\n    taint.IsNew = true;\n    taint.Effect = Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_12__.KubernetesNodeTaintEffects.NOSCHEDULE;\n    this.formValues.Taints.push(taint);\n  }\n\n  removeTaint(index) {\n    const taint = this.formValues.Taints[index];\n\n    if (taint.IsNew) {\n      this.formValues.Taints.splice(index, 1);\n    } else {\n      taint.NeedsDeletion = true;\n    }\n\n    this.onChangeTaintKey();\n  }\n\n  restoreTaint(index) {\n    this.formValues.Taints[index].NeedsDeletion = false;\n    this.onChangeTaintKey();\n  }\n\n  computeTaintsWarning() {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.Taints, taint => {\n      return taint.Effect === Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_12__.KubernetesNodeTaintEffects.NOEXECUTE && (taint.IsNew || taint.IsChanged);\n    }).length;\n  }\n  /* #endregion */\n\n  /* #region label */\n\n\n  onChangeLabelKey(index) {\n    this.state.duplicateLabelKeys = Kubernetes_helpers_formValidationHelper__WEBPACK_IMPORTED_MODULE_13__[\"default\"].getDuplicates(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.formValues.Labels, label => {\n      if (label.NeedsDeletion) {\n        return undefined;\n      }\n\n      return label.Key;\n    }));\n    this.state.hasDuplicateLabelKeys = Object.keys(this.state.duplicateLabelKeys).length > 0;\n    this.onChangeLabel(index);\n  }\n\n  onChangeLabel(index) {\n    if (this.formValues.Labels[index]) {\n      this.formValues.Labels[index].IsChanged = true;\n    }\n  }\n\n  addLabel() {\n    const label = new Kubernetes_node_formValues__WEBPACK_IMPORTED_MODULE_11__.KubernetesNodeLabelFormValues();\n    label.IsNew = true;\n    this.formValues.Labels.push(label);\n  }\n\n  removeLabel(index) {\n    const label = this.formValues.Labels[index];\n\n    if (label.IsNew) {\n      this.formValues.Labels.splice(index, 1);\n    } else {\n      label.NeedsDeletion = true;\n    }\n\n    this.onChangeLabelKey();\n  }\n\n  restoreLabel(index) {\n    this.formValues.Labels[index].NeedsDeletion = false;\n    this.onChangeLabelKey();\n  }\n\n  isSystemLabel(index) {\n    return Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_14__.KubernetesNodeHelper.isSystemLabel(this.formValues.Labels[index]);\n  }\n\n  computeLabelsWarning() {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.Labels, label => {\n      return label.IsUsed && (label.NeedsDeletion || label.IsChanged);\n    }).length;\n  }\n  /* #endregion */\n\n  /* #region cordon */\n\n\n  computeCordonWarning() {\n    return this.formValues.Availability === this.availabilities.PAUSE;\n  }\n  /* #endregion */\n\n  /* #region drain */\n\n\n  computeDrainWarning() {\n    return this.formValues.Availability === this.availabilities.DRAIN;\n  }\n\n  async drainNodeAsync() {\n    const pods = lodash_es_flatten__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.applications, app => app.Pods));\n\n    let actionCount = pods.length;\n\n    for (const pod of pods) {\n      try {\n        await this.KubernetesPodService.eviction(pod);\n        this.Notifications.success('Pod successfully evicted', pod.Name);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to evict pod');\n        this.formValues.Availability = this.availabilities.PAUSE;\n        await this.KubernetesNodeService.patch(this.node, this.formValues);\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.formValues.Availability = this.availabilities.PAUSE;\n          await this.KubernetesNodeService.patch(this.node, this.formValues);\n        }\n      }\n    }\n  }\n\n  drainNode() {\n    return this.$async(this.drainNodeAsync);\n  }\n  /* #endregion */\n\n  /* #region actions */\n\n\n  isNoChangesMade() {\n    const newNode = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_10__[\"default\"].formValuesToNode(this.node, this.formValues);\n    const payload = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_10__[\"default\"].patchPayload(this.node, newNode);\n    return !payload.length;\n  }\n\n  isDrainError() {\n    return (this.state.isDrainOperation || this.state.isContainPortainer) && this.formValues.Availability === this.availabilities.DRAIN;\n  }\n\n  isFormValid() {\n    return !this.state.hasDuplicateTaintKeys && !this.state.hasDuplicateLabelKeys && !this.isNoChangesMade() && !this.isDrainError();\n  }\n\n  resetFormValues() {\n    this.formValues = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_10__[\"default\"].nodeToFormValues(this.node);\n  }\n  /* #endregion */\n\n\n  async getEndpointsAsync() {\n    try {\n      const endpoints = await this.KubernetesEndpointService.get();\n      this.endpoint = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(endpoints, {\n        Name: 'kubernetes'\n      });\n\n      if (this.endpoint && this.endpoint.Subsets) {\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.endpoint.Subsets, subset => {\n          return lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(subset.Ips, ip => {\n            if (ip === this.node.IPAddress) {\n              this.node.Api = true;\n              this.node.Port = subset.Port;\n              return false;\n            }\n          });\n        });\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索环境');\n    }\n  }\n\n  getEndpoints() {\n    return this.$async(this.getEndpointsAsync);\n  }\n\n  async updateNodeAsync() {\n    try {\n      this.node = await this.KubernetesNodeService.patch(this.node, this.formValues);\n\n      if (this.formValues.Availability === 'Drain') {\n        await this.drainNode();\n      }\n\n      this.Notifications.success('Success', '节点更新成功');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法更新节点');\n    }\n  }\n\n  updateNode() {\n    const taintsWarning = this.computeTaintsWarning();\n    const labelsWarning = this.computeLabelsWarning();\n    const cordonWarning = this.computeCordonWarning();\n    const drainWarning = this.computeDrainWarning();\n\n    if (taintsWarning && !labelsWarning) {\n      this.ModalService.confirmUpdate('对污点的更改将立即取消在该节点上运行的应用程序的计划，而没有相应的容差。是否要继续？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateNodeAsync);\n        }\n      });\n    } else if (!taintsWarning && labelsWarning) {\n      this.ModalService.confirmUpdate('删除或更改使用的标签可能会阻止将来在此节点上安排应用程序。是否要继续？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateNodeAsync);\n        }\n      });\n    } else if (taintsWarning && labelsWarning) {\n      this.ModalService.confirmUpdate('对污点的更改将立即取消在该节点上运行的应用程序的计划，而没有相应的容差<br/></br/>删除或更改使用的标签可能会阻止应用程序将来在此节点上进行调度。\\\\n\\n是否继续？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateNodeAsync);\n        }\n      });\n    } else if (cordonWarning) {\n      this.ModalService.confirmUpdate('将此节点标记为不可调度将有效地阻止该节点，并防止在该节点上调度任何新的工作负载。 你确定吗？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateNodeAsync);\n        }\n      });\n    } else if (drainWarning) {\n      this.ModalService.confirmUpdate('排空此节点将导致所有工作负载从该节点中逐出。这可能会导致某些服务中断。 你确定吗？', confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateNodeAsync);\n        }\n      });\n    } else {\n      return this.$async(this.updateNodeAsync);\n    }\n  }\n\n  async getNodesAsync() {\n    try {\n      this.state.dataLoading = true;\n      const nodeName = this.$transition$.params().name;\n      this.nodes = await this.KubernetesNodeService.get();\n      this.node = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(this.nodes, {\n        Name: nodeName\n      });\n      this.state.isDrainOperation = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(this.nodes, {\n        Availability: this.availabilities.DRAIN\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索到节点');\n    } finally {\n      this.state.dataLoading = false;\n    }\n  }\n\n  getNodes() {\n    return this.$async(this.getNodesAsync);\n  }\n\n  hasResourceUsageAccess() {\n    return this.state.isAdmin && this.state.useServerMetrics;\n  }\n\n  async getNodeUsageAsync() {\n    try {\n      const nodeName = this.$transition$.params().name;\n      const node = await this.KubernetesMetricsService.getNode(nodeName);\n      this.resourceUsage = new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesResourceReservation();\n      this.resourceUsage.CPU = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].parseCPU(node.usage.cpu);\n      this.resourceUsage.Memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(node.usage.memory);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索节点资源使用情况');\n    }\n  }\n\n  getNodeUsage() {\n    return this.$async(this.getNodeUsageAsync);\n  }\n\n  hasEventWarnings() {\n    return this.state.eventWarningCount;\n  }\n\n  async getEventsAsync() {\n    try {\n      this.state.eventsLoading = true;\n      const events = await this.KubernetesEventService.get();\n      this.events = events.filter(item => item.Involved.kind === 'Node');\n      this.state.eventWarningCount = Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].warningCount(this.events);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索节点事件');\n    } finally {\n      this.state.eventsLoading = false;\n    }\n  }\n\n  getEvents() {\n    return this.$async(this.getEventsAsync);\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n    this.selectTab(2);\n  }\n\n  async getApplicationsAsync() {\n    try {\n      this.state.applicationsLoading = true;\n      this.applications = await this.KubernetesApplicationService.get();\n      this.resourceReservation = new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesResourceReservation();\n      this.applications = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.applications, app => {\n        app.Pods = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(app.Pods, pod => pod.Node === this.node.Name);\n        return app;\n      });\n      this.applications = lodash_es_filter__WEBPACK_IMPORTED_MODULE_4___default()(this.applications, app => app.Pods.length !== 0);\n      this.applications = lodash_es_map__WEBPACK_IMPORTED_MODULE_5___default()(this.applications, app => {\n        const resourceReservation = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].computeResourceReservation(app.Pods);\n        app.CPU = resourceReservation.CPU;\n        app.Memory = resourceReservation.Memory;\n        this.resourceReservation.CPU += resourceReservation.CPU;\n        this.resourceReservation.Memory += resourceReservation.Memory;\n        return app;\n      });\n      this.resourceReservation.Memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(this.resourceReservation.Memory);\n      this.memoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(this.node.Memory);\n      this.state.isContainPortainer = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(this.applications, {\n        ApplicationName: 'portainer'\n      });\n\n      if (this.hasResourceUsageAccess()) {\n        await this.getNodeUsage();\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索应用程序');\n    } finally {\n      this.state.applicationsLoading = false;\n    }\n  }\n\n  getApplications() {\n    return this.$async(this.getApplicationsAsync);\n  }\n\n  async onInit() {\n    this.availabilities = Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_12__.KubernetesNodeAvailabilities;\n    this.state = {\n      isAdmin: this.Authentication.isAdmin(),\n      activeTab: this.LocalStorage.getActiveTab('node'),\n      currentName: this.$state.$current.name,\n      dataLoading: true,\n      eventsLoading: true,\n      applicationsLoading: true,\n      showEditorTab: false,\n      viewReady: false,\n      eventWarningCount: 0,\n      duplicateTaintKeys: [],\n      hasDuplicateTaintKeys: false,\n      duplicateLabelKeys: [],\n      hasDuplicateLabelKeys: false,\n      isDrainOperation: false,\n      isContainPortainer: false,\n      useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics\n    };\n    await this.getNodes();\n    await this.getEvents();\n    await this.getApplications();\n    await this.getEndpoints();\n    this.availableEffects = lodash_es_values__WEBPACK_IMPORTED_MODULE_0___default()(Kubernetes_node_models__WEBPACK_IMPORTED_MODULE_12__.KubernetesNodeTaintEffects);\n    this.formValues = Kubernetes_node_converter__WEBPACK_IMPORTED_MODULE_10__[\"default\"].nodeToFormValues(this.node);\n    this.formValues.Labels = Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_14__.KubernetesNodeHelper.computeUsedLabels(this.applications, this.formValues.Labels);\n    this.formValues.Labels = Kubernetes_node_helper__WEBPACK_IMPORTED_MODULE_14__.KubernetesNodeHelper.reorderLabels(this.formValues.Labels);\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('node', 0);\n    }\n  }\n\n}\n\nKubernetesNodeController.$inject = [\"$async\", \"$state\", \"Notifications\", \"LocalStorage\", \"ModalService\", \"KubernetesNodeService\", \"KubernetesEventService\", \"KubernetesPodService\", \"KubernetesApplicationService\", \"KubernetesEndpointService\", \"KubernetesMetricsService\", \"Authentication\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNodeController);\nangular__WEBPACK_IMPORTED_MODULE_6___default().module('portainer.kubernetes').controller('KubernetesNodeController', KubernetesNodeController);//# sourceURL=webpack-internal:///79308\n");

}),

83490:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stats.html */ 49709);\n\nangular.module('portainer.kubernetes').component('kubernetesNodeStatsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesNodeStatsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///83490\n");

}),

2997:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/constants */ 71541);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\nclass KubernetesNodeStatsController {\n  /* @ngInject */\n  constructor($async, $state, $interval, $document, Notifications, KubernetesNodeService, KubernetesMetricsService, ChartService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$interval = $interval;\n    this.$document = $document;\n    this.Notifications = Notifications;\n    this.KubernetesNodeService = KubernetesNodeService;\n    this.KubernetesMetricsService = KubernetesMetricsService;\n    this.ChartService = ChartService;\n    this.onInit = this.onInit.bind(this);\n  }\n\n  changeUpdateRepeater() {\n    var cpuChart = this.cpuChart;\n    var memoryChart = this.memoryChart;\n    this.stopRepeater();\n    this.setUpdateRepeater(cpuChart, memoryChart);\n    $('#refreshRateChange').show();\n    $('#refreshRateChange').fadeOut(_constants__WEBPACK_IMPORTED_MODULE_4__.PORTAINER_FADEOUT);\n  }\n\n  updateCPUChart() {\n    const label = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.stats.read).format('HH:mm:ss');\n    this.ChartService.UpdateCPUChart(label, this.stats.CPUUsage, this.cpuChart);\n  }\n\n  updateMemoryChart() {\n    const label = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.stats.read).format('HH:mm:ss');\n    this.ChartService.UpdateMemoryChart(label, this.stats.MemoryUsage, 0, this.memoryChart);\n  }\n\n  stopRepeater() {\n    var repeater = this.repeater;\n\n    if (angular__WEBPACK_IMPORTED_MODULE_0___default().isDefined(repeater)) {\n      this.$interval.cancel(repeater);\n      this.repeater = undefined;\n    }\n  }\n\n  setUpdateRepeater() {\n    const refreshRate = this.state.refreshRate;\n    this.repeater = this.$interval(async () => {\n      try {\n        await this.getStats();\n        this.updateCPUChart();\n        this.updateMemoryChart();\n      } catch (error) {\n        this.stopRepeater();\n        this.Notifications.error('失败', error);\n      }\n    }, refreshRate * 1000);\n  }\n\n  initCharts() {\n    const cpuChartCtx = $('#cpuChart');\n    const cpuChart = this.ChartService.CreateCPUChart(cpuChartCtx);\n    this.cpuChart = cpuChart;\n    const memoryChartCtx = $('#memoryChart');\n    const memoryChart = this.ChartService.CreateMemoryChart(memoryChartCtx);\n    this.memoryChart = memoryChart;\n    this.updateCPUChart();\n    this.updateMemoryChart();\n    this.setUpdateRepeater();\n  }\n\n  getStats() {\n    return this.$async(async () => {\n      try {\n        const stats = await this.KubernetesMetricsService.getNode(this.state.transition.nodeName);\n\n        if (stats) {\n          const memory = filesize_parser__WEBPACK_IMPORTED_MODULE_2___default()(stats.usage.memory);\n          const cpu = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parseCPU(stats.usage.cpu);\n          this.stats = {\n            read: stats.creationTimestamp,\n            MemoryUsage: memory,\n            CPUUsage: cpu / this.nodeCPU * 100\n          };\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve node stats');\n      }\n    });\n  }\n\n  $onDestroy() {\n    this.stopRepeater();\n  }\n\n  async onInit() {\n    this.state = {\n      autoRefresh: false,\n      refreshRate: '30',\n      viewReady: false,\n      transition: {\n        nodeName: this.$transition$.params().name\n      },\n      getMetrics: true\n    };\n\n    try {\n      const nodeMetrics = await this.KubernetesMetricsService.getNode(this.state.transition.nodeName);\n\n      if (nodeMetrics) {\n        const node = await this.KubernetesNodeService.get(this.state.transition.nodeName);\n        this.nodeCPU = node.CPU || 1;\n        await this.getStats();\n\n        if (this.state.getMetrics) {\n          this.$document.ready(() => {\n            this.initCharts();\n          });\n        }\n      } else {\n        this.state.getMetrics = false;\n      }\n    } catch (err) {\n      this.state.getMetrics = false;\n      this.Notifications.error('失败', err, 'Unable to retrieve node stats');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesNodeStatsController.$inject = [\"$async\", \"$state\", \"$interval\", \"$document\", \"Notifications\", \"KubernetesNodeService\", \"KubernetesMetricsService\", \"ChartService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesNodeStatsController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesNodeStatsController', KubernetesNodeStatsController);//# sourceURL=webpack-internal:///2997\n");

}),

56286:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./configurations.html */ 79773);\n\nangular.module('portainer.kubernetes').component('kubernetesConfigurationsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesConfigurationsController',\n  controllerAs: 'ctrl'\n});//# sourceURL=webpack-internal:///56286\n");

}),

35752:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n\n\n\nclass KubernetesConfigurationsController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, Authentication, KubernetesConfigurationService, KubernetesApplicationService, ModalService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.Authentication = Authentication;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.ModalService = ModalService;\n    this.onInit = this.onInit.bind(this);\n    this.getConfigurations = this.getConfigurations.bind(this);\n    this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n    this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n    this.refreshCallback = this.refreshCallback.bind(this);\n    this.refreshCallbackAsync = this.refreshCallbackAsync.bind(this);\n  }\n\n  async getConfigurationsAsync() {\n    try {\n      this.state.configurationsLoading = true;\n      this.configurations = await this.KubernetesConfigurationService.get();\n      Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setConfigurationsUsed(this.configurations, this.applications);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve configurations');\n    } finally {\n      this.state.configurationsLoading = false;\n    }\n  }\n\n  getConfigurations() {\n    return this.$async(this.getConfigurationsAsync);\n  }\n\n  async removeActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const configuration of selectedItems) {\n      try {\n        await this.KubernetesConfigurationService.delete(configuration);\n        this.Notifications.success('配置成功删除', configuration.Name);\n        const index = this.configurations.indexOf(configuration);\n        this.configurations.splice(index, 1);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法删除配置');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload(this.$state.current);\n        }\n      }\n    }\n  }\n\n  removeAction(selectedItems) {\n    this.ModalService.confirmDeletion('你想删除所选的配置吗？?', confirmed => {\n      if (confirmed) {\n        return this.$async(this.removeActionAsync, selectedItems);\n      }\n    });\n  }\n\n  async getApplicationsAsync() {\n    try {\n      this.state.applicationsLoading = true;\n      this.applications = await this.KubernetesApplicationService.get();\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索应用程序');\n    } finally {\n      this.state.applicationsLoading = false;\n    }\n  }\n\n  getApplications() {\n    return this.$async(this.getApplicationsAsync);\n  }\n\n  async refreshCallbackAsync() {\n    await this.getConfigurations();\n    await this.getApplications();\n  }\n\n  refreshCallback() {\n    return this.$async(this.refreshCallbackAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      configurationsLoading: true,\n      applicationsLoading: true,\n      viewReady: false,\n      isAdmin: this.Authentication.isAdmin()\n    };\n    await this.getApplications();\n    await this.getConfigurations();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesConfigurationsController.$inject = [\"$async\", \"$state\", \"Notifications\", \"Authentication\", \"KubernetesConfigurationService\", \"KubernetesApplicationService\", \"ModalService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationsController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesConfigurationsController', KubernetesConfigurationsController);//# sourceURL=webpack-internal:///35752\n");

}),

9022:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createConfiguration.html */ 5502);\n\nangular.module('portainer.kubernetes').component('kubernetesCreateConfigurationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesCreateConfigurationController',\n  controllerAs: 'ctrl'\n});//# sourceURL=webpack-internal:///9022\n");

}),

38646:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var Kubernetes_rest_serviceAccount__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/rest/serviceAccount */ 13535);\n/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../validation */ 64987);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesCreateConfigurationController {\n  /* @ngInject */\n  constructor($async, $state, $window, ModalService, Notifications, Authentication, KubernetesConfigurationService, KubernetesResourcePoolService, EndpointProvider) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$window = $window;\n    this.EndpointProvider = EndpointProvider;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.Authentication = Authentication;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesConfigurationKinds = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesConfigurationKinds;\n    this.KubernetesSecretTypeOptions = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions;\n    this.onInit = this.onInit.bind(this);\n    this.createConfigurationAsync = this.createConfigurationAsync.bind(this);\n    this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n    this.onResourcePoolSelectionChangeAsync = this.onResourcePoolSelectionChangeAsync.bind(this);\n    this.onSecretTypeChange = this.onSecretTypeChange.bind(this);\n  }\n\n  onChangeName() {\n    const filteredConfigurations = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.configurations, config => config.Namespace === this.formValues.ResourcePool.Namespace.Name && config.Kind === this.formValues.Kind);\n\n    this.state.alreadyExist = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(filteredConfigurations, config => config.Name === this.formValues.Name) !== undefined;\n  }\n\n  onChangeKind() {\n    this.onChangeName(); // if there is no data field, add one\n\n    if (this.formValues.Data.length === 0) {\n      this.formValues.Data.push(new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_3__.KubernetesConfigurationFormValuesEntry());\n    } // if changing back to a secret, that is a service account token, remove the data field\n\n\n    if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n      this.onSecretTypeChange();\n    } else {\n      this.isDockerConfig = false;\n    }\n  }\n\n  async onResourcePoolSelectionChangeAsync() {\n    try {\n      this.onChangeName();\n      this.availableServiceAccounts = await (0,Kubernetes_rest_serviceAccount__WEBPACK_IMPORTED_MODULE_7__.getServiceAccounts)(this.environmentId, this.formValues.ResourcePool.Namespace.Name);\n      this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable load service accounts');\n    }\n  }\n\n  onResourcePoolSelectionChange() {\n    this.$async(this.onResourcePoolSelectionChangeAsync);\n  }\n\n  onSecretTypeChange() {\n    switch (this.formValues.Type) {\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.OPAQUE.value:\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.CUSTOM.value:\n        this.formValues.Data = this.formValues.Data.filter(entry => entry.Value !== '');\n\n        if (this.formValues.Data.length === 0) {\n          this.addRequiredKeysToForm(['']);\n        }\n\n        this.state.isDockerConfig = false;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value:\n        // data isn't required for service account tokens, so remove the data fields if they are empty\n        this.addRequiredKeysToForm([]);\n        this.state.isDockerConfig = false;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n        this.addRequiredKeysToForm(['.dockerconfigjson']);\n        this.state.isDockerConfig = true;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.DOCKERCFG.value:\n        this.addRequiredKeysToForm(['.dockercfg']);\n        this.state.isDockerConfig = true;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.BASICAUTH.value:\n        this.addRequiredKeysToForm(['username', 'password']);\n        this.state.isDockerConfig = false;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.SSHAUTH.value:\n        this.addRequiredKeysToForm(['ssh-privatekey']);\n        this.state.isDockerConfig = false;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.TLS.value:\n        this.addRequiredKeysToForm(['tls.crt', 'tls.key']);\n        this.state.isDockerConfig = false;\n        break;\n\n      case Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n        this.addRequiredKeysToForm(['token-id', 'token-secret']);\n        this.state.isDockerConfig = false;\n        break;\n\n      default:\n        this.state.isDockerConfig = false;\n        break;\n    }\n\n    this.isFormValid();\n  }\n\n  addRequiredKeysToForm(keys) {\n    // remove data entries that have an empty value\n    this.formValues.Data = this.formValues.Data.filter(entry => entry.Value);\n    keys.forEach(key => {\n      // if the key doesn't exist on the form, add a new formValues.Data entry\n      if (!this.formValues.Data.some(data => data.Key === key)) {\n        this.formValues.Data.push(new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_3__.KubernetesConfigurationFormValuesEntry());\n        const index = this.formValues.Data.length - 1;\n        this.formValues.Data[index].Key = key;\n      }\n    });\n  }\n\n  isFormValid() {\n    const [isValid, warningMessage] = (0,_validation__WEBPACK_IMPORTED_MODULE_8__.isConfigurationFormValid)(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n    this.state.secretWarningMessage = warningMessage;\n    return isValid;\n  }\n\n  async createConfigurationAsync() {\n    try {\n      this.state.actionInProgress = true;\n      this.formValues.ConfigurationOwner = this.Authentication.getUserDetails().username;\n\n      if (!this.formValues.IsSimple) {\n        this.formValues.Data = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseYaml(this.formValues);\n      }\n\n      await this.KubernetesConfigurationService.create(this.formValues);\n      this.Notifications.success('Success', 'Configuration succesfully created');\n      this.state.isEditorDirty = false;\n      this.$state.go('kubernetes.configurations');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create configuration');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  createConfiguration() {\n    return this.$async(this.createConfigurationAsync);\n  }\n\n  async getConfigurationsAsync() {\n    try {\n      this.configurations = await this.KubernetesConfigurationService.get();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve configurations');\n    }\n  }\n\n  getConfigurations() {\n    return this.$async(this.getConfigurationsAsync);\n  }\n\n  async uiCanExit() {\n    if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async onInit() {\n    this.state = {\n      actionInProgress: false,\n      viewReady: false,\n      alreadyExist: false,\n      isDataValid: true,\n      isEditorDirty: false,\n      isDockerConfig: false,\n      secretWarningMessage: ''\n    };\n    this.formValues = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_3__.KubernetesConfigurationFormValues();\n    this.formValues.Data = [new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_3__.KubernetesConfigurationFormValuesEntry()];\n\n    try {\n      const resourcePools = await this.KubernetesResourcePoolService.get();\n      this.resourcePools = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(resourcePools, resourcePool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].isSystemNamespace(resourcePool.Namespace.Name));\n      this.formValues.ResourcePool = this.resourcePools[0];\n      await this.getConfigurations();\n      this.environmentId = this.EndpointProvider.endpointID();\n      this.availableServiceAccounts = await (0,Kubernetes_rest_serviceAccount__WEBPACK_IMPORTED_MODULE_7__.getServiceAccounts)(this.environmentId, this.resourcePools[0].Namespace.Name);\n      this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to load view data');\n    } finally {\n      this.state.viewReady = true;\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\n\nKubernetesCreateConfigurationController.$inject = [\"$async\", \"$state\", \"$window\", \"ModalService\", \"Notifications\", \"Authentication\", \"KubernetesConfigurationService\", \"KubernetesResourcePoolService\", \"EndpointProvider\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesCreateConfigurationController);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').controller('KubernetesCreateConfigurationController', KubernetesCreateConfigurationController);//# sourceURL=webpack-internal:///38646\n");

}),

78025:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./configuration.html */ 61330);\n\nangular.module('portainer.kubernetes').component('kubernetesConfigurationView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesConfigurationController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///78025\n");

}),

55682:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/converters/configuration */ 10241);\n/* harmony import */ var Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/helpers/eventHelper */ 52929);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../validation */ 64987);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigurationController {\n  /* @ngInject */\n  constructor($async, $state, $window, clipboard, Notifications, LocalStorage, KubernetesConfigurationService, KubernetesConfigMapService, KubernetesSecretService, KubernetesResourcePoolService, ModalService, KubernetesApplicationService, KubernetesEventService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$window = $window;\n    this.clipboard = clipboard;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.ModalService = ModalService;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesEventService = KubernetesEventService;\n    this.KubernetesConfigurationKinds = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesConfigurationKinds;\n    this.KubernetesSecretTypeOptions = Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesSecretTypeOptions;\n    this.KubernetesConfigMapService = KubernetesConfigMapService;\n    this.KubernetesSecretService = KubernetesSecretService;\n    this.onInit = this.onInit.bind(this);\n    this.getConfigurationAsync = this.getConfigurationAsync.bind(this);\n    this.getEvents = this.getEvents.bind(this);\n    this.getEventsAsync = this.getEventsAsync.bind(this);\n    this.getApplications = this.getApplications.bind(this);\n    this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n    this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n    this.updateConfiguration = this.updateConfiguration.bind(this);\n    this.updateConfigurationAsync = this.updateConfigurationAsync.bind(this);\n  }\n\n  isSystemNamespace() {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isSystemNamespace(this.configuration.Namespace);\n  }\n\n  isSystemConfig() {\n    return this.isSystemNamespace() || this.configuration.IsRegistrySecret;\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('configuration', index);\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n    this.selectTab(2);\n  }\n\n  copyConfigurationValue(idx) {\n    this.clipboard.copyText(this.formValues.Data[idx].Value);\n    $('#copyValueNotification_' + idx).show().fadeOut(2500);\n  }\n\n  isFormValid() {\n    const [isValid, warningMessage] = (0,_validation__WEBPACK_IMPORTED_MODULE_10__.isConfigurationFormValid)(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n    this.state.secretWarningMessage = warningMessage;\n    return isValid;\n  } // TODO: refactor\n  // It looks like we're still doing a create/delete process but we've decided to get rid of this\n  // approach.\n\n\n  async updateConfigurationAsync() {\n    try {\n      this.state.actionInProgress = true;\n\n      if (this.formValues.Kind !== this.configuration.Kind || this.formValues.ResourcePool.Namespace.Name !== this.configuration.Namespace || this.formValues.Name !== this.configuration.Name) {\n        await this.KubernetesConfigurationService.create(this.formValues);\n        await this.KubernetesConfigurationService.delete(this.configuration);\n        this.Notifications.success('Success', 'Configuration succesfully updated');\n        this.$state.go('kubernetes.configurations.configuration', {\n          namespace: this.formValues.ResourcePool.Namespace.Name,\n          name: this.formValues.Name\n        }, {\n          reload: true\n        });\n      } else {\n        await this.KubernetesConfigurationService.update(this.formValues, this.configuration);\n        this.Notifications.success('Success', 'Configuration succesfully updated');\n        this.$state.reload(this.$state.current);\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update configuration');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  updateConfiguration() {\n    if (this.configuration.Used) {\n      const plural = this.configuration.Applications.length > 1 ? 's' : '';\n      this.ModalService.confirmUpdate(`The changes will be propagated to ${this.configuration.Applications.length} running application${plural}. Are you sure you want to update this configuration?`, confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateConfigurationAsync);\n        }\n      });\n    } else {\n      return this.$async(this.updateConfigurationAsync);\n    }\n  }\n\n  async getConfigurationAsync() {\n    try {\n      this.state.configurationLoading = true;\n      const name = this.$transition$.params().name;\n      const namespace = this.$transition$.params().namespace;\n      const [configMap, secret] = await Promise.allSettled([this.KubernetesConfigMapService.get(namespace, name), this.KubernetesSecretService.get(namespace, name)]);\n\n      if (secret.status === 'rejected' && secret.reason.err.status === 403) {\n        this.$state.go('kubernetes.configurations');\n        throw new Error('Not authorized to edit secret');\n      }\n\n      if (secret.status === 'fulfilled') {\n        this.configuration = Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_7__[\"default\"].secretToConfiguration(secret.value);\n        this.formValues.Data = secret.value.Data; // this.formValues.ServiceAccountName = secret.value.ServiceAccountName;\n      } else {\n        this.configuration = Kubernetes_converters_configuration__WEBPACK_IMPORTED_MODULE_7__[\"default\"].configMapToConfiguration(configMap.value);\n        this.formValues.Data = configMap.value.Data;\n      }\n\n      this.formValues.ResourcePool = lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(this.resourcePools, resourcePool => resourcePool.Namespace.Name === this.configuration.Namespace);\n      this.formValues.Id = this.configuration.Id;\n      this.formValues.Name = this.configuration.Name;\n      this.formValues.Type = this.configuration.Type;\n      this.formValues.Kind = this.configuration.Kind;\n      this.oldDataYaml = this.formValues.DataYaml;\n      return this.configuration;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve configuration');\n    } finally {\n      this.state.configurationLoading = false;\n    }\n  }\n\n  getConfiguration() {\n    return this.$async(this.getConfigurationAsync);\n  }\n\n  async getApplicationsAsync(namespace) {\n    try {\n      this.state.applicationsLoading = true;\n      const applications = await this.KubernetesApplicationService.get(namespace);\n      this.configuration.Applications = Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getUsingApplications(this.configuration, applications);\n      Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setConfigurationUsed(this.configuration);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve applications');\n    } finally {\n      this.state.applicationsLoading = false;\n    }\n  }\n\n  getApplications(namespace) {\n    return this.$async(this.getApplicationsAsync, namespace);\n  }\n\n  hasEventWarnings() {\n    return this.state.eventWarningCount;\n  }\n\n  async getEventsAsync(namespace) {\n    try {\n      this.state.eventsLoading = true;\n      this.events = await this.KubernetesEventService.get(namespace);\n      this.events = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.events, event => event.Involved.uid === this.configuration.Id);\n      this.state.eventWarningCount = Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].warningCount(this.events);\n    } catch (err) {\n      this.Notifications('失败', err, 'Unable to retrieve events');\n    } finally {\n      this.state.eventsLoading = false;\n    }\n  }\n\n  getEvents(namespace) {\n    return this.$async(this.getEventsAsync, namespace);\n  }\n\n  async getConfigurationsAsync() {\n    try {\n      this.configurations = await this.KubernetesConfigurationService.get();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve configurations');\n    }\n  }\n\n  getConfigurations() {\n    return this.$async(this.getConfigurationsAsync);\n  }\n\n  tagUsedDataKeys() {\n    const configName = this.$transition$.params().name;\n\n    const usedDataKeys = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default()(this.configuration.Applications.flatMap(app => app.Env.filter(e => e.valueFrom && e.valueFrom.configMapKeyRef && e.valueFrom.configMapKeyRef.name === configName).map(e => e.name)));\n\n    this.formValues.Data = this.formValues.Data.map(variable => {\n      if (!usedDataKeys.includes(variable.Key)) {\n        return variable;\n      }\n\n      return { ...variable,\n        Used: true\n      };\n    });\n  }\n\n  async uiCanExit() {\n    if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async onInit() {\n    try {\n      this.state = {\n        actionInProgress: false,\n        configurationLoading: true,\n        applicationsLoading: true,\n        eventsLoading: true,\n        showEditorTab: false,\n        viewReady: false,\n        eventWarningCount: 0,\n        activeTab: 0,\n        currentName: this.$state.$current.name,\n        isDataValid: true,\n        isEditorDirty: false,\n        isDockerConfig: false,\n        secretWarningMessage: ''\n      };\n      this.state.activeTab = this.LocalStorage.getActiveTab('configuration');\n      this.formValues = new Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_4__.KubernetesConfigurationFormValues();\n      this.resourcePools = await this.KubernetesResourcePoolService.get();\n      const configuration = await this.getConfiguration();\n\n      if (configuration) {\n        await this.getApplications(this.configuration.Namespace);\n        await this.getEvents(this.configuration.Namespace);\n        await this.getConfigurations();\n      } // after loading the configuration, check if it is a docker config secret type\n\n\n      if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET && (this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value || this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCFG.value)) {\n        this.state.isDockerConfig = true;\n      } // convert the secret type to a human readable value\n\n\n      if (this.formValues.Type) {\n        const secretTypeValues = Object.values(this.KubernetesSecretTypeOptions);\n        const secretType = secretTypeValues.find(secretType => secretType.value === this.formValues.Type);\n        this.secretTypeName = secretType ? secretType.name : this.formValues.Type;\n      } else {\n        this.secretTypeName = '';\n      }\n\n      if (this.formValues.Type === this.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n        this.formValues.ServiceAccountName = configuration.ServiceAccountName;\n      }\n\n      this.tagUsedDataKeys();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to load view data');\n    } finally {\n      this.state.viewReady = true;\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('configuration', 0);\n    }\n\n    this.state.isEditorDirty = false;\n  }\n\n}\n\nKubernetesConfigurationController.$inject = [\"$async\", \"$state\", \"$window\", \"clipboard\", \"Notifications\", \"LocalStorage\", \"KubernetesConfigurationService\", \"KubernetesConfigMapService\", \"KubernetesSecretService\", \"KubernetesResourcePoolService\", \"ModalService\", \"KubernetesApplicationService\", \"KubernetesEventService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigurationController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesConfigurationController', KubernetesConfigurationController);//# sourceURL=webpack-internal:///55682\n");

}),

64987:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isConfigurationFormValid\": function() { return /* binding */ isConfigurationFormValid; }\n/* harmony export */ });\n/* harmony import */ var _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/kubernetes/models/configuration/models */ 73582);\n\n\nfunction isConfigurationFormValid(alreadyExist, isDataValid, formValues) {\n  const uniqueCheck = !alreadyExist && isDataValid;\n  let secretWarningMessage = '';\n  let isFormValid = false;\n\n  if (formValues.IsSimple) {\n    if (formValues.Kind === _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesConfigurationKinds.SECRET) {\n      let isSecretDataValid = true;\n\n      switch (formValues.Type) {\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value:\n          // data isn't required for service account tokens\n          isFormValid = uniqueCheck && formValues.ResourcePool;\n          return [isFormValid, ''];\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.DOCKERCFG.value:\n          // needs to contain a .dockercfg key\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === '.dockercfg');\n          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockercfg key is required.';\n          break;\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n          // needs to contain a .dockerconfigjson key\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === '.dockerconfigjson');\n          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockerconfigjson key. is required.';\n          break;\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.BASICAUTH.value:\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === 'username' || entry.Key === 'password');\n          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a username or password key is required.';\n          break;\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.SSHAUTH.value:\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === 'ssh-privatekey');\n          secretWarningMessage = isSecretDataValid ? '' : `A data entry with a 'ssh-privatekey' key is required.`;\n          break;\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.TLS.value:\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === 'tls.crt') && formValues.Data.some(entry => entry.Key === 'tls.key');\n          secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'tls.crt' key and a 'tls.key' key are required.`;\n          break;\n\n        case _kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n          isSecretDataValid = formValues.Data.some(entry => entry.Key === 'token-id') && formValues.Data.some(entry => entry.Key === 'token-secret');\n          secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'token-id' key and a 'token-secret' key are required.`;\n          break;\n\n        default:\n          break;\n      }\n\n      isFormValid = uniqueCheck && formValues.ResourcePool && formValues.Data.length >= 1 && isSecretDataValid;\n      return [isFormValid, secretWarningMessage];\n    }\n\n    isFormValid = formValues.Data.length > 0 && uniqueCheck && formValues.ResourcePool;\n    return [isFormValid, secretWarningMessage];\n  }\n\n  isFormValid = uniqueCheck && formValues.ResourcePool;\n  return [isFormValid, secretWarningMessage];\n}//# sourceURL=webpack-internal:///64987\n");

}),

71244:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEqual */ 17908);\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_pull__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/pull */ 67386);\n/* harmony import */ var lodash_es_pull__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_pull__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/storage-class/models */ 86871);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/ingress/constants */ 62072);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/react/kubernetes/cluster/ingressClass/utils */ 4679);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesConfigureController {\n  /* #region  CONSTRUCTOR */\n\n  /* @ngInject */\n  constructor($async, $state, $scope, Notifications, KubernetesStorageService, EndpointService, EndpointProvider, ModalService, KubernetesResourcePoolService, KubernetesIngressService, KubernetesMetricsService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$scope = $scope;\n    this.Notifications = Notifications;\n    this.KubernetesStorageService = KubernetesStorageService;\n    this.EndpointService = EndpointService;\n    this.EndpointProvider = EndpointProvider;\n    this.ModalService = ModalService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesIngressService = KubernetesIngressService;\n    this.KubernetesMetricsService = KubernetesMetricsService;\n    this.IngressClassTypes = Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_10__.KubernetesIngressClassTypes;\n    this.onInit = this.onInit.bind(this);\n    this.configureAsync = this.configureAsync.bind(this);\n    this.areControllersChanged = this.areControllersChanged.bind(this);\n    this.areFormValuesChanged = this.areFormValuesChanged.bind(this);\n    this.onBeforeOnload = this.onBeforeOnload.bind(this);\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_12__.FeatureId.K8S_SETUP_DEFAULT;\n    this.limitedFeatureAutoWindow = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_12__.FeatureId.HIDE_AUTO_UPDATE_WINDOW;\n    this.onToggleAutoUpdate = this.onToggleAutoUpdate.bind(this);\n    this.onChangeControllers = this.onChangeControllers.bind(this);\n    this.onChangeEnableResourceOverCommit = this.onChangeEnableResourceOverCommit.bind(this);\n    this.onToggleIngressAvailabilityPerNamespace = this.onToggleIngressAvailabilityPerNamespace.bind(this);\n    this.onToggleAllowNoneIngressClass = this.onToggleAllowNoneIngressClass.bind(this);\n    this.onChangeStorageClassAccessMode = this.onChangeStorageClassAccessMode.bind(this);\n  }\n  /* #endregion */\n\n  /* #region  STORAGE CLASSES UI MANAGEMENT */\n\n\n  storageClassAvailable() {\n    return this.StorageClasses && this.StorageClasses.length > 0;\n  }\n\n  hasValidStorageConfiguration() {\n    let valid = true;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_6___default()(this.StorageClasses, item => {\n      if (item.selected && item.AccessModes.length === 0) {\n        valid = false;\n      }\n    });\n\n    return valid;\n  }\n  /* #endregion */\n\n  /* #region  INGRESS CLASSES UI MANAGEMENT */\n\n\n  onChangeControllers(controllerClassMap) {\n    this.ingressControllers = controllerClassMap;\n  }\n\n  hasTraefikIngress() {\n    return lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(this.formValues.IngressClasses, {\n      Type: this.IngressClassTypes.TRAEFIK\n    });\n  }\n\n  toggleAdvancedIngSettings() {\n    this.$scope.$evalAsync(() => {\n      this.state.isIngToggleSectionExpanded = !this.state.isIngToggleSectionExpanded;\n    });\n  }\n\n  onToggleAllowNoneIngressClass() {\n    this.$scope.$evalAsync(() => {\n      this.formValues.AllowNoneIngressClass = !this.formValues.AllowNoneIngressClass;\n    });\n  }\n\n  onToggleIngressAvailabilityPerNamespace() {\n    this.$scope.$evalAsync(() => {\n      this.formValues.IngressAvailabilityPerNamespace = !this.formValues.IngressAvailabilityPerNamespace;\n    });\n  }\n  /* #endregion */\n\n  /* #region RESOURCES AND METRICS */\n\n\n  onChangeEnableResourceOverCommit(enabled) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.EnableResourceOverCommit = enabled;\n\n      if (enabled) {\n        this.formValues.ResourceOverCommitPercentage = 20;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  CONFIGURE */\n\n\n  assignFormValuesToEndpoint(endpoint, storageClasses, ingressClasses) {\n    endpoint.Kubernetes.Configuration.StorageClasses = storageClasses;\n    endpoint.Kubernetes.Configuration.UseLoadBalancer = this.formValues.UseLoadBalancer;\n    endpoint.Kubernetes.Configuration.UseServerMetrics = this.formValues.UseServerMetrics;\n    endpoint.Kubernetes.Configuration.EnableResourceOverCommit = this.formValues.EnableResourceOverCommit;\n    endpoint.Kubernetes.Configuration.ResourceOverCommitPercentage = this.formValues.ResourceOverCommitPercentage;\n    endpoint.Kubernetes.Configuration.IngressClasses = ingressClasses;\n    endpoint.Kubernetes.Configuration.RestrictDefaultNamespace = this.formValues.RestrictDefaultNamespace;\n    endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace = this.formValues.IngressAvailabilityPerNamespace;\n    endpoint.Kubernetes.Configuration.AllowNoneIngressClass = this.formValues.AllowNoneIngressClass;\n    endpoint.ChangeWindow = this.state.autoUpdateSettings;\n  }\n\n  transformFormValues() {\n    const storageClasses = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(this.StorageClasses, item => {\n      if (item.selected) {\n        const res = new Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesStorageClass();\n        res.Name = item.Name;\n        res.AccessModes = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(item.AccessModes, 'Name');\n        res.Provisioner = item.Provisioner;\n        res.AllowVolumeExpansion = item.AllowVolumeExpansion;\n        return res;\n      }\n    });\n\n    lodash_es_pull__WEBPACK_IMPORTED_MODULE_3___default()(storageClasses, undefined);\n\n    const ingressClasses = lodash_es_without__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(this.formValues.IngressClasses, ic => ic.NeedsDeletion ? undefined : ic), undefined);\n\n    lodash_es_pull__WEBPACK_IMPORTED_MODULE_3___default()(ingressClasses, undefined);\n\n    return [storageClasses, ingressClasses];\n  }\n\n  async removeIngressesAcrossNamespaces() {\n    const ingressesToDel = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.IngressClasses, {\n      NeedsDeletion: true\n    });\n\n    if (!ingressesToDel.length) {\n      return;\n    }\n\n    const promises = [];\n    const oldEndpointID = this.EndpointProvider.endpointID();\n    this.EndpointProvider.setEndpointID(this.endpoint.Id);\n\n    try {\n      const allResourcePools = await this.KubernetesResourcePoolService.get();\n\n      const resourcePools = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(allResourcePools, resourcePool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_11__[\"default\"].isSystemNamespace(resourcePool.Namespace.Name) && !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_11__[\"default\"].isDefaultNamespace(resourcePool.Namespace.Name));\n\n      ingressesToDel.forEach(ingress => {\n        resourcePools.forEach(resourcePool => {\n          promises.push(this.KubernetesIngressService.delete(resourcePool.Namespace.Name, ingress.Name));\n        });\n      });\n    } finally {\n      this.EndpointProvider.setEndpointID(oldEndpointID);\n    }\n\n    const responses = await Promise.allSettled(promises);\n    responses.forEach(respons => {\n      if (respons.status == 'rejected' && respons.reason.err.status != 404) {\n        throw respons.reason;\n      }\n    });\n  }\n\n  enableMetricsServer() {\n    if (this.formValues.UseServerMetrics) {\n      this.state.metrics.userClick = true;\n      this.state.metrics.pending = true;\n      this.KubernetesMetricsService.capabilities(this.endpoint.Id).then(() => {\n        this.state.metrics.isServerRunning = true;\n        this.state.metrics.pending = false;\n        this.formValues.UseServerMetrics = true;\n      }).catch(() => {\n        this.state.metrics.isServerRunning = false;\n        this.state.metrics.pending = false;\n        this.formValues.UseServerMetrics = false;\n      });\n    } else {\n      this.state.metrics.userClick = false;\n      this.formValues.UseServerMetrics = false;\n    }\n  }\n\n  async configureAsync() {\n    try {\n      this.state.actionInProgress = true;\n      const [storageClasses, ingressClasses] = this.transformFormValues();\n      await this.removeIngressesAcrossNamespaces();\n      this.assignFormValuesToEndpoint(this.endpoint, storageClasses, ingressClasses);\n      await this.EndpointService.updateEndpoint(this.endpoint.Id, this.endpoint); // updateIngressControllerClassMap must be done after updateEndpoint, as a hacky workaround. A better solution: saving ingresscontrollers somewhere else, is being discussed\n\n      await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_13__.updateIngressControllerClassMap)(this.state.endpointId, this.ingressControllers || []);\n      this.state.isSaving = true;\n\n      const storagePromises = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(storageClasses, storageClass => {\n        const oldStorageClass = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(this.oldStorageClasses, {\n          Name: storageClass.Name\n        });\n\n        if (oldStorageClass) {\n          return this.KubernetesStorageService.patch(this.state.endpointId, oldStorageClass, storageClass);\n        }\n      });\n\n      await Promise.all(storagePromises);\n      const endpoints = this.EndpointProvider.endpoints();\n\n      const modifiedEndpoint = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(endpoints, item => item.Id === this.endpoint.Id);\n\n      if (modifiedEndpoint) {\n        this.assignFormValuesToEndpoint(modifiedEndpoint, storageClasses, ingressClasses);\n        this.EndpointProvider.setEndpoints(endpoints);\n      }\n\n      this.Notifications.success('Success', 'Configuration successfully applied');\n      this.$state.go('portainer.home');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to apply configuration');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  configure() {\n    return this.$async(this.configureAsync);\n  }\n  /* #endregion */\n\n\n  restrictDefaultToggledOn() {\n    return this.formValues.RestrictDefaultNamespace && !this.oldFormValues.RestrictDefaultNamespace;\n  }\n\n  onToggleAutoUpdate(value) {\n    return this.$scope.$evalAsync(() => {\n      this.state.autoUpdateSettings.Enabled = value;\n    });\n  }\n\n  onChangeStorageClassAccessMode(storageClassName, accessModes) {\n    return this.$scope.$evalAsync(() => {\n      const storageClass = this.StorageClasses.find(item => item.Name === storageClassName);\n\n      if (!storageClass) {\n        throw new Error('Storage class not found');\n      }\n\n      storageClass.AccessModes = accessModes;\n    });\n  }\n  /* #region  ON INIT */\n\n\n  async onInit() {\n    this.state = {\n      actionInProgress: false,\n      displayConfigureClassPanel: {},\n      viewReady: false,\n      isIngToggleSectionExpanded: false,\n      endpointId: this.$state.params.endpointId,\n      duplicates: {\n        ingressClasses: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_9__.KubernetesFormValidationReferences()\n      },\n      metrics: {\n        pending: false,\n        isServerRunning: false,\n        userClick: false\n      },\n      timeZone: '',\n      isSaving: false\n    };\n    this.formValues = {\n      UseLoadBalancer: false,\n      UseServerMetrics: false,\n      EnableResourceOverCommit: true,\n      ResourceOverCommitPercentage: 20,\n      IngressClasses: [],\n      RestrictDefaultNamespace: false,\n      enableAutoUpdateTimeWindow: false,\n      IngressAvailabilityPerNamespace: false\n    };\n    this.isIngressControllersLoading = true;\n\n    try {\n      this.availableAccessModes = new Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesStorageClassAccessPolicies();\n      [this.StorageClasses, this.endpoint] = await Promise.all([this.KubernetesStorageService.get(this.state.endpointId), this.EndpointService.endpoint(this.state.endpointId)]);\n      this.ingressControllers = await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_13__.getIngressControllerClassMap)({\n        environmentId: this.state.endpointId\n      });\n      this.originalIngressControllers = structuredClone(this.ingressControllers);\n      this.state.autoUpdateSettings = this.endpoint.ChangeWindow;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_6___default()(this.StorageClasses, item => {\n        const storage = lodash_es_find__WEBPACK_IMPORTED_MODULE_5___default()(this.endpoint.Kubernetes.Configuration.StorageClasses, sc => sc.Name === item.Name);\n\n        if (storage) {\n          item.selected = true;\n          item.AccessModes = storage.AccessModes.map(name => this.availableAccessModes.find(accessMode => accessMode.Name === name));\n        } else if (this.availableAccessModes.length) {\n          // set a default access mode if the storage class is not enabled and there are available access modes\n          item.AccessModes = [this.availableAccessModes[0]];\n        }\n      });\n\n      this.oldStorageClasses = angular__WEBPACK_IMPORTED_MODULE_7___default().copy(this.StorageClasses);\n      this.formValues.UseLoadBalancer = this.endpoint.Kubernetes.Configuration.UseLoadBalancer;\n      this.formValues.UseServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n      this.formValues.EnableResourceOverCommit = this.endpoint.Kubernetes.Configuration.EnableResourceOverCommit;\n      this.formValues.ResourceOverCommitPercentage = this.endpoint.Kubernetes.Configuration.ResourceOverCommitPercentage;\n      this.formValues.RestrictDefaultNamespace = this.endpoint.Kubernetes.Configuration.RestrictDefaultNamespace;\n      this.formValues.IngressClasses = lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(this.endpoint.Kubernetes.Configuration.IngressClasses, ic => {\n        ic.IsNew = false;\n        ic.NeedsDeletion = false;\n        return ic;\n      });\n      this.formValues.IngressAvailabilityPerNamespace = this.endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace;\n      this.formValues.AllowNoneIngressClass = this.endpoint.Kubernetes.Configuration.AllowNoneIngressClass;\n      this.oldFormValues = Object.assign({}, this.formValues);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environment configuration');\n    } finally {\n      this.state.viewReady = true;\n      this.isIngressControllersLoading = false;\n    }\n\n    window.addEventListener('beforeunload', this.onBeforeOnload);\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n  /* #endregion */\n\n\n  $onDestroy() {\n    window.removeEventListener('beforeunload', this.onBeforeOnload);\n  }\n\n  areControllersChanged() {\n    return !lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(this.ingressControllers, this.originalIngressControllers);\n  }\n\n  areFormValuesChanged() {\n    return !lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(this.formValues, this.oldFormValues);\n  }\n\n  onBeforeOnload(event) {\n    if (!this.state.isSaving && (this.areControllersChanged() || this.areFormValuesChanged())) {\n      event.preventDefault();\n      event.returnValue = '';\n    }\n  }\n\n  uiCanExit() {\n    if (!this.state.isSaving && (this.areControllersChanged() || this.areFormValuesChanged()) && !this.isIngressControllersLoading) {\n      return this.ModalService.confirmAsync({\n        title: '你确定吗？',\n        message: 'You currently have unsaved changes in the cluster setup view. Are you sure you want to leave?',\n        buttons: {\n          confirm: {\n            label: 'Yes',\n            className: 'btn-danger'\n          }\n        }\n      });\n    }\n  }\n\n}\n\nKubernetesConfigureController.$inject = [\"$async\", \"$state\", \"$scope\", \"Notifications\", \"KubernetesStorageService\", \"EndpointService\", \"EndpointProvider\", \"ModalService\", \"KubernetesResourcePoolService\", \"KubernetesIngressService\", \"KubernetesMetricsService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesConfigureController);\nangular__WEBPACK_IMPORTED_MODULE_7___default().module('portainer.kubernetes').controller('KubernetesConfigureController', KubernetesConfigureController);//# sourceURL=webpack-internal:///71244\n");

}),

15219:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./dashboard.html */ 38947);\n\nangular.module('portainer.kubernetes').component('kubernetesDashboardView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesDashboardController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///15219\n");

}),

79581:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/configurationHelper */ 51780);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n\n\n\n\n\n\n\n\nclass KubernetesDashboardController {\n  /* @ngInject */\n  constructor($async, Notifications, EndpointService, KubernetesResourcePoolService, KubernetesApplicationService, KubernetesConfigurationService, KubernetesVolumeService, Authentication, TagService) {\n    this.$async = $async;\n    this.Notifications = Notifications;\n    this.EndpointService = EndpointService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesConfigurationService = KubernetesConfigurationService;\n    this.KubernetesVolumeService = KubernetesVolumeService;\n    this.Authentication = Authentication;\n    this.TagService = TagService;\n    this.onInit = this.onInit.bind(this);\n    this.getAll = this.getAll.bind(this);\n    this.getAllAsync = this.getAllAsync.bind(this);\n  }\n\n  async getAllAsync() {\n    const isAdmin = this.Authentication.isAdmin();\n    const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n    this.showEnvUrl = this.endpoint.Type !== Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment && this.endpoint.Type !== Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_6__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment;\n\n    try {\n      const [pools, applications, configurations, volumes, tags] = await Promise.all([this.KubernetesResourcePoolService.get(), this.KubernetesApplicationService.get(), this.KubernetesConfigurationService.get(), this.KubernetesVolumeService.get(undefined, storageClasses), this.TagService.tags()]);\n      this.applications = applications;\n      this.volumes = volumes;\n      this.endpointTags = this.endpoint.TagIds.length ? lodash_es_join__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(this.endpoint.TagIds, id => {\n        const tag = tags.find(tag => tag.Id === id);\n        return tag ? tag.Name : '';\n      }), Boolean), ', ') : '-';\n\n      if (!isAdmin) {\n        this.pools = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(pools, pool => !Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isSystemNamespace(pool.Namespace.Name));\n        this.configurations = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(configurations, config => !Kubernetes_helpers_configurationHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSystemToken(config));\n      } else {\n        this.pools = pools;\n        this.configurations = configurations;\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to load dashboard data');\n    }\n  }\n\n  getAll() {\n    return this.$async(this.getAllAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      viewReady: false\n    };\n    await this.getAll();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesDashboardController.$inject = [\"$async\", \"Notifications\", \"EndpointService\", \"KubernetesResourcePoolService\", \"KubernetesApplicationService\", \"KubernetesConfigurationService\", \"KubernetesVolumeService\", \"Authentication\", \"TagService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDashboardController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesDashboardController', KubernetesDashboardController);//# sourceURL=webpack-internal:///79581\n");

}),

36661:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./deploy.html */ 32635);\n\nangular.module('portainer.kubernetes').component('kubernetesDeployView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesDeployController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///36661\n");

}),

23322:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var strip_ansi__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! strip-ansi */ 65808);\n/* harmony import */ var strip_ansi__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strip_ansi__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _portainer_error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/error */ 20023);\n/* harmony import */ var Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/deploy */ 6253);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @@/BoxSelector/common-options/deployment-methods */ 86682);\n/* harmony import */ var _BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @@/BoxSelector/common-options/build-methods */ 37463);\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesDeployController {\n  /* @ngInject */\n  constructor($async, $state, $window, Authentication, ModalService, Notifications, KubernetesResourcePoolService, StackService, WebhookHelper, CustomTemplateService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$window = $window;\n    this.Authentication = Authentication;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.StackService = StackService;\n    this.WebhookHelper = WebhookHelper;\n    this.CustomTemplateService = CustomTemplateService;\n    this.DeployMethod = 'manifest';\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_8__.isBE;\n    this.deployOptions = [{ ..._BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_9__.kubernetes,\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes.KUBERNETES\n    }, { ..._BoxSelector_common_options_deployment_methods__WEBPACK_IMPORTED_MODULE_9__.compose,\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes.COMPOSE\n    }];\n    this.methodOptions = [{ ..._BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_10__.git,\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.GIT\n    }, { ..._BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_10__.editor,\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.WEB_EDITOR\n    }, { ..._BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_10__.url,\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.URL\n    }, { ..._BoxSelector_common_options_build_methods__WEBPACK_IMPORTED_MODULE_10__.template,\n      description: 'Use custom template',\n      value: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.CUSTOM_TEMPLATE\n    }];\n    this.state = {\n      DeployType: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes.KUBERNETES,\n      BuildMethod: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.GIT,\n      tabLogsDisabled: true,\n      activeTab: 0,\n      viewReady: false,\n      isEditorDirty: false,\n      templateId: null,\n      template: null\n    };\n    this.formValues = {\n      StackName: '',\n      RepositoryURL: '',\n      RepositoryReferenceName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: '',\n      AdditionalFiles: [],\n      ComposeFilePathInRepository: '',\n      RepositoryAutomaticUpdates: false,\n      RepositoryMechanism: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.RepositoryMechanismTypes.INTERVAL,\n      RepositoryFetchInterval: '5m',\n      RepositoryWebhookURL: WebhookHelper.returnStackWebhookUrl(uuid_v4__WEBPACK_IMPORTED_MODULE_4___default()()),\n      Variables: {}\n    };\n    this.ManifestDeployTypes = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes;\n    this.BuildMethods = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods;\n    this.onChangeTemplateId = this.onChangeTemplateId.bind(this);\n    this.deployAsync = this.deployAsync.bind(this);\n    this.onChangeFileContent = this.onChangeFileContent.bind(this);\n    this.getNamespacesAsync = this.getNamespacesAsync.bind(this);\n    this.onChangeFormValues = this.onChangeFormValues.bind(this);\n    this.buildAnalyticsProperties = this.buildAnalyticsProperties.bind(this);\n    this.onChangeMethod = this.onChangeMethod.bind(this);\n    this.onChangeDeployType = this.onChangeDeployType.bind(this);\n    this.onChangeTemplateVariables = this.onChangeTemplateVariables.bind(this);\n  }\n\n  onChangeTemplateVariables(value) {\n    this.onChangeFormValues({\n      Variables: value\n    });\n    this.renderTemplate();\n  }\n\n  renderTemplate() {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const rendered = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_7__.renderTemplate)(this.state.templateContent, this.formValues.Variables, this.state.template.Variables);\n    this.onChangeFormValues({\n      EditorContent: rendered\n    });\n  }\n\n  buildAnalyticsProperties() {\n    const metadata = {\n      type: buildLabel(this.state.BuildMethod),\n      format: formatLabel(this.state.DeployType),\n      role: roleLabel(this.Authentication.isAdmin()),\n      'automatic-updates': automaticUpdatesLabel(this.formValues.RepositoryAutomaticUpdates, this.formValues.RepositoryMechanism)\n    };\n\n    if (this.state.BuildMethod === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.GIT) {\n      metadata.auth = this.formValues.RepositoryAuthentication;\n    }\n\n    return {\n      metadata\n    };\n\n    function automaticUpdatesLabel(repositoryAutomaticUpdates, repositoryMechanism) {\n      switch (repositoryAutomaticUpdates && repositoryMechanism) {\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.RepositoryMechanismTypes.INTERVAL:\n          return 'polling';\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.RepositoryMechanismTypes.WEBHOOK:\n          return 'webhook';\n\n        default:\n          return 'off';\n      }\n    }\n\n    function roleLabel(isAdmin) {\n      if (isAdmin) {\n        return 'admin';\n      }\n\n      return 'standard';\n    }\n\n    function buildLabel(buildMethod) {\n      switch (buildMethod) {\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.GIT:\n          return 'git';\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.WEB_EDITOR:\n          return 'web-editor';\n      }\n    }\n\n    function formatLabel(format) {\n      switch (format) {\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes.COMPOSE:\n          return 'compose';\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployManifestTypes.KUBERNETES:\n          return 'manifest';\n      }\n    }\n  }\n\n  onChangeMethod(method) {\n    this.state.BuildMethod = method;\n  }\n\n  onChangeDeployType(type) {\n    this.state.DeployType = type;\n\n    if (type == this.ManifestDeployTypes.COMPOSE) {\n      this.DeployMethod = 'compose';\n    } else {\n      this.DeployMethod = 'manifest';\n    }\n  }\n\n  disableDeploy() {\n    const isGitFormInvalid = this.state.BuildMethod === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.GIT && (!this.formValues.RepositoryURL || !this.formValues.FilePathInRepository || this.formValues.RepositoryAuthentication && !this.formValues.RepositoryPassword) && lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.Namespace);\n\n    const isWebEditorInvalid = this.state.BuildMethod === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.WEB_EDITOR && lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.EditorContent) && lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.Namespace);\n\n    const isURLFormInvalid = this.state.BuildMethod == Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.WEB_EDITOR.URL && lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.ManifestURL);\n\n    const isNamespaceInvalid = lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.Namespace);\n\n    return !this.formValues.StackName || isGitFormInvalid || isWebEditorInvalid || isURLFormInvalid || this.state.actionInProgress || isNamespaceInvalid;\n  }\n\n  onChangeFormValues(values) {\n    this.formValues = { ...this.formValues,\n      ...values\n    };\n  }\n\n  onChangeTemplateId(templateId, template) {\n    return this.$async(async () => {\n      if (!template || this.state.templateId === templateId && this.state.template === template) {\n        return;\n      }\n\n      this.state.templateId = templateId;\n      this.state.template = template;\n\n      try {\n        const fileContent = await this.CustomTemplateService.customTemplateFile(templateId);\n        this.state.templateContent = fileContent;\n        this.onChangeFileContent(fileContent);\n\n        if (template.Variables && template.Variables.length > 0) {\n          const variables = Object.fromEntries(template.Variables.map(variable => [variable.name, '']));\n          this.onChangeTemplateVariables(variables);\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to load template file');\n      }\n    });\n  }\n\n  onChangeFileContent(value) {\n    this.formValues.EditorContent = value;\n    this.state.isEditorDirty = true;\n  }\n\n  displayErrorLog(log) {\n    this.errorLog = strip_ansi__WEBPACK_IMPORTED_MODULE_3___default()(log);\n    this.state.tabLogsDisabled = false;\n    this.state.activeTab = 1;\n  }\n\n  async deployAsync() {\n    this.errorLog = '';\n    this.state.actionInProgress = true;\n\n    try {\n      let method;\n      let composeFormat = this.state.DeployType === this.ManifestDeployTypes.COMPOSE;\n\n      switch (this.state.BuildMethod) {\n        case this.BuildMethods.GIT:\n          method = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.REPOSITORY;\n          break;\n\n        case this.BuildMethods.WEB_EDITOR:\n          method = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.STRING;\n          break;\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.CUSTOM_TEMPLATE:\n          method = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.STRING;\n          composeFormat = false;\n          break;\n\n        case this.BuildMethods.URL:\n          method = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.URL;\n          break;\n\n        default:\n          throw new _portainer_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"]('Unable to determine build method');\n      }\n\n      let deployNamespace = '';\n\n      if (this.formValues.namespace_toggle) {\n        deployNamespace = '';\n      } else {\n        deployNamespace = this.formValues.Namespace;\n      }\n\n      const payload = {\n        ComposeFormat: composeFormat,\n        Namespace: deployNamespace,\n        StackName: this.formValues.StackName\n      };\n\n      if (method === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.REPOSITORY) {\n        payload.RepositoryURL = this.formValues.RepositoryURL;\n        payload.RepositoryReferenceName = this.formValues.RepositoryReferenceName;\n        payload.RepositoryAuthentication = this.formValues.RepositoryAuthentication ? true : false;\n\n        if (payload.RepositoryAuthentication) {\n          payload.RepositoryUsername = this.formValues.RepositoryUsername;\n          payload.RepositoryPassword = this.formValues.RepositoryPassword;\n        }\n\n        payload.ManifestFile = this.formValues.ComposeFilePathInRepository;\n        payload.AdditionalFiles = this.formValues.AdditionalFiles;\n\n        if (this.formValues.RepositoryAutomaticUpdates) {\n          payload.AutoUpdate = {};\n\n          if (this.formValues.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.RepositoryMechanismTypes.INTERVAL) {\n            payload.AutoUpdate.Interval = this.formValues.RepositoryFetchInterval;\n          } else if (this.formValues.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.RepositoryMechanismTypes.WEBHOOK) {\n            payload.AutoUpdate.Webhook = this.formValues.RepositoryWebhookURL.split('/').reverse()[0];\n          }\n        }\n      } else if (method === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployRequestMethods.STRING) {\n        payload.StackFileContent = this.formValues.EditorContent;\n      } else {\n        payload.ManifestURL = this.formValues.ManifestURL;\n      }\n\n      await this.StackService.kubernetesDeploy(this.endpoint.Id, method, payload);\n      this.Notifications.success('Success', 'Manifest successfully deployed');\n      this.state.isEditorDirty = false;\n      this.$state.go('kubernetes.applications');\n    } catch (err) {\n      this.Notifications.error('Unable to deploy manifest', err, 'Unable to deploy resources');\n      this.displayErrorLog(err.err.data.details);\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  deploy() {\n    return this.$async(this.deployAsync);\n  }\n\n  async getNamespacesAsync() {\n    try {\n      const pools = await this.KubernetesResourcePoolService.get();\n\n      const namespaces = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(pools, 'Namespace').sort((a, b) => {\n        if (a.Name === 'default') {\n          return -1;\n        }\n\n        if (b.Name === 'default') {\n          return 1;\n        }\n\n        return 0;\n      });\n\n      this.namespaces = namespaces;\n\n      if (this.namespaces.length > 0) {\n        this.formValues.Namespace = this.namespaces[0].Name;\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to load namespaces data');\n    }\n  }\n\n  getNamespaces() {\n    return this.$async(this.getNamespacesAsync);\n  }\n\n  async uiCanExit() {\n    if (this.formValues.EditorContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.formValues.namespace_toggle = false;\n      await this.getNamespaces();\n\n      if (this.$state.params.templateId) {\n        const templateId = parseInt(this.$state.params.templateId, 10);\n\n        if (templateId && !Number.isNaN(templateId)) {\n          this.state.BuildMethod = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_6__.KubernetesDeployBuildMethods.CUSTOM_TEMPLATE;\n          this.state.templateId = templateId;\n        }\n      }\n\n      this.state.viewReady = true;\n\n      this.$window.onbeforeunload = () => {\n        if (this.formValues.EditorContent && this.state.isEditorDirty) {\n          return '';\n        }\n      };\n    });\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\n\nKubernetesDeployController.$inject = [\"$async\", \"$state\", \"$window\", \"Authentication\", \"ModalService\", \"Notifications\", \"KubernetesResourcePoolService\", \"StackService\", \"WebhookHelper\", \"CustomTemplateService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesDeployController);\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.kubernetes').controller('KubernetesDeployController', KubernetesDeployController);//# sourceURL=webpack-internal:///23322\n");

}),

28311:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourcePoolAccess.html */ 9273);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolAccessView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolAccessController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///28311\n");

}),

38513:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/config-map/models */ 13978);\n/* harmony import */ var Portainer_models_access__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Portainer/models/access */ 93133);\n/* harmony import */ var Kubernetes_helpers_configMapHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/configMapHelper */ 58007);\n\n\n\n\n\n\n\n\nclass KubernetesResourcePoolAccessController {\n  /* @ngInject */\n  constructor($async, $state, $scope, Notifications, KubernetesResourcePoolService, KubernetesConfigMapService, GroupService, AccessService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$scope = $scope;\n    this.Notifications = Notifications;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesConfigMapService = KubernetesConfigMapService;\n    this.GroupService = GroupService;\n    this.AccessService = AccessService;\n    this.onInit = this.onInit.bind(this);\n    this.authorizeAccessAsync = this.authorizeAccessAsync.bind(this);\n    this.unauthorizeAccessAsync = this.unauthorizeAccessAsync.bind(this);\n    this.onUsersAndTeamsChange = this.onUsersAndTeamsChange.bind(this);\n    this.unauthorizeAccess = this.unauthorizeAccess.bind(this);\n  }\n\n  initAccessConfigMap(configMap) {\n    configMap.Name = Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapConfigName;\n    configMap.Namespace = Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapNamespace;\n    configMap.Data[Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapAccessKey] = {};\n    return configMap;\n  }\n  /**\n   * Init\n   */\n\n\n  async onInit() {\n    const endpoint = this.endpoint;\n    this.state = {\n      actionInProgress: false,\n      viewReady: false\n    };\n    this.formValues = {\n      multiselectOutput: []\n    };\n\n    try {\n      const name = this.$transition$.params().id;\n      let [pool, configMap] = await Promise.all([this.KubernetesResourcePoolService.get(name), this.KubernetesConfigMapService.getAccess(Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapNamespace, Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapConfigName)]);\n      const group = await this.GroupService.group(endpoint.GroupId);\n      const roles = [];\n      const endpointAccesses = await this.AccessService.accesses(endpoint, group, roles);\n      this.pool = pool;\n\n      if (configMap.Id === 0) {\n        configMap = this.initAccessConfigMap(configMap);\n      }\n\n      configMap = Kubernetes_helpers_configMapHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].parseJSONData(configMap);\n      this.authorizedUsersAndTeams = [];\n      this.accessConfigMap = configMap;\n      const poolAccesses = configMap.Data[Kubernetes_models_config_map_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesPortainerConfigMapAccessKey][name];\n\n      if (poolAccesses) {\n        this.authorizedUsersAndTeams = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(endpointAccesses.authorizedUsersAndTeams, item => {\n          if (item instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_5__.UserAccessViewModel && poolAccesses.UserAccessPolicies) {\n            return poolAccesses.UserAccessPolicies[item.Id] !== undefined;\n          } else if (item instanceof Portainer_models_access__WEBPACK_IMPORTED_MODULE_5__.TeamAccessViewModel && poolAccesses.TeamAccessPolicies) {\n            return poolAccesses.TeamAccessPolicies[item.Id] !== undefined;\n          }\n\n          return false;\n        });\n      }\n\n      this.availableUsersAndTeams = lodash_es_without__WEBPACK_IMPORTED_MODULE_1___default()(endpointAccesses.authorizedUsersAndTeams, ...this.authorizedUsersAndTeams);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve namespace information');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n  /**\n   * Authorize access\n   */\n\n\n  async authorizeAccessAsync() {\n    try {\n      this.state.actionInProgress = true;\n\n      const newAccesses = lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default()(this.authorizedUsersAndTeams, this.formValues.multiselectOutput);\n\n      const accessConfigMap = Kubernetes_helpers_configMapHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].modifiyNamespaceAccesses(angular__WEBPACK_IMPORTED_MODULE_3___default().copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses);\n      await this.KubernetesConfigMapService.updateAccess(accessConfigMap);\n      this.Notifications.success('Success', 'Access successfully created');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create accesses');\n    }\n  }\n\n  onUsersAndTeamsChange(value) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.multiselectOutput = value;\n    });\n  }\n\n  authorizeAccess() {\n    return this.$async(this.authorizeAccessAsync);\n  }\n  /**\n   *\n   */\n\n\n  async unauthorizeAccessAsync(selectedItems) {\n    try {\n      this.state.actionInProgress = true;\n\n      const newAccesses = lodash_es_without__WEBPACK_IMPORTED_MODULE_1___default()(this.authorizedUsersAndTeams, ...selectedItems);\n\n      const accessConfigMap = Kubernetes_helpers_configMapHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].modifiyNamespaceAccesses(angular__WEBPACK_IMPORTED_MODULE_3___default().copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses);\n      await this.KubernetesConfigMapService.updateAccess(accessConfigMap);\n      this.Notifications.success('Success', 'Access successfully removed');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to remove accesses');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  unauthorizeAccess(selectedItems) {\n    return this.$async(this.unauthorizeAccessAsync, selectedItems);\n  }\n\n}\n\nKubernetesResourcePoolAccessController.$inject = [\"$async\", \"$state\", \"$scope\", \"Notifications\", \"KubernetesResourcePoolService\", \"KubernetesConfigMapService\", \"GroupService\", \"AccessService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourcePoolAccessController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesResourcePoolAccessController', KubernetesResourcePoolAccessController);//# sourceURL=webpack-internal:///38513\n");

}),

74474:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"storageClassSwitch\": function() { return /* binding */ storageClassSwitch; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _storage_class_switch_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./storage-class-switch.controller.js */ 10405);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./storage-class-switch.html */ 87925);\n\n\n\nconst storageClassSwitch = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _storage_class_switch_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    value: '<',\n    onChange: '<',\n    name: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('storageClassSwitch', storageClassSwitch);//# sourceURL=webpack-internal:///74474\n");

}),

10405:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\n\nclass StorageClassSwitchController {\n  /* @ngInject */\n  constructor() {\n    this.featureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA;\n    this.handleChange = this.handleChange.bind(this);\n  }\n\n  handleChange(value) {\n    this.onChange(this.name, value);\n  }\n\n}\n\nStorageClassSwitchController.$inject = [];\n/* harmony default export */ __webpack_exports__[\"default\"] = (StorageClassSwitchController);//# sourceURL=webpack-internal:///10405\n");

}),

19777:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _createResourcePoolController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createResourcePoolController */ 83908);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createResourcePool.html */ 28134);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').component('kubernetesCreateResourcePoolView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _createResourcePoolController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///19777\n");

}),

83908:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/resource-quota/models */ 47685);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n/* harmony import */ var Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/ingress/converter */ 47086);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/ingress/constants */ 62072);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/react/kubernetes/cluster/ingressClass/utils */ 4679);\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesCreateResourcePoolController {\n  /* #region  CONSTRUCTOR */\n\n  /* @ngInject */\n  constructor($async, $state, $scope, Notifications, KubernetesNodeService, KubernetesResourcePoolService, KubernetesIngressService, Authentication, EndpointService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      $scope,\n      Notifications,\n      KubernetesNodeService,\n      KubernetesResourcePoolService,\n      KubernetesIngressService,\n      Authentication,\n      EndpointService\n    });\n    this.IngressClassTypes = Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_8__.KubernetesIngressClassTypes;\n    this.LBQuotaFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_9__.FeatureId.K8S_RESOURCE_POOL_LB_QUOTA;\n    this.onToggleStorageQuota = this.onToggleStorageQuota.bind(this);\n    this.onToggleLoadBalancerQuota = this.onToggleLoadBalancerQuota.bind(this);\n    this.onToggleResourceQuota = this.onToggleResourceQuota.bind(this);\n    this.onChangeIngressControllerAvailability = this.onChangeIngressControllerAvailability.bind(this);\n    this.onRegistriesChange = this.onRegistriesChange.bind(this);\n    this.handleMemoryLimitChange = this.handleMemoryLimitChange.bind(this);\n    this.handleCpuLimitChange = this.handleCpuLimitChange.bind(this);\n  }\n  /* #endregion */\n\n\n  onRegistriesChange(registries) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues.Registries = registries;\n    });\n  }\n\n  onToggleStorageQuota(storageClassName, enabled) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.StorageClasses = this.formValues.StorageClasses.map(sClass => sClass.Name !== storageClassName ? sClass : { ...sClass,\n        Selected: enabled\n      });\n    });\n  }\n\n  onToggleLoadBalancerQuota(enabled) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.UseLoadBalancersQuota = enabled;\n    });\n  }\n\n  onToggleResourceQuota(enabled) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.HasQuota = enabled;\n    });\n  }\n  /* #region  INGRESS MANAGEMENT */\n\n\n  onChangeIngressControllerAvailability(controllerClassMap) {\n    this.ingressControllers = controllerClassMap;\n  }\n  /* #endregion */\n\n\n  isCreateButtonDisabled() {\n    return this.state.actionInProgress || this.formValues.HasQuota && !this.isQuotaValid() || this.state.isAlreadyExist || this.state.hasPrefixKube || this.state.duplicates.ingressHosts.hasRefs;\n  }\n\n  onChangeName() {\n    this.state.isAlreadyExist = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()(this.resourcePools, resourcePool => resourcePool.Namespace.Name === this.formValues.Name) !== undefined;\n    this.state.hasPrefixKube = /^kube-/.test(this.formValues.Name);\n  }\n\n  isQuotaValid() {\n    if (this.state.sliderMaxCpu < this.formValues.CpuLimit || this.state.sliderMaxMemory < this.formValues.MemoryLimit || this.formValues.CpuLimit === 0 && this.formValues.MemoryLimit === 0) {\n      return false;\n    }\n\n    return true;\n  }\n\n  checkDefaults() {\n    if (this.formValues.CpuLimit < this.defaults.CpuLimit) {\n      this.formValues.CpuLimit = this.defaults.CpuLimit;\n    }\n\n    if (this.formValues.MemoryLimit < Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].megaBytesValue(this.defaults.MemoryLimit)) {\n      this.formValues.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].megaBytesValue(this.defaults.MemoryLimit);\n    }\n  }\n\n  handleMemoryLimitChange(memoryLimit) {\n    return this.$async(async () => {\n      this.formValues.MemoryLimit = memoryLimit;\n    });\n  }\n\n  handleCpuLimitChange(cpuLimit) {\n    return this.$async(async () => {\n      this.formValues.CpuLimit = cpuLimit;\n    });\n  }\n  /* #region  CREATE NAMESPACE */\n\n\n  createResourcePool() {\n    return this.$async(async () => {\n      this.state.actionInProgress = true;\n\n      try {\n        this.checkDefaults();\n        this.formValues.Owner = this.Authentication.getUserDetails().username;\n        await this.KubernetesResourcePoolService.create(this.formValues);\n        await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_10__.updateIngressControllerClassMap)(this.endpoint.Id, this.ingressControllers || [], this.formValues.Name);\n        this.Notifications.success('Namespace successfully created', this.formValues.Name);\n        this.$state.go('kubernetes.resourcePools');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to create namespace');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET INGRESSES */\n\n\n  getIngresses() {\n    return this.$async(async () => {\n      try {\n        this.allIngresses = await this.KubernetesIngressService.get();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve ingresses.');\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET NAMESPACES */\n\n\n  getResourcePools() {\n    return this.$async(async () => {\n      try {\n        this.resourcePools = await this.KubernetesResourcePoolService.get();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve namespaces');\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET REGISTRIES */\n\n\n  getRegistries() {\n    return this.$async(async () => {\n      try {\n        this.registries = await this.EndpointService.registries(this.endpoint.Id);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registries');\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  ON INIT */\n\n\n  $onInit() {\n    return this.$async(async () => {\n      try {\n        const endpoint = this.endpoint;\n        this.defaults = Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourceQuotaDefaults;\n        this.formValues = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_5__.KubernetesResourcePoolFormValues(this.defaults);\n        this.formValues.EndpointId = this.endpoint.Id;\n        this.formValues.HasQuota = true;\n        this.state = {\n          actionInProgress: false,\n          sliderMaxMemory: 0,\n          sliderMaxCpu: 0,\n          viewReady: false,\n          isAlreadyExist: false,\n          hasPrefixKube: false,\n          canUseIngress: false,\n          duplicates: {\n            ingressHosts: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_7__.KubernetesFormValidationReferences()\n          },\n          isAdmin: this.Authentication.isAdmin(),\n          ingressAvailabilityPerNamespace: endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace\n        };\n        const nodes = await this.KubernetesNodeService.get();\n        this.ingressControllers = [];\n\n        if (this.state.ingressAvailabilityPerNamespace) {\n          this.ingressControllers = await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_10__.getIngressControllerClassMap)({\n            environmentId: this.endpoint.Id,\n            allowedOnly: true\n          });\n        }\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(nodes, item => {\n          this.state.sliderMaxMemory += filesize_parser__WEBPACK_IMPORTED_MODULE_2___default()(item.Memory);\n          this.state.sliderMaxCpu += item.CPU;\n        });\n\n        this.state.sliderMaxMemory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_4__[\"default\"].megaBytesValue(this.state.sliderMaxMemory);\n        await this.getResourcePools();\n\n        if (this.state.canUseIngress) {\n          await this.getIngresses();\n          const ingressClasses = endpoint.Kubernetes.Configuration.IngressClasses;\n          this.formValues.IngressClasses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_6__.KubernetesIngressConverter.ingressClassesToFormValues(ingressClasses);\n        }\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.formValues.IngressClasses, ic => {\n          if (ic.Hosts.length === 0) {\n            ic.Hosts.push(new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_5__.KubernetesResourcePoolIngressClassHostFormValue());\n          }\n        });\n\n        await this.getRegistries();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to load view data');\n      } finally {\n        this.state.viewReady = true;\n      }\n    });\n  }\n  /* #endregion */\n\n\n}\n\nKubernetesCreateResourcePoolController.$inject = [\"$async\", \"$state\", \"$scope\", \"Notifications\", \"KubernetesNodeService\", \"KubernetesResourcePoolService\", \"KubernetesIngressService\", \"Authentication\", \"EndpointService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesCreateResourcePoolController);//# sourceURL=webpack-internal:///83908\n");

}),

63009:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.kubernetes').controller('KubernetesResourcePoolIngressesDatatableController', [\"$scope\", \"$controller\", \"DatatableService\", function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: false\n  });\n\n  this.onSettingsRepeaterChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.Paths.length > 0;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///63009\n");

}),

44474:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./template.html */ 23932);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolIngressesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolIngressesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///44474\n");

}),

85146:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourcePool.html */ 50856);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///85146\n");

}),

42310:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/resource-quota/models */ 47685);\n/* harmony import */ var Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/resourceReservationHelper */ 22229);\n/* harmony import */ var Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/models/resource-reservation/models */ 46685);\n/* harmony import */ var Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/helpers/eventHelper */ 52929);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n/* harmony import */ var Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/ingress/converter */ 47086);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/ingress/constants */ 62072);\n/* harmony import */ var Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Kubernetes/converters/resourceQuota */ 57456);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/react/kubernetes/cluster/ingressClass/utils */ 4679);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass KubernetesResourcePoolController {\n  /* #region  CONSTRUCTOR */\n\n  /* @ngInject */\n  constructor($async, $state, $scope, Authentication, Notifications, LocalStorage, EndpointService, ModalService, KubernetesNodeService, KubernetesMetricsService, KubernetesResourceQuotaService, KubernetesResourcePoolService, KubernetesEventService, KubernetesPodService, KubernetesApplicationService, KubernetesIngressService, KubernetesVolumeService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      $scope,\n      Authentication,\n      Notifications,\n      LocalStorage,\n      EndpointService,\n      ModalService,\n      KubernetesNodeService,\n      KubernetesMetricsService,\n      KubernetesResourceQuotaService,\n      KubernetesResourcePoolService,\n      KubernetesEventService,\n      KubernetesPodService,\n      KubernetesApplicationService,\n      KubernetesIngressService,\n      KubernetesVolumeService\n    });\n    this.IngressClassTypes = Kubernetes_ingress_constants__WEBPACK_IMPORTED_MODULE_13__.KubernetesIngressClassTypes;\n    this.ResourceQuotaDefaults = Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults;\n    this.LBQuotaFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_16__.FeatureId.K8S_RESOURCE_POOL_LB_QUOTA;\n    this.StorageQuotaFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_16__.FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA;\n    this.updateResourcePoolAsync = this.updateResourcePoolAsync.bind(this);\n    this.getEvents = this.getEvents.bind(this);\n    this.onToggleLoadBalancersQuota = this.onToggleLoadBalancersQuota.bind(this);\n    this.onToggleStorageQuota = this.onToggleStorageQuota.bind(this);\n    this.onChangeIngressControllerAvailability = this.onChangeIngressControllerAvailability.bind(this);\n    this.onRegistriesChange = this.onRegistriesChange.bind(this);\n    this.handleMemoryLimitChange = this.handleMemoryLimitChange.bind(this);\n    this.handleCpuLimitChange = this.handleCpuLimitChange.bind(this);\n  }\n  /* #endregion */\n\n\n  onRegistriesChange(registries) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues.Registries = registries;\n    });\n  }\n\n  onToggleLoadBalancersQuota(checked) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues.UseLoadBalancersQuota = checked;\n    });\n  }\n\n  onToggleStorageQuota(storageClassName, enabled) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.StorageClasses = this.formValues.StorageClasses.map(sClass => sClass.Name !== storageClassName ? sClass : { ...sClass,\n        Selected: enabled\n      });\n    });\n  }\n\n  onChangeIngressControllerAvailability(controllerClassMap) {\n    this.ingressControllers = controllerClassMap;\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('resourcePool', index);\n  }\n\n  isUpdateButtonDisabled() {\n    return this.state.actionInProgress || this.formValues.HasQuota && !this.isQuotaValid() || this.state.duplicates.ingressHosts.hasRefs;\n  }\n\n  isQuotaValid() {\n    if (this.state.sliderMaxCpu < this.formValues.CpuLimit || this.state.sliderMaxMemory < this.formValues.MemoryLimit || this.formValues.CpuLimit === 0 && this.formValues.MemoryLimit === 0) {\n      return false;\n    }\n\n    return true;\n  }\n\n  checkDefaults() {\n    if (this.formValues.CpuLimit < Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults.CpuLimit) {\n      this.formValues.CpuLimit = Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults.CpuLimit;\n    }\n\n    if (this.formValues.MemoryLimit < Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults.MemoryLimit)) {\n      this.formValues.MemoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults.MemoryLimit);\n    }\n  }\n\n  handleMemoryLimitChange(memoryLimit) {\n    return this.$async(async () => {\n      this.formValues.MemoryLimit = memoryLimit;\n    });\n  }\n\n  handleCpuLimitChange(cpuLimit) {\n    return this.$async(async () => {\n      this.formValues.CpuLimit = cpuLimit;\n    });\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n    this.selectTab(2);\n  }\n\n  hasResourceQuotaBeenReduced() {\n    if (this.formValues.HasQuota && this.oldQuota) {\n      const cpuLimit = this.formValues.CpuLimit;\n      const memoryLimit = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bytesValue(this.formValues.MemoryLimit);\n\n      if (cpuLimit < this.oldQuota.CpuLimit || memoryLimit < this.oldQuota.MemoryLimit) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /* #region  UPDATE NAMESPACE */\n\n\n  async updateResourcePoolAsync(oldFormValues, newFormValues) {\n    this.state.actionInProgress = true;\n\n    try {\n      this.checkDefaults();\n      await this.KubernetesResourcePoolService.patch(oldFormValues, newFormValues);\n      await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_17__.updateIngressControllerClassMap)(this.endpoint.Id, this.ingressControllers || [], this.formValues.Name);\n      this.Notifications.success('Namespace successfully updated', this.pool.Namespace.Name);\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to create namespace');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  updateResourcePool() {\n    const ingressesToDelete = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(this.formValues.IngressClasses, {\n      WasSelected: true,\n      Selected: false\n    });\n\n    const registriesToDelete = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(this.registries, {\n      WasChecked: true,\n      Checked: false\n    });\n\n    const warnings = {\n      quota: this.hasResourceQuotaBeenReduced(),\n      ingress: ingressesToDelete.length !== 0,\n      registries: registriesToDelete.length !== 0\n    };\n\n    if (warnings.quota || warnings.ingress || warnings.registries) {\n      const messages = {\n        quota: '减少分配给 \"使用中 \"命名空间的配额可能会产生意想不到的后果，包括阻止正在运行的应用程序正常运行，甚至有可能完全阻止它们运行。',\n        ingress: '停用接入点可能导致应用程序无法访问。受影响的应用程序的所有入口配置将被删除。',\n        registries: '你删除的一些注册表可能被这个环境中的一个或多个应用程序使用。移除注册表的访问可能导致这些应用程序的服务中断。'\n      };\n      const displayedMessage = `${warnings.quota ? messages.quota + '<br/><br/>' : ''}\n      ${warnings.ingress ? messages.ingress + '<br/><br/>' : ''}\n      ${warnings.registries ? messages.registries + '<br/><br/>' : ''}\n      你想继续吗？`;\n      this.ModalService.confirmUpdate(displayedMessage, confirmed => {\n        if (confirmed) {\n          return this.$async(this.updateResourcePoolAsync, this.savedFormValues, this.formValues);\n        }\n      });\n    } else {\n      return this.$async(this.updateResourcePoolAsync, this.savedFormValues, this.formValues);\n    }\n  }\n\n  async confirmMarkUnmarkAsSystem() {\n    const message = this.isSystem ? '如果不把这个命名空间标记为系统，将允许非管理员用户根据访问控制设置来管理它和其中的资源。 你确定吗？' : '将此命名空间标记为系统命名空间将防止非管理员用户管理它和它包含的资源。 你确定吗？';\n    return new Promise(resolve => {\n      this.ModalService.confirmUpdate(message, resolve);\n    });\n  }\n\n  markUnmarkAsSystem() {\n    return this.$async(async () => {\n      try {\n        const namespaceName = this.$state.params.id;\n        this.state.actionInProgress = true;\n        const confirmed = await this.confirmMarkUnmarkAsSystem();\n\n        if (!confirmed) {\n          return;\n        }\n\n        await this.KubernetesResourcePoolService.toggleSystem(this.endpoint.Id, namespaceName, !this.isSystem);\n        this.Notifications.success('Namespace successfully updated', namespaceName);\n        this.$state.reload(this.$state.current);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to create namespace');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n  /* #endregion */\n\n\n  hasEventWarnings() {\n    return this.state.eventWarningCount;\n  }\n  /* #region  GET EVENTS */\n\n\n  getEvents() {\n    return this.$async(async () => {\n      try {\n        this.state.eventsLoading = true;\n        this.events = await this.KubernetesEventService.get(this.pool.Namespace.Name);\n        this.state.eventWarningCount = Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_9__[\"default\"].warningCount(this.events);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve namespace related events');\n      } finally {\n        this.state.eventsLoading = false;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET APPLICATIONS */\n\n\n  getApplications() {\n    return this.$async(async () => {\n      try {\n        this.state.applicationsLoading = true;\n        this.applications = await this.KubernetesApplicationService.get(this.pool.Namespace.Name);\n        this.applications = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(this.applications, app => {\n          const resourceReservation = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].computeResourceReservation(app.Pods);\n          app.CPU = resourceReservation.CPU;\n          app.Memory = resourceReservation.Memory;\n          return app;\n        });\n\n        if (this.state.useServerMetrics) {\n          await this.getResourceUsage(this.pool.Namespace.Name);\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve applications.');\n      } finally {\n        this.state.applicationsLoading = false;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET INGRESSES */\n\n\n  getIngresses() {\n    return this.$async(async () => {\n      this.state.ingressesLoading = true;\n\n      try {\n        const namespace = this.pool.Namespace.Name;\n        this.allIngresses = await this.KubernetesIngressService.get(this.state.hasWriteAuthorization ? '' : namespace);\n        this.ingresses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(this.allIngresses, {\n          Namespace: namespace\n        });\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.ingresses, ing => {\n          ing.Namespace = namespace;\n\n          lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(ing.Paths, path => {\n            const application = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.applications, {\n              ServiceName: path.ServiceName\n            });\n\n            path.ApplicationName = application && application.Name ? application.Name : '-';\n          });\n        });\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve ingresses.');\n      } finally {\n        this.state.ingressesLoading = false;\n      }\n    });\n  }\n  /* #endregion */\n\n  /* #region  GET REGISTRIES */\n\n\n  getRegistries() {\n    return this.$async(async () => {\n      try {\n        const namespace = this.$state.params.id;\n\n        if (this.isAdmin) {\n          this.registries = await this.EndpointService.registries(this.endpoint.Id);\n          this.registries.forEach(reg => {\n            if (reg.RegistryAccesses && reg.RegistryAccesses[this.endpoint.Id] && reg.RegistryAccesses[this.endpoint.Id].Namespaces.includes(namespace)) {\n              reg.Checked = true;\n              reg.WasChecked = true;\n              this.formValues.Registries.push(reg);\n            }\n          });\n          this.selectedRegistries = this.formValues.Registries.map(r => r.Name).join(', ');\n          return;\n        }\n\n        const registries = await this.EndpointService.registries(this.endpoint.Id, namespace);\n        this.selectedRegistries = registries.map(r => r.Name).join(', ');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registries');\n      }\n    });\n  }\n  /* #endregion */\n\n\n  async getResourceUsage(namespace) {\n    try {\n      const namespaceMetrics = await this.KubernetesMetricsService.getPods(namespace); // extract resource usage of all containers within each pod of the namespace\n\n      const containerResourceUsageList = namespaceMetrics.items.flatMap(i => i.containers.map(c => c.usage));\n      const namespaceResourceUsage = containerResourceUsageList.reduce((total, u) => {\n        total.CPU += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].parseCPU(u.cpu);\n        total.Memory += Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(u.memory);\n        return total;\n      }, new Kubernetes_models_resource_reservation_models__WEBPACK_IMPORTED_MODULE_8__.KubernetesResourceReservation());\n      this.state.resourceUsage = namespaceResourceUsage;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve namespace resource usage');\n    }\n  }\n  /* #region  ON INIT */\n\n\n  $onInit() {\n    return this.$async(async () => {\n      try {\n        this.isAdmin = this.Authentication.isAdmin();\n        this.state = {\n          actionInProgress: false,\n          sliderMaxMemory: 0,\n          sliderMaxCpu: 0,\n          cpuUsage: 0,\n          memoryUsage: 0,\n          resourceReservation: {\n            CPU: 0,\n            Memory: 0\n          },\n          activeTab: 0,\n          currentName: this.$state.$current.name,\n          showEditorTab: false,\n          eventsLoading: true,\n          applicationsLoading: true,\n          ingressesLoading: true,\n          viewReady: false,\n          eventWarningCount: 0,\n          canUseIngress: false,\n          useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics,\n          duplicates: {\n            ingressHosts: new Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_12__.KubernetesFormValidationReferences()\n          },\n          ingressAvailabilityPerNamespace: this.endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace\n        };\n        this.state.activeTab = this.LocalStorage.getActiveTab('resourcePool');\n        const name = this.$state.params.id;\n        const [nodes, pools] = await Promise.all([this.KubernetesNodeService.get(), this.KubernetesResourcePoolService.get()]);\n        this.ingressControllers = [];\n\n        if (this.state.ingressAvailabilityPerNamespace) {\n          this.ingressControllers = await (0,_react_kubernetes_cluster_ingressClass_utils__WEBPACK_IMPORTED_MODULE_17__.getIngressControllerClassMap)({\n            environmentId: this.endpoint.Id,\n            namespace: name\n          });\n        }\n\n        this.pool = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(pools, {\n          Namespace: {\n            Name: name\n          }\n        });\n        this.formValues = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_10__.KubernetesResourcePoolFormValues(Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesResourceQuotaDefaults);\n        this.formValues.Name = this.pool.Namespace.Name;\n        this.formValues.EndpointId = this.endpoint.Id;\n        this.formValues.IsSystem = this.pool.Namespace.IsSystem;\n\n        lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(nodes, item => {\n          this.state.sliderMaxMemory += filesize_parser__WEBPACK_IMPORTED_MODULE_5___default()(item.Memory);\n          this.state.sliderMaxCpu += item.CPU;\n        });\n\n        this.state.sliderMaxMemory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(this.state.sliderMaxMemory);\n        const quota = this.pool.Quota;\n\n        if (quota) {\n          this.oldQuota = angular__WEBPACK_IMPORTED_MODULE_4___default().copy(quota);\n          this.formValues = Kubernetes_converters_resourceQuota__WEBPACK_IMPORTED_MODULE_14__[\"default\"].quotaToResourcePoolFormValues(quota);\n          this.formValues.EndpointId = this.endpoint.Id;\n          this.state.resourceReservation.CPU = quota.CpuLimitUsed;\n          this.state.resourceReservation.Memory = Kubernetes_helpers_resourceReservationHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].megaBytesValue(quota.MemoryLimitUsed);\n        }\n\n        this.isSystem = Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_15__[\"default\"].isSystemNamespace(this.pool.Namespace.Name);\n        this.isDefaultNamespace = Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_15__[\"default\"].isDefaultNamespace(this.pool.Namespace.Name);\n        this.isEditable = !this.isSystem && !this.isDefaultNamespace;\n        await this.getEvents();\n        await this.getApplications();\n\n        if (this.state.canUseIngress) {\n          await this.getIngresses();\n          const ingressClasses = this.endpoint.Kubernetes.Configuration.IngressClasses;\n          this.formValues.IngressClasses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_11__.KubernetesIngressConverter.ingressClassesToFormValues(ingressClasses, this.ingresses);\n\n          lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.formValues.IngressClasses, ic => {\n            if (ic.Hosts.length === 0) {\n              ic.Hosts.push(new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_10__.KubernetesResourcePoolIngressClassHostFormValue());\n            }\n          });\n        }\n\n        await this.getRegistries();\n        this.savedFormValues = angular__WEBPACK_IMPORTED_MODULE_4___default().copy(this.formValues);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to load view data');\n      } finally {\n        this.state.viewReady = true;\n      }\n    });\n  }\n  /* #endregion */\n\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('resourcePool', 0);\n    }\n  }\n\n}\n\nKubernetesResourcePoolController.$inject = [\"$async\", \"$state\", \"$scope\", \"Authentication\", \"Notifications\", \"LocalStorage\", \"EndpointService\", \"ModalService\", \"KubernetesNodeService\", \"KubernetesMetricsService\", \"KubernetesResourceQuotaService\", \"KubernetesResourcePoolService\", \"KubernetesEventService\", \"KubernetesPodService\", \"KubernetesApplicationService\", \"KubernetesIngressService\", \"KubernetesVolumeService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourcePoolController);\nangular__WEBPACK_IMPORTED_MODULE_4___default().module('portainer.kubernetes').controller('KubernetesResourcePoolController', KubernetesResourcePoolController);//# sourceURL=webpack-internal:///42310\n");

}),

7134:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./resourcePools.html */ 78268);\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesResourcePoolsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///7134\n");

}),

39502:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass KubernetesResourcePoolsController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, ModalService, KubernetesResourcePoolService, KubernetesNamespaceService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.ModalService = ModalService;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.KubernetesNamespaceService = KubernetesNamespaceService;\n    this.onInit = this.onInit.bind(this);\n    this.getResourcePools = this.getResourcePools.bind(this);\n    this.getResourcePoolsAsync = this.getResourcePoolsAsync.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n  }\n\n  async removeActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const pool of selectedItems) {\n      try {\n        const isTerminating = pool.Namespace.Status === 'Terminating';\n\n        if (isTerminating) {\n          const ns = await this.KubernetesNamespaceService.getJSONAsync(pool.Namespace.Name);\n          ns.$promise.then(async namespace => {\n            const n = JSON.parse(namespace.data);\n\n            if (n.spec && n.spec.finalizers) {\n              delete n.spec.finalizers;\n            }\n\n            await this.KubernetesNamespaceService.updateFinalizeAsync(n);\n          });\n        } else {\n          await this.KubernetesResourcePoolService.delete(pool);\n        }\n\n        this.Notifications.success('成功删除命名空间', pool.Namespace.Name);\n        const index = this.resourcePools.indexOf(pool);\n        this.resourcePools.splice(index, 1);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法删除命名空间');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload(this.$state.current);\n        }\n      }\n    }\n  }\n\n  removeAction(selectedItems) {\n    const isTerminatingNS = selectedItems.some(pool => pool.Namespace.Status === 'Terminating');\n    const message = isTerminatingNS ? '至少有一个命名空间处于终结状态。对于终止状态的命名空间，你可以继续并强制删除，但在没有适当清理的情况下这样做可能会导致不稳定和不可预测的行为。你确定你要继续吗？' : '您想删除所选命名空间吗？与所选命名空间相关的所有资源也将被删除。您确定要继续吗？';\n    this.ModalService.confirmWithTitle(isTerminatingNS ? '强制删除命名空间' : '你确定吗？', message, confirmed => {\n      if (confirmed) {\n        return this.$async(this.removeActionAsync, selectedItems);\n      }\n    });\n  }\n\n  async getResourcePoolsAsync() {\n    try {\n      this.resourcePools = await this.KubernetesResourcePoolService.get();\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索到命名空间');\n    }\n  }\n\n  getResourcePools() {\n    return this.$async(this.getResourcePoolsAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      viewReady: false\n    };\n    await this.getResourcePools();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n}\n\nKubernetesResourcePoolsController.$inject = [\"$async\", \"$state\", \"Notifications\", \"ModalService\", \"KubernetesResourcePoolService\", \"KubernetesNamespaceService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesResourcePoolsController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesResourcePoolsController', KubernetesResourcePoolsController);//# sourceURL=webpack-internal:///39502\n");

}),

66046:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/feature-flags/enums */ 26196);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesSecurityConstraintController', ['$scope', 'EndpointProvider', 'EndpointService', function ($scope, EndpointProvider, EndpointService) {\n  $scope.limitedFeaturePodSecurityPolicy = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.POD_SECURITY_POLICY_CONSTRAINT;\n  $scope.state = {\n    viewReady: false,\n    actionInProgress: false\n  };\n\n  async function initView() {\n    const endpointID = EndpointProvider.endpointID();\n    EndpointService.endpoint(endpointID).then(endpoint => {\n      $scope.endpoint = endpoint;\n      $scope.state.viewReady = true;\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///66046\n");

}),

9981:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./logs.html */ 88336);\n\nangular.module('portainer.kubernetes').component('kubernetesStackLogsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesStackLogsController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///9981\n");

}),

39554:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/flatMap */ 74362);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_flatMap__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/filter */ 83432);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var Portainer_services_allSettled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Portainer/services/allSettled */ 67808);\n/* harmony import */ var _docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/docker/helpers/logHelper */ 17110);\n\n\n\n\n\n\nconst colors = ['red', 'orange', 'lime', 'green', 'darkgreen', 'cyan', 'turquoise', 'teal', 'deepskyblue', 'blue', 'darkblue', 'slateblue', 'magenta', 'darkviolet'];\n\nclass KubernetesStackLogsController {\n  /* @ngInject */\n  constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, FileSaver, Blob) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$interval = $interval;\n    this.Notifications = Notifications;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.Blob = Blob;\n    this.FileSaver = FileSaver;\n    this.onInit = this.onInit.bind(this);\n    this.stopRepeater = this.stopRepeater.bind(this);\n    this.generateLogsPromise = this.generateLogsPromise.bind(this);\n    this.generateAppPromise = this.generateAppPromise.bind(this);\n    this.getStackLogsAsync = this.getStackLogsAsync.bind(this);\n  }\n\n  updateAutoRefresh() {\n    if (this.state.autoRefresh) {\n      this.setUpdateRepeater();\n      return;\n    }\n\n    this.stopRepeater();\n  }\n\n  stopRepeater() {\n    if (angular__WEBPACK_IMPORTED_MODULE_3___default().isDefined(this.repeater)) {\n      this.$interval.cancel(this.repeater);\n      this.repeater = null;\n    }\n  }\n\n  setUpdateRepeater() {\n    this.repeater = this.$interval(this.getStackLogsAsync, this.state.refreshRate);\n  }\n\n  async generateLogsPromise(pod, container) {\n    const res = {\n      Pod: pod,\n      Logs: []\n    };\n    res.Logs = await this.KubernetesPodService.logs(pod.Namespace, pod.Name, container.Name);\n    return res;\n  }\n\n  async generateAppPromise(app) {\n    const res = {\n      Application: app,\n      Pods: []\n    };\n\n    const promises = lodash_flatMap__WEBPACK_IMPORTED_MODULE_1___default()(lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(app.Pods, pod => lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(pod.Containers, container => this.generateLogsPromise(pod, container))));\n\n    const result = await (0,Portainer_services_allSettled__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(promises);\n    res.Pods = result.fulfilled;\n    return res;\n  }\n\n  async getStackLogsAsync() {\n    try {\n      const applications = await this.KubernetesApplicationService.get(this.state.transition.namespace);\n\n      const filteredApplications = lodash_filter__WEBPACK_IMPORTED_MODULE_2___default()(applications, app => app.StackName === this.state.transition.name);\n\n      const logsPromises = lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(filteredApplications, this.generateAppPromise);\n\n      const data = await Promise.all(logsPromises);\n\n      const logs = lodash_flatMap__WEBPACK_IMPORTED_MODULE_1___default()(data, (app, index) => lodash_flatMap__WEBPACK_IMPORTED_MODULE_1___default()(app.Pods, pod => (0,_docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_5__.formatLogs)(pod.Logs).map(line => ({ ...line,\n        appColor: colors[index % colors.length],\n        appName: pod.Pod.Name\n      }))));\n\n      this.stackLogs = logs;\n    } catch (err) {\n      this.stopRepeater();\n      this.Notifications.error('失败', err, 'Unable to retrieve application logs');\n    }\n  }\n\n  downloadLogs() {\n    const logsAsString = (0,_docker_helpers_logHelper__WEBPACK_IMPORTED_MODULE_5__.concatLogsToString)(this.state.filteredLogs, line => `${line.appName} ${line.line}`);\n    const data = new this.Blob([logsAsString]);\n    this.FileSaver.saveAs(data, this.state.transition.name + '_logs.txt');\n  }\n\n  async onInit() {\n    this.state = {\n      autoRefresh: false,\n      refreshRate: 30000,\n      // 30 seconds\n      search: '',\n      viewReady: false,\n      transition: {\n        namespace: this.$transition$.params().namespace,\n        name: this.$transition$.params().name\n      }\n    };\n    this.stackLogs = [];\n\n    try {\n      await this.getStackLogsAsync();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve stack logs');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    this.stopRepeater();\n  }\n\n}\n\nKubernetesStackLogsController.$inject = [\"$async\", \"$state\", \"$interval\", \"Notifications\", \"KubernetesApplicationService\", \"KubernetesPodService\", \"FileSaver\", \"Blob\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesStackLogsController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesStackLogsController', KubernetesStackLogsController);//# sourceURL=webpack-internal:///39554\n");

}),

45233:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/resource-types/models */ 39212);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/deployment/models */ 59238);\n/* harmony import */ var Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/stateful-set/models */ 91920);\n/* harmony import */ var Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/daemon-set/models */ 12745);\n/* harmony import */ var Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/models/service/models */ 79990);\n/* harmony import */ var Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/application/models */ 7172);\n/* harmony import */ var Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/horizontal-pod-auto-scaler/helper */ 1239);\n/* harmony import */ var Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Kubernetes/horizontal-pod-auto-scaler/converter */ 41247);\n/* harmony import */ var Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Kubernetes/converters/application */ 10293);\n/* harmony import */ var Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Kubernetes/converters/service */ 86998);\n/* harmony import */ var Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Kubernetes/ingress/converter */ 47086);\n/* harmony import */ var Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Kubernetes/converters/persistentVolumeClaim */ 56636);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n  CREATE,\n  UPDATE,\n  DELETE\n} = Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceActions;\n/**\n * Get summary of Kubernetes resources to be created, updated or deleted\n * @param {KubernetesApplicationFormValues} formValues\n */\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(formValues, oldFormValues = {}) {\n  if (oldFormValues instanceof Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_2__.KubernetesApplicationFormValues) {\n    const resourceSummary = getUpdatedApplicationResources(oldFormValues, formValues);\n    return resourceSummary;\n  }\n\n  const resourceSummary = getCreatedApplicationResources(formValues);\n  return resourceSummary;\n}\n/**\n * Get summary of Kubernetes resources to be created\n * @param {KubernetesApplicationFormValues} formValues\n */\n\nfunction getCreatedApplicationResources(formValues) {\n  const resources = [];\n  let [app, headlessService, services, service, claims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_10__[\"default\"].applicationFormValuesToApplication(formValues);\n\n  if (services) {\n    services.forEach(service => {\n      resources.push({\n        action: CREATE,\n        kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n        name: service.Name,\n        type: service.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n      });\n\n      if (formValues.OriginalIngresses.length !== 0) {\n        const ingresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.newApplicationFormValuesToIngresses(formValues, service.Name, service.Ports);\n        resources.push(...getIngressUpdateSummary(formValues.OriginalIngresses, ingresses));\n      }\n    });\n  }\n\n  if (service) {\n    // Service\n    resources.push({\n      action: CREATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n      name: service.Name,\n      type: service.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n    });\n\n    if (formValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationPublishingTypes.INGRESS) {\n      // Ingress\n      const ingresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.applicationFormValuesToIngresses(formValues, service.Name);\n      resources.push(...getIngressUpdateSummary(formValues.OriginalIngresses, ingresses));\n    }\n  }\n\n  if (app instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesStatefulSet) {\n    // Service\n    resources.push({\n      action: CREATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n      name: headlessService.Name,\n      type: headlessService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n    });\n  } else {\n    // Persistent volume claims\n    const persistentVolumeClaimResources = claims.filter(pvc => !pvc.PreviousName && !pvc.Id).map(pvc => ({\n      action: CREATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM,\n      name: pvc.Name\n    }));\n    resources.push(...persistentVolumeClaimResources);\n  } // Horizontal pod autoscalers\n\n\n  if (formValues.AutoScaler.IsUsed && formValues.DeploymentType !== Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationDeploymentTypes.GLOBAL) {\n    const kind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_8__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n    const autoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_9__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(formValues, kind);\n    resources.push({\n      action: CREATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER,\n      name: autoScaler.Name\n    });\n  } // Deployment\n\n\n  const appResourceType = getApplicationResourceType(app);\n\n  if (appResourceType !== null) {\n    resources.push({\n      action: CREATE,\n      kind: appResourceType,\n      name: app.Name\n    });\n  }\n\n  return resources;\n}\n/**\n * Get summary of Kubernetes resources to be created, updated and/or deleted\n * @param {KubernetesApplicationFormValues} oldFormValues\n * @param {KubernetesApplicationFormValues} newFormValues\n */\n\n\nfunction getUpdatedApplicationResources(oldFormValues, newFormValues) {\n  const resources = [];\n  const [oldApp, oldHeadlessService, oldServices, oldService, oldClaims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_10__[\"default\"].applicationFormValuesToApplication(oldFormValues);\n  const [newApp, newHeadlessService, newServices, newService, newClaims] = Kubernetes_converters_application__WEBPACK_IMPORTED_MODULE_10__[\"default\"].applicationFormValuesToApplication(newFormValues);\n  const oldAppResourceType = getApplicationResourceType(oldApp);\n  const newAppResourceType = getApplicationResourceType(newApp);\n\n  if (oldAppResourceType !== newAppResourceType) {\n    // Deployment\n    resources.push({\n      action: DELETE,\n      kind: oldAppResourceType,\n      name: oldApp.Name\n    });\n\n    if (oldService && oldServices) {\n      // Service\n      resources.push({\n        action: DELETE,\n        kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n        name: oldService.Name,\n        type: oldService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n      });\n    } // re-creation of resources\n\n\n    const createdApplicationResourceSummary = getCreatedApplicationResources(newFormValues);\n    resources.push(...createdApplicationResourceSummary);\n    return resources;\n  }\n\n  if (newApp instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesStatefulSet) {\n    const headlessServiceUpdateResourceSummary = getServiceUpdateResourceSummary(oldHeadlessService, newHeadlessService);\n\n    if (headlessServiceUpdateResourceSummary) {\n      resources.push(headlessServiceUpdateResourceSummary);\n    }\n  } else {\n    // Persistent volume claims\n    const claimSummaries = newClaims.map(pvc => {\n      if (!pvc.PreviousName && !pvc.Id) {\n        return {\n          action: CREATE,\n          kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM,\n          name: pvc.Name\n        };\n      } else if (!pvc.Id) {\n        const oldClaim = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(oldClaims, {\n          Name: pvc.PreviousName\n        });\n\n        return getVolumeClaimUpdateResourceSummary(oldClaim, pvc);\n      }\n    }).filter(pvc => pvc); // remove nulls\n\n    resources.push(...claimSummaries);\n  } // Deployment\n\n\n  resources.push({\n    action: UPDATE,\n    kind: oldAppResourceType,\n    name: oldApp.Name\n  });\n\n  if (oldServices && newServices) {\n    // Service\n    const serviceUpdateResourceSummary = getServiceUpdateResourceSummary(oldServices, newServices);\n\n    if (serviceUpdateResourceSummary !== null) {\n      serviceUpdateResourceSummary.forEach(updateSummary => {\n        resources.push(updateSummary);\n      });\n    }\n\n    if (newFormValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationPublishingTypes.INGRESS || oldFormValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationPublishingTypes.INGRESS) {\n      // Ingress\n      const oldIngresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.applicationFormValuesToIngresses(oldFormValues, oldService.Name);\n      const newIngresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.applicationFormValuesToIngresses(newFormValues, newService.Name);\n      resources.push(...getIngressUpdateSummary(oldIngresses, newIngresses));\n    }\n  } else if (!oldService && newService) {\n    // Service\n    resources.push({\n      action: CREATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n      name: newService.Name,\n      type: newService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n    });\n\n    if (newFormValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationPublishingTypes.INGRESS) {\n      // Ingress\n      const ingresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.applicationFormValuesToIngresses(newFormValues, newService.Name);\n      resources.push(...getIngressUpdateSummary(newFormValues.OriginalIngresses, ingresses));\n    }\n  } else if (oldService && !newService) {\n    // Service\n    resources.push({\n      action: DELETE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n      name: oldService.Name,\n      type: oldService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n    });\n\n    if (oldFormValues.PublishingType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationPublishingTypes.INGRESS) {\n      // Ingress\n      const ingresses = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.applicationFormValuesToIngresses(newFormValues, oldService.Name);\n      resources.push(...getIngressUpdateSummary(oldFormValues.OriginalIngresses, ingresses));\n    }\n  }\n\n  const newKind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_8__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(newApp);\n  const newAutoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_9__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(newFormValues, newKind);\n\n  if (!oldFormValues.AutoScaler.IsUsed) {\n    if (newFormValues.AutoScaler.IsUsed) {\n      // Horizontal pod autoscalers\n      resources.push({\n        action: CREATE,\n        kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER,\n        name: newAutoScaler.Name\n      });\n    }\n  } else {\n    // Horizontal pod autoscalers\n    const oldKind = Kubernetes_horizontal_pod_auto_scaler_helper__WEBPACK_IMPORTED_MODULE_8__.KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(oldApp);\n    const oldAutoScaler = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_9__.KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(oldFormValues, oldKind);\n\n    if (newFormValues.AutoScaler.IsUsed) {\n      const hpaUpdateSummary = getHorizontalPodAutoScalerUpdateResourceSummary(oldAutoScaler, newAutoScaler);\n\n      if (hpaUpdateSummary) {\n        resources.push(hpaUpdateSummary);\n      }\n    } else {\n      resources.push({\n        action: DELETE,\n        kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER,\n        name: oldAutoScaler.Name\n      });\n    }\n  }\n\n  return resources;\n}\n\nfunction getApplicationResourceType(app) {\n  if (app instanceof Kubernetes_models_deployment_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesDeployment || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationTypes.DEPLOYMENT) {\n    return Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.DEPLOYMENT;\n  } else if (app instanceof Kubernetes_models_daemon_set_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesDaemonSet || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationTypes.DAEMONSET) {\n    return Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.DAEMONSET;\n  } else if (app instanceof Kubernetes_models_stateful_set_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesStatefulSet || app instanceof Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplication && app.ApplicationType === Kubernetes_models_application_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesApplicationTypes.STATEFULSET) {\n    return Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.STATEFULSET;\n  }\n\n  return null;\n}\n\nfunction getIngressUpdateSummary(oldIngresses, newIngresses) {\n  const ingressesSummaries = newIngresses.map(newIng => {\n    const oldIng = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(oldIngresses, {\n      Name: newIng.Name\n    });\n\n    return getIngressUpdateResourceSummary(oldIng, newIng);\n  }).filter(s => s); // remove nulls\n\n  return ingressesSummaries;\n} // getIngressUpdateResourceSummary replicates KubernetesIngressService.patch\n\n\nfunction getIngressUpdateResourceSummary(oldIngress, newIngress) {\n  const payload = Kubernetes_ingress_converter__WEBPACK_IMPORTED_MODULE_12__.KubernetesIngressConverter.patchPayload(oldIngress, newIngress);\n\n  if (payload.length) {\n    return {\n      action: UPDATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.INGRESS,\n      name: oldIngress.Name\n    };\n  }\n\n  return null;\n} // getVolumeClaimUpdateResourceSummary replicates KubernetesPersistentVolumeClaimService.patch\n\n\nfunction getVolumeClaimUpdateResourceSummary(oldPVC, newPVC) {\n  const payload = Kubernetes_converters_persistentVolumeClaim__WEBPACK_IMPORTED_MODULE_13__[\"default\"].patchPayload(oldPVC, newPVC);\n\n  if (payload.length) {\n    return {\n      action: UPDATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM,\n      name: oldPVC.Name\n    };\n  }\n\n  return null;\n} // getServiceUpdateResourceSummary replicates KubernetesServiceService.patch\n\n\nfunction getServiceUpdateResourceSummary(oldServices, newServices) {\n  let summary = []; // skip update summary when service is headless service\n\n  if (!oldServices.Headless) {\n    newServices.forEach(newService => {\n      const oldServiceMatched = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(oldServices, {\n        Name: newService.Name\n      });\n\n      if (oldServiceMatched) {\n        const payload = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_11__[\"default\"].patchPayload(oldServiceMatched, newService);\n\n        if (payload.length) {\n          const serviceUpdate = {\n            action: UPDATE,\n            kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n            name: oldServiceMatched.Name,\n            type: oldServiceMatched.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n          };\n          summary.push(serviceUpdate);\n        }\n      } else {\n        const emptyService = new Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesService();\n        const payload = Kubernetes_converters_service__WEBPACK_IMPORTED_MODULE_11__[\"default\"].patchPayload(emptyService, newService);\n\n        if (payload.length) {\n          const serviceCreate = {\n            action: CREATE,\n            kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n            name: newService.Name,\n            type: newService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n          };\n          summary.push(serviceCreate);\n        }\n      }\n    });\n    oldServices.forEach(oldService => {\n      const newServiceMatched = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(newServices, {\n        Name: oldService.Name\n      });\n\n      if (!newServiceMatched) {\n        const serviceDelete = {\n          action: DELETE,\n          kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.SERVICE,\n          name: oldService.Name,\n          type: oldService.Type || Kubernetes_models_service_models__WEBPACK_IMPORTED_MODULE_6__.KubernetesServiceTypes.CLUSTER_IP\n        };\n        summary.push(serviceDelete);\n      }\n    });\n  }\n\n  if (summary.length !== 0) {\n    return summary;\n  }\n\n  return null;\n} // getHorizontalPodAutoScalerUpdateResourceSummary replicates KubernetesHorizontalPodAutoScalerService.patch\n\n\nfunction getHorizontalPodAutoScalerUpdateResourceSummary(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n  const payload = Kubernetes_horizontal_pod_auto_scaler_converter__WEBPACK_IMPORTED_MODULE_9__.KubernetesHorizontalPodAutoScalerConverter.patchPayload(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n\n  if (payload.length) {\n    return {\n      action: UPDATE,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER,\n      name: oldHorizontalPodAutoScaler.Name\n    };\n  }\n\n  return null;\n}//# sourceURL=webpack-internal:///45233\n");

}),

3310:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/models/resource-types/models */ 39212);\n/* harmony import */ var Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/configuration/models */ 73582);\n\n\nconst {\n  CREATE,\n  UPDATE\n} = Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesResourceActions;\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(formValues) {\n  const action = formValues.Id ? UPDATE : CREATE;\n\n  if (formValues.Kind === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfigurationKinds.CONFIGMAP) {\n    return [{\n      action,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesResourceTypes.CONFIGMAP,\n      name: formValues.Name\n    }];\n  } else if (formValues.Kind === Kubernetes_models_configuration_models__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfigurationKinds.SECRET) {\n    let type = formValues.Type;\n\n    if (formValues.customType) {\n      type = formValues.customType;\n    }\n\n    return [{\n      action,\n      kind: Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_0__.KubernetesResourceTypes.SECRET,\n      name: formValues.Name,\n      type\n    }];\n  }\n}//# sourceURL=webpack-internal:///3310\n");

}),

60953:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getResourcesSummary\": function() { return /* binding */ getResourcesSummary; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_intersectionWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/intersectionWith */ 32461);\n/* harmony import */ var lodash_es_intersectionWith__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_intersectionWith__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_differenceBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/differenceBy */ 61977);\n/* harmony import */ var lodash_es_differenceBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_differenceBy__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! fast-json-patch */ 81303);\n/* harmony import */ var Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/models/resource-types/models */ 39212);\n\n\n\n\n\n\n\nfunction findCreateResources(newResources, oldResources) {\n  return lodash_es_differenceBy__WEBPACK_IMPORTED_MODULE_3___default()(newResources, oldResources, 'Name');\n}\n\nfunction findDeleteResources(newResources, oldResources) {\n  return lodash_es_differenceBy__WEBPACK_IMPORTED_MODULE_3___default()(oldResources, newResources, 'Name');\n}\n\nfunction findUpdateResources(newResources, oldResources) {\n  const updateResources = lodash_es_intersectionWith__WEBPACK_IMPORTED_MODULE_2___default()(newResources, oldResources, (newResource, oldResource) => {\n    // find out resources with same name but content changed\n    if (newResource.Name != oldResource.Name) {\n      return false;\n    }\n\n    return !isEqual(newResource, oldResource);\n  });\n\n  return updateResources;\n}\n\nfunction isEqual(newResource, oldResource) {\n  let patches = fast_json_patch__WEBPACK_IMPORTED_MODULE_4__.compare(newResource, oldResource);\n  patches = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(patches, change => {\n    return !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(change.path, '$$hashKey') && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(change.path, 'Duplicate');\n  });\n  return !patches.length;\n}\n\nfunction doGetResourcesSummary(newResources, oldResources, kind, action, actionFilter) {\n  const filteredResources = actionFilter(newResources, oldResources);\n  const summary = filteredResources.map(resource => ({\n    name: resource.Name,\n    action,\n    kind\n  }));\n  return summary;\n}\n\nfunction getResourcesSummary(newResources, oldResources, kind) {\n  if (!Array.isArray(newResources)) {\n    newResources = newResources ? [newResources] : [];\n    oldResources = oldResources ? [oldResources] : [];\n  }\n\n  const summary = [...doGetResourcesSummary(newResources, oldResources, kind, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesResourceActions.CREATE, findCreateResources), ...doGetResourcesSummary(newResources, oldResources, kind, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesResourceActions.UPDATE, findUpdateResources), ...doGetResourcesSummary(newResources, oldResources, kind, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_5__.KubernetesResourceActions.DELETE, findDeleteResources)];\n  return summary;\n}//# sourceURL=webpack-internal:///60953\n");

}),

49113:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Kubernetes/converters/resourcePool */ 57911);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n/* harmony import */ var Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/resource-quota/models */ 47685);\n/* harmony import */ var Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/resource-types/models */ 39212);\n/* harmony import */ var Kubernetes_views_summary_resources_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/views/summary/resources/helpers */ 60953);\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(newFormValues, oldFormValues) {\n  const [newNamespace, newQuota, newIngresses] = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_0__[\"default\"].formValuesToResourcePool(newFormValues);\n\n  if (!(oldFormValues instanceof Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourcePoolFormValues)) {\n    oldFormValues = new Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_1__.KubernetesResourcePoolFormValues(Kubernetes_models_resource_quota_models__WEBPACK_IMPORTED_MODULE_2__.KubernetesResourceQuotaDefaults);\n  }\n\n  const [oldNamespace, oldQuota, oldIngresses] = Kubernetes_converters_resourcePool__WEBPACK_IMPORTED_MODULE_0__[\"default\"].formValuesToResourcePool(oldFormValues);\n  const resources = [...(0,Kubernetes_views_summary_resources_helpers__WEBPACK_IMPORTED_MODULE_4__.getResourcesSummary)(newNamespace, oldNamespace, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourceTypes.NAMESPACE), ...(0,Kubernetes_views_summary_resources_helpers__WEBPACK_IMPORTED_MODULE_4__.getResourcesSummary)(newQuota, oldQuota, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourceTypes.RESOURCEQUOTA), ...(0,Kubernetes_views_summary_resources_helpers__WEBPACK_IMPORTED_MODULE_4__.getResourcesSummary)(newIngresses, oldIngresses, Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_3__.KubernetesResourceTypes.INGRESS)];\n  return resources;\n}//# sourceURL=webpack-internal:///49113\n");

}),

3117:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./summary.html */ 17648);\n\nangular.module('portainer.kubernetes').component('kubernetesSummaryView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesSummaryController',\n  controllerAs: '$ctrl',\n  bindings: {\n    formValues: '<',\n    oldFormValues: '<'\n  }\n});//# sourceURL=webpack-internal:///3117\n");

}),

69861:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/configuration/formvalues */ 30578);\n/* harmony import */ var Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Kubernetes/models/resource-pool/formValues */ 16496);\n/* harmony import */ var Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Kubernetes/models/application/formValues */ 14917);\n/* harmony import */ var Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Kubernetes/models/resource-types/models */ 39212);\n/* harmony import */ var _resources_applicationResources__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./resources/applicationResources */ 45233);\n/* harmony import */ var _resources_namespaceResources__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./resources/namespaceResources */ 49113);\n/* harmony import */ var _resources_configurationResources__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./resources/configurationResources */ 3310);\n\n\n\n\n\n\n\n\n\nclass KubernetesSummaryController {\n  /* @ngInject */\n  constructor($scope, LocalStorage, KubernetesResourcePoolService) {\n    this.LocalStorage = LocalStorage;\n    this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n    this.toggleSummary = this.toggleSummary.bind(this);\n    this.generateResourceSummaryList = this.generateResourceSummaryList.bind(this); // Deep-watch changes on formValues property\n\n    $scope.$watch('$ctrl.formValues', formValues => {\n      this.state.resources = this.generateResourceSummaryList(angular__WEBPACK_IMPORTED_MODULE_0___default().copy(formValues));\n    }, true);\n  }\n\n  getArticle(resourceType, resourceAction) {\n    let article = 'a';\n\n    if (resourceAction === Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesResourceActions.CREATE) {\n      if (resourceType === Kubernetes_models_resource_types_models__WEBPACK_IMPORTED_MODULE_4__.KubernetesResourceTypes.INGRESS) {\n        article = 'an';\n      }\n    } else {\n      article = 'the';\n    }\n\n    return article;\n  }\n  /**\n   * toggleSummary toggles the summary panel state and persists it to browser localstorage\n   */\n\n\n  toggleSummary() {\n    this.state.expandedTemplate = !this.state.expandedTemplate;\n    this.LocalStorage.storeKubernetesSummaryToggle(this.state.expandedTemplate);\n  }\n  /**\n   * generateResourceSummaryList maps formValues to custom object\n   * @param {object} formValues\n   * @returns {object} => { action: \"string\", kind: \"string\", name: \"string\" }\n   */\n\n\n  generateResourceSummaryList(formValues) {\n    const oldFormValues = this.oldFormValues;\n\n    if (formValues instanceof Kubernetes_models_configuration_formvalues__WEBPACK_IMPORTED_MODULE_1__.KubernetesConfigurationFormValues) {\n      // Configuration\n      return (0,_resources_configurationResources__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(formValues);\n    } else if (formValues instanceof Kubernetes_models_resource_pool_formValues__WEBPACK_IMPORTED_MODULE_2__.KubernetesResourcePoolFormValues) {\n      // Namespaces\n      return (0,_resources_namespaceResources__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(formValues, oldFormValues);\n    } else if (formValues instanceof Kubernetes_models_application_formValues__WEBPACK_IMPORTED_MODULE_3__.KubernetesApplicationFormValues) {\n      // Applications\n      // extract cpu and memory requests & limits for pod\n      this.state.limits = {\n        cpu: formValues.CpuLimit,\n        memory: formValues.MemoryLimit\n      };\n      return (0,_resources_applicationResources__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(formValues, oldFormValues);\n    }\n\n    return [];\n  }\n\n  $onInit() {\n    const toggleValue = this.LocalStorage.getKubernetesSummaryToggle();\n    const expanded = typeof toggleValue === 'boolean' ? toggleValue : true;\n    this.state = {\n      expandedTemplate: expanded,\n      resources: [],\n      limits: {\n        cpu: null,\n        memory: null\n      }\n    };\n  }\n\n}\n\nKubernetesSummaryController.$inject = [\"$scope\", \"LocalStorage\", \"KubernetesResourcePoolService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesSummaryController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.kubernetes').controller('KubernetesSummaryController', KubernetesSummaryController);//# sourceURL=webpack-internal:///69861\n");

}),

70302:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.kubernetes').controller('KubernetesVolumesStoragesDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    expandedItems: [],\n    expandAll: false\n  });\n\n  this.onSettingsRepeaterChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.expandItem = function (item, expanded) {\n    if (!this.itemCanExpand(item)) {\n      return;\n    }\n\n    item.Expanded = expanded;\n\n    if (!expanded) {\n      item.Highlighted = false;\n    }\n  };\n\n  this.itemCanExpand = function (item) {\n    return item.Volumes.length > 0;\n  };\n\n  this.hasExpandableItems = function () {\n    return lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => this.itemCanExpand(item)).length;\n  };\n\n  this.expandAll = function () {\n    this.state.expandAll = !this.state.expandAll;\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, item => {\n      if (this.itemCanExpand(item)) {\n        this.expandItem(item, this.state.expandAll);\n      }\n    });\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///70302\n");

}),

1502:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./template.html */ 71894);\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesStoragesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesVolumesStoragesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    refreshCallback: '<'\n  }\n});//# sourceURL=webpack-internal:///1502\n");

}),

61158:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volume.html */ 86604);\n\nangular.module('portainer.kubernetes').component('kubernetesVolumeView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesVolumeController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///61158\n");

}),

52962:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/flatten */ 55332);\n/* harmony import */ var lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Kubernetes/helpers/volumeHelper */ 11507);\n/* harmony import */ var Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/eventHelper */ 52929);\n/* harmony import */ var Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/models/storage-class/models */ 86871);\n/* harmony import */ var Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Kubernetes/helpers/namespaceHelper */ 7506);\n\n\n\n\n\n\n\n\n\n\nclass KubernetesVolumeController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, LocalStorage, KubernetesVolumeService, KubernetesEventService, KubernetesApplicationService, KubernetesPersistentVolumeClaimService, ModalService, KubernetesPodService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.KubernetesVolumeService = KubernetesVolumeService;\n    this.KubernetesEventService = KubernetesEventService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n    this.ModalService = ModalService;\n    this.KubernetesPodService = KubernetesPodService;\n    this.onInit = this.onInit.bind(this);\n    this.getVolume = this.getVolume.bind(this);\n    this.getVolumeAsync = this.getVolumeAsync.bind(this);\n    this.updateVolumeAsync = this.updateVolumeAsync.bind(this);\n    this.getEvents = this.getEvents.bind(this);\n    this.getEventsAsync = this.getEventsAsync.bind(this);\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('volume', index);\n  }\n\n  showEditor() {\n    this.state.showEditorTab = true;\n    this.selectTab(2);\n  }\n\n  isExternalVolume() {\n    return Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isExternalVolume(this.volume);\n  }\n\n  isSystemNamespace() {\n    return Kubernetes_helpers_namespaceHelper__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isSystemNamespace(this.volume.ResourcePool.Namespace.Name);\n  }\n\n  isUsed() {\n    return Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isUsed(this.volume);\n  }\n\n  onChangeSize() {\n    if (this.state.volumeSize) {\n      const size = filesize_parser__WEBPACK_IMPORTED_MODULE_4___default()(this.state.volumeSize + this.state.volumeSizeUnit, {\n        base: 10\n      });\n\n      if (this.state.oldVolumeSize > size) {\n        this.state.errors.volumeSize = true;\n      } else {\n        this.state.errors.volumeSize = false;\n      }\n    }\n  }\n\n  sizeIsValid() {\n    return !this.state.errors.volumeSize && this.state.volumeSize && this.state.oldVolumeSize !== filesize_parser__WEBPACK_IMPORTED_MODULE_4___default()(this.state.volumeSize + this.state.volumeSizeUnit, {\n      base: 10\n    });\n  }\n  /**\n   * VOLUME\n   */\n\n\n  async updateVolumeAsync(redeploy) {\n    try {\n      this.volume.PersistentVolumeClaim.Storage = this.state.volumeSize + this.state.volumeSizeUnit.charAt(0);\n      await this.KubernetesPersistentVolumeClaimService.patch(this.oldVolume.PersistentVolumeClaim, this.volume.PersistentVolumeClaim);\n      this.Notifications.success('Success', 'Volume successfully updated');\n\n      if (redeploy) {\n        const promises = lodash_es_flatten__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(this.volume.Applications, app => {\n          return lodash_es_map__WEBPACK_IMPORTED_MODULE_1___default()(app.Pods, item => this.KubernetesPodService.delete(item));\n        }));\n\n        await Promise.all(promises);\n        this.Notifications.success('Success', 'Applications successfully redeployed');\n      }\n\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update volume.');\n    }\n  }\n\n  updateVolume() {\n    if (Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isUsed(this.volume)) {\n      this.ModalService.confirmRedeploy('One or multiple applications are currently using this volume.</br> For the change to be taken into account these applications will need to be redeployed. Do you want us to reschedule it now?', redeploy => {\n        return this.$async(this.updateVolumeAsync, redeploy);\n      });\n    } else {\n      return this.$async(this.updateVolumeAsync, false);\n    }\n  }\n\n  async getVolumeAsync() {\n    const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n\n    try {\n      const [volume, applications] = await Promise.all([this.KubernetesVolumeService.get(this.state.namespace, storageClasses, this.state.name), this.KubernetesApplicationService.get(this.state.namespace)]);\n      volume.Applications = Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getUsingApplications(volume, applications);\n      this.volume = volume;\n      this.oldVolume = angular__WEBPACK_IMPORTED_MODULE_3___default().copy(volume);\n      this.state.volumeSize = parseInt(volume.PersistentVolumeClaim.Storage.slice(0, -2), 10);\n      this.state.volumeSizeUnit = volume.PersistentVolumeClaim.Storage.slice(-2);\n      this.state.oldVolumeSize = filesize_parser__WEBPACK_IMPORTED_MODULE_4___default()(volume.PersistentVolumeClaim.Storage, {\n        base: 10\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve volume');\n    }\n  }\n\n  getVolume() {\n    return this.$async(this.getVolumeAsync);\n  }\n  /**\n   * EVENTS\n   */\n\n\n  hasEventWarnings() {\n    return this.state.eventWarningCount;\n  }\n\n  async getEventsAsync() {\n    try {\n      this.state.eventsLoading = true;\n      const events = await this.KubernetesEventService.get(this.state.namespace);\n      this.events = lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(events, event => event.Involved.uid === this.volume.PersistentVolumeClaim.Id);\n      this.state.eventWarningCount = Kubernetes_helpers_eventHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warningCount(this.events);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve application related events');\n    } finally {\n      this.state.eventsLoading = false;\n    }\n  }\n\n  getEvents() {\n    return this.$async(this.getEventsAsync);\n  }\n  /**\n   * ON INIT\n   */\n\n\n  async onInit() {\n    this.state = {\n      activeTab: 0,\n      currentName: this.$state.$current.name,\n      showEditorTab: false,\n      eventsLoading: true,\n      viewReady: false,\n      namespace: this.$transition$.params().namespace,\n      name: this.$transition$.params().name,\n      eventWarningCount: 0,\n      availableSizeUnits: ['MB', 'GB', 'TB'],\n      increaseSize: false,\n      volumeSize: 0,\n      volumeSizeUnit: 'GB',\n      volumeSharedAccessPolicy: '',\n      volumeSharedAccessPolicyTooltip: '',\n      errors: {\n        volumeSize: false\n      }\n    };\n    this.state.activeTab = this.LocalStorage.getActiveTab('volume');\n\n    try {\n      await this.getVolume();\n      await this.getEvents();\n\n      if (this.volume.PersistentVolumeClaim.StorageClass !== undefined) {\n        this.state.volumeSharedAccessPolicy = this.volume.PersistentVolumeClaim.StorageClass.AccessModes[this.volume.PersistentVolumeClaim.StorageClass.AccessModes.length - 1];\n        let policies = (0,Kubernetes_models_storage_class_models__WEBPACK_IMPORTED_MODULE_7__.KubernetesStorageClassAccessPolicies)();\n        policies.forEach(policy => {\n          if (policy.Name == this.state.volumeSharedAccessPolicy) {\n            this.state.volumeSharedAccessPolicyTooltip = policy.Description;\n          }\n        });\n      }\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to load view data');\n    } finally {\n      this.state.viewReady = true;\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('volume', 0);\n    }\n  }\n\n}\n\nKubernetesVolumeController.$inject = [\"$async\", \"$state\", \"Notifications\", \"LocalStorage\", \"KubernetesVolumeService\", \"KubernetesEventService\", \"KubernetesApplicationService\", \"KubernetesPersistentVolumeClaimService\", \"ModalService\", \"KubernetesPodService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumeController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.kubernetes').controller('KubernetesVolumeController', KubernetesVolumeController);//# sourceURL=webpack-internal:///52962\n");

}),

49633:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./volumes.html */ 44000);\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'KubernetesVolumesController',\n  controllerAs: 'ctrl',\n  bindings: {\n    $transition$: '<',\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///49633\n");

}),

64539:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/sumBy */ 37336);\n/* harmony import */ var lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! filesize-parser */ 29500);\n/* harmony import */ var filesize_parser__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(filesize_parser__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Kubernetes/helpers/volumeHelper */ 11507);\n/* harmony import */ var Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Kubernetes/helpers/resourceQuotaHelper */ 21458);\n\n\n\n\n\n\n\n\n\nfunction buildStorages(storages, volumes) {\n  lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default()(storages, s => {\n    const filteredVolumes = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(volumes, ['PersistentVolumeClaim.StorageClass.Name', s.Name, 'PersistentVolumeClaim.StorageClass.Provisioner', s.Provisioner]);\n\n    s.Volumes = filteredVolumes;\n    s.Size = computeSize(filteredVolumes);\n  });\n\n  return storages;\n}\n\nfunction computeSize(volumes) {\n  const size = lodash_es_sumBy__WEBPACK_IMPORTED_MODULE_1___default()(volumes, v => filesize_parser__WEBPACK_IMPORTED_MODULE_4___default()(v.PersistentVolumeClaim.Storage, {\n    base: 10\n  }));\n\n  const format = Kubernetes_helpers_resourceQuotaHelper__WEBPACK_IMPORTED_MODULE_7__[\"default\"].formatBytes(size);\n  return `${format.Size}${format.SizeUnit}`;\n}\n\nclass KubernetesVolumesController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, Authentication, ModalService, LocalStorage, KubernetesStorageService, KubernetesVolumeService, KubernetesApplicationService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.Notifications = Notifications;\n    this.Authentication = Authentication;\n    this.ModalService = ModalService;\n    this.LocalStorage = LocalStorage;\n    this.KubernetesStorageService = KubernetesStorageService;\n    this.KubernetesVolumeService = KubernetesVolumeService;\n    this.KubernetesApplicationService = KubernetesApplicationService;\n    this.onInit = this.onInit.bind(this);\n    this.getVolumes = this.getVolumes.bind(this);\n    this.getVolumesAsync = this.getVolumesAsync.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n    this.removeActionAsync = this.removeActionAsync.bind(this);\n  }\n\n  selectTab(index) {\n    this.LocalStorage.storeActiveTab('volumes', index);\n  }\n\n  async removeActionAsync(selectedItems) {\n    let actionCount = selectedItems.length;\n\n    for (const volume of selectedItems) {\n      try {\n        await this.KubernetesVolumeService.delete(volume);\n        this.Notifications.success('已成功删除存储卷', volume.PersistentVolumeClaim.Name);\n        const index = this.volumes.indexOf(volume);\n        this.volumes.splice(index, 1);\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法删除存储卷');\n      } finally {\n        --actionCount;\n\n        if (actionCount === 0) {\n          this.$state.reload(this.$state.current);\n        }\n      }\n    }\n  }\n\n  removeAction(selectedItems) {\n    this.ModalService.confirmDeletion('您想删除所选的存储卷吗？', confirmed => {\n      if (confirmed) {\n        return this.$async(this.removeActionAsync, selectedItems);\n      }\n    });\n  }\n\n  async getVolumesAsync() {\n    const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n\n    try {\n      const [volumes, applications, storages] = await Promise.all([this.KubernetesVolumeService.get(undefined, storageClasses), this.KubernetesApplicationService.get(), this.KubernetesStorageService.get(this.endpoint.Id)]);\n      this.volumes = lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(volumes, volume => {\n        volume.Applications = Kubernetes_helpers_volumeHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getUsingApplications(volume, applications);\n        return volume;\n      });\n      this.storages = buildStorages(storages, volumes);\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索命名空间');\n    }\n  }\n\n  getVolumes() {\n    return this.$async(this.getVolumesAsync);\n  }\n\n  async onInit() {\n    this.state = {\n      viewReady: false,\n      currentName: this.$state.$current.name,\n      activeTab: this.LocalStorage.getActiveTab('volumes'),\n      isAdmin: this.Authentication.isAdmin()\n    };\n    await this.getVolumes();\n    this.state.viewReady = true;\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n\n  $onDestroy() {\n    if (this.state.currentName !== this.$state.$current.name) {\n      this.LocalStorage.storeActiveTab('volumes', 0);\n    }\n  }\n\n}\n\nKubernetesVolumesController.$inject = [\"$async\", \"$state\", \"Notifications\", \"Authentication\", \"ModalService\", \"LocalStorage\", \"KubernetesStorageService\", \"KubernetesVolumeService\", \"KubernetesApplicationService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesVolumesController);\nangular__WEBPACK_IMPORTED_MODULE_5___default().module('portainer.kubernetes').controller('KubernetesVolumesController', KubernetesVolumesController);//# sourceURL=webpack-internal:///64539\n");

}),

63924:

(function() {

eval("const _paq = window._paq = window._paq || [];\n/* tracker methods like \"setCustomDimension\" should be called before \"trackPageView\" */\n\n\n_paq.push(['enableLinkTracking']);\n\nvar u = 'https://portainer-ce.matomo.cloud/';\n\n_paq.push(['setTrackerUrl', u + 'matomo.php']);\n\n_paq.push(['setSiteId', '1']);\n\nvar d = document,\n    g = d.createElement('script'),\n    s = d.getElementsByTagName('script')[0];\ng.type = 'text/javascript';\ng.async = true;\ng.src = '//cdn.matomo.cloud/portainer-ce.matomo.cloud/matomo.js';\ns.parentNode.insertBefore(g, s);//# sourceURL=webpack-internal:///63924\n");

}),

50991:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _rbac__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rbac */ 35552);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ 46362);\n/* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings */ 52744);\n/* harmony import */ var _feature_flags__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./feature-flags */ 48851);\n/* harmony import */ var _user_activity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./user-activity */ 45347);\n/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./services */ 15183);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./react */ 30086);\n/* harmony import */ var _react_views_sidebar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./react/views/sidebar */ 97521);\n/* harmony import */ var _environments__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./environments */ 18752);\n\n\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./views/account/account.html */ 27452);\n\nconst autoNgTemplateLoaderTemplate2 = __webpack_require__(/*! ./views/auth/auth.html */ 6167);\n\nconst autoNgTemplateLoaderTemplate3 = __webpack_require__(/*! ./views/logout/logout.html */ 94818);\n\nconst autoNgTemplateLoaderTemplate4 = __webpack_require__(/*! ./views/endpoints/edit/endpoint.html */ 32072);\n\nconst autoNgTemplateLoaderTemplate5 = __webpack_require__(/*! ./views/devices/import/importDevice.html */ 62833);\n\nconst autoNgTemplateLoaderTemplate6 = __webpack_require__(/*! ./views/endpoints/access/endpointAccess.html */ 11813);\n\nconst autoNgTemplateLoaderTemplate7 = __webpack_require__(/*! ./views/endpoints/kvm/endpointKVM.html */ 54658);\n\nconst autoNgTemplateLoaderTemplate8 = __webpack_require__(/*! ./views/groups/groups.html */ 9391);\n\nconst autoNgTemplateLoaderTemplate9 = __webpack_require__(/*! ./views/groups/edit/group.html */ 55150);\n\nconst autoNgTemplateLoaderTemplate10 = __webpack_require__(/*! ./views/groups/create/creategroup.html */ 48508);\n\nconst autoNgTemplateLoaderTemplate11 = __webpack_require__(/*! ./views/groups/access/groupAccess.html */ 83178);\n\nconst autoNgTemplateLoaderTemplate12 = __webpack_require__(/*! ./views/init/endpoint/initEndpoint.html */ 86573);\n\nconst autoNgTemplateLoaderTemplate13 = __webpack_require__(/*! ./views/init/admin/initAdmin.html */ 45564);\n\nconst autoNgTemplateLoaderTemplate14 = __webpack_require__(/*! ./views/registries/registries.html */ 68970);\n\nconst autoNgTemplateLoaderTemplate15 = __webpack_require__(/*! ./views/settings/settings.html */ 12811);\n\nconst autoNgTemplateLoaderTemplate16 = __webpack_require__(/*! ./views/settings/authentication/settingsAuthentication.html */ 61233);\n\nconst autoNgTemplateLoaderTemplate17 = __webpack_require__(/*! ./views/tags/tags.html */ 57642);\n\nconst autoNgTemplateLoaderTemplate18 = __webpack_require__(/*! ./views/users/users.html */ 3799);\n\nconst autoNgTemplateLoaderTemplate19 = __webpack_require__(/*! ./views/users/edit/user.html */ 98864);\n\n\n\n\n\n\n\n\n\n\n\nasync function initAuthentication(authManager, Authentication, $rootScope, $state) {\n  authManager.checkAuthOnRefresh(); // The unauthenticated event is broadcasted by the jwtInterceptor when\n  // hitting a 401. We're using this instead of the usual combination of\n  // authManager.redirectWhenUnauthenticated() + unauthenticatedRedirector\n  // to have more controls on which URL should trigger the unauthenticated state.\n\n  $rootScope.$on('unauthenticated', function (event, data) {\n    if (!lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(data.config.url, '/v2/') && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(data.config.url, '/api/v4/') && isTransitionRequiresAuthentication($state.transition)) {\n      $state.go('portainer.logout', {\n        error: 'Your session has expired'\n      });\n      window.location.reload();\n    }\n  });\n  return await Authentication.init();\n}\n\nangular.module('portainer.app', ['portainer.oauth', 'portainer.rbac', _components__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _settings__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _feature_flags__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _user_activity__WEBPACK_IMPORTED_MODULE_5__[\"default\"], 'portainer.shared.datatable', _services__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _react__WEBPACK_IMPORTED_MODULE_7__.reactModule, _react_views_sidebar__WEBPACK_IMPORTED_MODULE_8__.sidebarModule, _environments__WEBPACK_IMPORTED_MODULE_9__[\"default\"]]).config(['$stateRegistryProvider', function ($stateRegistryProvider) {\n  var root = {\n    name: 'root',\n    abstract: true,\n    onEnter:\n    /* @ngInject */\n    [\"$async\", \"StateManager\", \"Authentication\", \"Notifications\", \"authManager\", \"$rootScope\", \"$state\", function onEnter($async, StateManager, Authentication, Notifications, authManager, $rootScope, $state) {\n      return $async(async () => {\n        const appState = StateManager.getState();\n\n        if (!appState.loading) {\n          return;\n        }\n\n        try {\n          const loggedIn = await initAuthentication(authManager, Authentication, $rootScope, $state);\n          await StateManager.initialize();\n\n          if (!loggedIn && isTransitionRequiresAuthentication($state.transition)) {\n            $state.go('portainer.logout');\n            return Promise.reject('Unauthenticated');\n          }\n        } catch (err) {\n          Notifications.error('失败', err, 'Unable to retrieve application settings');\n          throw err;\n        }\n      });\n    }],\n    views: {\n      'sidebar@': {\n        component: 'sidebar'\n      }\n    }\n  };\n  var endpointRoot = {\n    name: 'endpoint',\n    url: '/:endpointId',\n    parent: 'root',\n    abstract: true,\n    resolve: {\n      endpoint:\n      /* @ngInject */\n      [\"$async\", \"$state\", \"$transition$\", \"EndpointProvider\", \"EndpointService\", \"Notifications\", function endpoint($async, $state, $transition$, EndpointProvider, EndpointService, Notifications) {\n        return $async(async () => {\n          try {\n            const endpointId = +$transition$.params().endpointId;\n            const endpoint = await EndpointService.endpoint(endpointId);\n\n            if ((endpoint.Type === 4 || endpoint.Type === 7) && !endpoint.EdgeID) {\n              $state.go('portainer.endpoints.endpoint', {\n                id: endpoint.Id\n              });\n              return;\n            }\n\n            EndpointProvider.setCurrentEndpoint(endpoint);\n            return endpoint;\n          } catch (e) {\n            Notifications.error('Failed loading environment', e);\n            $state.go('portainer.home', {}, {\n              reload: true\n            });\n            return;\n          }\n        });\n      }]\n    }\n  };\n  var portainer = {\n    name: 'portainer',\n    parent: 'root',\n    abstract: true\n  };\n  var account = {\n    name: 'portainer.account',\n    url: '/account',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate1,\n        controller: 'AccountController'\n      }\n    }\n  };\n  const tokenCreation = {\n    name: 'portainer.account.new-access-token',\n    url: '/tokens/new',\n    views: {\n      'content@': {\n        component: 'createUserAccessToken'\n      }\n    }\n  };\n  var authentication = {\n    name: 'portainer.auth',\n    url: '/auth',\n    params: {\n      reload: false\n    },\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate2,\n        controller: 'AuthenticationController',\n        controllerAs: 'ctrl'\n      },\n      'sidebar@': {}\n    }\n  };\n  const logout = {\n    name: 'portainer.logout',\n    url: '/logout',\n    params: {\n      error: '',\n      performApiLogout: false\n    },\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate3,\n        controller: 'LogoutController',\n        controllerAs: 'ctrl'\n      },\n      'sidebar@': {}\n    }\n  };\n  var endpoints = {\n    name: 'portainer.endpoints',\n    url: '/endpoints',\n    views: {\n      'content@': {\n        component: 'endpointsView'\n      }\n    }\n  };\n  var endpoint = {\n    name: 'portainer.endpoints.endpoint',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate4,\n        controller: 'EndpointController'\n      }\n    }\n  };\n  var deviceImport = {\n    name: 'portainer.endpoints.importDevice',\n    url: '/device',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate5,\n        controller: 'ImportDeviceController'\n      }\n    }\n  };\n  var addFDOProfile = {\n    name: 'portainer.endpoints.profile',\n    url: '/profile',\n    views: {\n      'content@': {\n        component: 'addProfileView'\n      }\n    }\n  };\n  var editFDOProfile = {\n    name: 'portainer.endpoints.profile.edit',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'editProfileView'\n      }\n    }\n  };\n  var endpointAccess = {\n    name: 'portainer.endpoints.endpoint.access',\n    url: '/access',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate6,\n        controller: 'EndpointAccessController',\n        controllerAs: 'ctrl'\n      }\n    }\n  };\n  var endpointKVM = {\n    name: 'portainer.endpoints.endpoint.kvm',\n    url: '/kvm?deviceId&deviceName',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate7,\n        controller: 'EndpointKVMController'\n      }\n    }\n  };\n  var groups = {\n    name: 'portainer.groups',\n    url: '/groups',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate8,\n        controller: 'GroupsController'\n      }\n    }\n  };\n  var group = {\n    name: 'portainer.groups.group',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate9,\n        controller: 'GroupController'\n      }\n    }\n  };\n  var groupCreation = {\n    name: 'portainer.groups.new',\n    url: '/new',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate10,\n        controller: 'CreateGroupController'\n      }\n    }\n  };\n  var groupAccess = {\n    name: 'portainer.groups.group.access',\n    url: '/access',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate11,\n        controller: 'GroupAccessController'\n      }\n    }\n  };\n  var home = {\n    name: 'portainer.home',\n    url: '/home',\n    views: {\n      'content@': {\n        component: 'homeView'\n      }\n    }\n  };\n  var init = {\n    name: 'portainer.init',\n    abstract: true,\n    url: '/init',\n    views: {\n      'sidebar@': {}\n    }\n  };\n  var initEndpoint = {\n    name: 'portainer.init.endpoint',\n    url: '/endpoint',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate12,\n        controller: 'InitEndpointController',\n        controllerAs: 'ctrl'\n      }\n    }\n  };\n  var initAdmin = {\n    name: 'portainer.init.admin',\n    url: '/admin',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate13,\n        controller: 'InitAdminController'\n      }\n    }\n  };\n  var registries = {\n    name: 'portainer.registries',\n    url: '/registries',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate14,\n        controller: 'RegistriesController'\n      }\n    }\n  };\n  var registry = {\n    name: 'portainer.registries.registry',\n    url: '/:id',\n    views: {\n      'content@': {\n        component: 'editRegistry'\n      }\n    }\n  };\n  const registryCreation = {\n    name: 'portainer.registries.new',\n    url: '/new',\n    views: {\n      'content@': {\n        component: 'createRegistry'\n      }\n    }\n  };\n  var settings = {\n    name: 'portainer.settings',\n    url: '/settings',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate15,\n        controller: 'SettingsController'\n      }\n    }\n  };\n  var settingsAuthentication = {\n    name: 'portainer.settings.authentication',\n    url: '/auth',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate16,\n        controller: 'SettingsAuthenticationController'\n      }\n    }\n  };\n  var settingsEdgeCompute = {\n    name: 'portainer.settings.edgeCompute',\n    url: '/edge',\n    views: {\n      'content@': {\n        component: 'settingsEdgeComputeView'\n      }\n    }\n  };\n  var tags = {\n    name: 'portainer.tags',\n    url: '/tags',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate17,\n        controller: 'TagsController'\n      }\n    }\n  };\n  var users = {\n    name: 'portainer.users',\n    url: '/users',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate18,\n        controller: 'UsersController'\n      }\n    }\n  };\n  var user = {\n    name: 'portainer.users.user',\n    url: '/:id',\n    views: {\n      'content@': {\n        templateUrl: autoNgTemplateLoaderTemplate19,\n        controller: 'UserController'\n      }\n    }\n  };\n  $stateRegistryProvider.register(root);\n  $stateRegistryProvider.register(endpointRoot);\n  $stateRegistryProvider.register(portainer);\n  $stateRegistryProvider.register(account);\n  $stateRegistryProvider.register(tokenCreation);\n  $stateRegistryProvider.register(authentication);\n  $stateRegistryProvider.register(logout);\n  $stateRegistryProvider.register(endpoints);\n  $stateRegistryProvider.register(endpoint);\n  $stateRegistryProvider.register(endpointAccess);\n  $stateRegistryProvider.register(endpointKVM);\n  $stateRegistryProvider.register(deviceImport);\n  $stateRegistryProvider.register(addFDOProfile);\n  $stateRegistryProvider.register(editFDOProfile);\n  $stateRegistryProvider.register(groups);\n  $stateRegistryProvider.register(group);\n  $stateRegistryProvider.register(groupAccess);\n  $stateRegistryProvider.register(groupCreation);\n  $stateRegistryProvider.register(home);\n  $stateRegistryProvider.register(init);\n  $stateRegistryProvider.register(initEndpoint);\n  $stateRegistryProvider.register(initAdmin);\n  $stateRegistryProvider.register(registries);\n  $stateRegistryProvider.register(registry);\n  $stateRegistryProvider.register(registryCreation);\n  $stateRegistryProvider.register(settings);\n  $stateRegistryProvider.register(settingsAuthentication);\n  $stateRegistryProvider.register(settingsEdgeCompute);\n  $stateRegistryProvider.register(tags);\n  $stateRegistryProvider.register(users);\n  $stateRegistryProvider.register(user);\n}]);\n\nfunction isTransitionRequiresAuthentication(transition) {\n  const UNAUTHENTICATED_ROUTES = ['portainer.logout', 'portainer.auth'];\n\n  if (!transition) {\n    return true;\n  }\n\n  const nextTransition = transition && transition.to();\n  const nextTransitionName = nextTransition ? nextTransition.name : '';\n  return !UNAUTHENTICATED_ROUTES.some(route => nextTransitionName.startsWith(route));\n}//# sourceURL=webpack-internal:///50991\n");

}),

87005:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InformationPanelAngular\": function() { return /* binding */ InformationPanelAngular; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./InformationPanelAngular.html */ 88659);\n\nconst InformationPanelAngular = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    titleText: '@',\n    dismissAction: '&?'\n  },\n  transclude: true\n};//# sourceURL=webpack-internal:///87005\n");

}),

21366:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./accessDatatable.html */ 54296);\n\nangular.module('portainer.app').component('accessDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'AccessDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    roles: '<',\n    tableKey: '@',\n    orderBy: '@',\n    removeAction: '<',\n    updateAction: '<',\n    reverseOrder: '<',\n    inheritFrom: '<'\n  }\n});//# sourceURL=webpack-internal:///21366\n");

}),

92681:

(function() {

eval("angular.module('portainer.app').controller('AccessDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.disableRemove = function (item) {\n    return item.Inherited && this.inheritFrom;\n  };\n\n  this.allowSelection = function (item) {\n    return !this.disableRemove(item);\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///92681\n");

}),

56609:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./accessTable.html */ 9420);\n\nangular.module('portainer.app').component('accessTable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: function () {\n    this.state = {\n      orderBy: 'Name',\n      reverseOrder: false,\n      paginatedItemLimit: '10',\n      textFilter: ''\n    };\n\n    this.changeOrderBy = function (orderField) {\n      this.state.reverseOrder = this.state.orderBy === orderField ? !this.state.reverseOrder : false;\n      this.state.orderBy = orderField;\n    };\n  },\n  bindings: {\n    dataset: '<',\n    entryClick: '<',\n    emptyDatasetMessage: '@'\n  }\n});//# sourceURL=webpack-internal:///56609\n");

}),

3735:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./porAccessControlForm.html */ 62495);\n\nangular.module('portainer.app').component('porAccessControlForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'porAccessControlFormController',\n  bindings: {\n    // This object will be populated with the form data.\n    // Model reference in porAccessControlFromModel.js\n    formData: '=',\n    // Optional. An existing resource control object that will be used to set\n    // the default values of the component.\n    resourceControl: '<',\n    hideTitle: '<'\n  }\n});//# sourceURL=webpack-internal:///3735\n");

}),

86656:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\n\nangular.module('portainer.app').controller('porAccessControlFormController', ['$q', '$scope', '$state', 'UserService', 'TeamService', 'Notifications', 'Authentication', 'ResourceControlService', function ($q, $scope, $state, UserService, TeamService, Notifications, Authentication, ResourceControlService) {\n  var ctrl = this;\n  ctrl.RCO = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_1__.ResourceControlOwnership;\n  this.onAuthorizedTeamsChange = onAuthorizedTeamsChange.bind(this);\n  this.onAuthorizedUsersChange = onAuthorizedUsersChange.bind(this);\n  ctrl.availableTeams = [];\n  ctrl.availableUsers = [];\n\n  function setOwnership(resourceControl, isAdmin) {\n    if (isAdmin && resourceControl.Ownership === _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_1__.ResourceControlOwnership.PRIVATE) {\n      ctrl.formData.Ownership = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_1__.ResourceControlOwnership.RESTRICTED;\n    } else {\n      ctrl.formData.Ownership = resourceControl.Ownership;\n    }\n\n    if (ctrl.formData.Ownership === _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_1__.ResourceControlOwnership.PUBLIC) {\n      ctrl.formData.AccessControlEnabled = false;\n    }\n  }\n\n  function setAuthorizedUsersAndTeams(authorizedUsers, authorizedTeams) {\n    ctrl.formData.AuthorizedTeams = authorizedTeams;\n    ctrl.formData.AuthorizedUsers = authorizedUsers;\n  }\n\n  function onAuthorizedTeamsChange(AuthorizedTeams) {\n    onChange({\n      AuthorizedTeams\n    });\n  }\n\n  function onAuthorizedUsersChange(AuthorizedUsers) {\n    onChange({\n      AuthorizedUsers\n    });\n  }\n\n  function onChange(formData) {\n    $scope.$evalAsync(() => {\n      ctrl.formData = { ...ctrl.formData,\n        ...formData\n      };\n    });\n  }\n\n  this.$onInit = $onInit;\n\n  function $onInit() {\n    var isAdmin = Authentication.isAdmin();\n    ctrl.isAdmin = isAdmin;\n\n    if (isAdmin) {\n      ctrl.formData.Ownership = ctrl.RCO.ADMINISTRATORS;\n    }\n\n    const environmentId = $state.params.endpointId;\n    $q.all({\n      availableTeams: TeamService.teams(environmentId),\n      availableUsers: isAdmin ? UserService.users(false, environmentId) : []\n    }).then(function success(data) {\n      ctrl.availableUsers = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(data.availableUsers, 'Username', 'asc');\n      ctrl.availableTeams = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(data.availableTeams, 'Name', 'asc');\n\n      if (!isAdmin && ctrl.availableTeams.length === 1) {\n        ctrl.formData.AuthorizedTeams = ctrl.availableTeams;\n      }\n\n      return $q.when(ctrl.resourceControl && ResourceControlService.retrieveOwnershipDetails(ctrl.resourceControl));\n    }).then(function success(data) {\n      if (data) {\n        const authorizedTeams = !isAdmin && ctrl.availableTeams.length === 1 ? ctrl.availableTeams : data.authorizedTeams;\n        const authorizedUsers = !isAdmin && authorizedTeams.length === 1 ? [] : data.authorizedUsers;\n        setOwnership(ctrl.resourceControl, isAdmin);\n        setAuthorizedUsersAndTeams(authorizedUsers, authorizedTeams);\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索访问控制信息');\n    });\n\n    this.onChangeEnablement = function (enable) {\n      $scope.$evalAsync(() => {\n        ctrl.formData.AccessControlEnabled = enable;\n      });\n    };\n  }\n}]);//# sourceURL=webpack-internal:///86656\n");

}),

19898:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AccessControlFormData\": function() { return /* binding */ AccessControlFormData; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\n/**\n * @deprecated use only for angularjs components. For react components use ./model.ts\n */\n\nfunction AccessControlFormData() {\n  this.AccessControlEnabled = true;\n  this.Ownership = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.PRIVATE;\n  this.AuthorizedUsers = [];\n  this.AuthorizedTeams = [];\n}//# sourceURL=webpack-internal:///19898\n");

}),

39372:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _por_access_management__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./por-access-management */ 26001);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.component.access-management', []).component('porAccessManagement', _por_access_management__WEBPACK_IMPORTED_MODULE_1__.porAccessManagement).name);//# sourceURL=webpack-internal:///39372\n");

}),

26001:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"porAccessManagement\": function() { return /* binding */ porAccessManagement; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./porAccessManagement.html */ 63185);\n\nconst porAccessManagement = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'porAccessManagementController',\n  controllerAs: 'ctrl',\n  bindings: {\n    accessControlledEntity: '<',\n    inheritFrom: '<',\n    entityType: '@',\n    updateAccess: '<',\n    actionInProgress: '<',\n    filterUsers: '<',\n    limitedFeature: '<'\n  }\n};//# sourceURL=webpack-internal:///26001\n");

}),

22421:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _portainer_rbac_models_role__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/rbac/models/role */ 61969);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\n\n\n\n\n\n\nclass PorAccessManagementController {\n  /* @ngInject */\n  constructor($scope, Notifications, AccessService, RoleService) {\n    Object.assign(this, {\n      $scope,\n      Notifications,\n      AccessService,\n      RoleService\n    });\n    this.limitedToBE = false;\n    this.unauthorizeAccess = this.unauthorizeAccess.bind(this);\n    this.updateAction = this.updateAction.bind(this);\n    this.onChangeUsersAndTeams = this.onChangeUsersAndTeams.bind(this);\n  }\n\n  onChangeUsersAndTeams(value) {\n    this.$scope.$evalAsync(() => {\n      this.formValues.multiselectOutput = value;\n    });\n  }\n\n  updateAction() {\n    const entity = this.accessControlledEntity;\n    const oldUserAccessPolicies = entity.UserAccessPolicies;\n    const oldTeamAccessPolicies = entity.TeamAccessPolicies;\n\n    const updatedUserAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(this.authorizedUsersAndTeams, {\n      Updated: true,\n      Type: 'user',\n      Inherited: false\n    });\n\n    const updatedTeamAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(this.authorizedUsersAndTeams, {\n      Updated: true,\n      Type: 'team',\n      Inherited: false\n    });\n\n    const accessPolicies = this.AccessService.generateAccessPolicies(oldUserAccessPolicies, oldTeamAccessPolicies, updatedUserAccesses, updatedTeamAccesses);\n    this.accessControlledEntity.UserAccessPolicies = accessPolicies.userAccessPolicies;\n    this.accessControlledEntity.TeamAccessPolicies = accessPolicies.teamAccessPolicies;\n    this.updateAccess();\n  }\n\n  authorizeAccess() {\n    const entity = this.accessControlledEntity;\n    const oldUserAccessPolicies = entity.UserAccessPolicies;\n    const oldTeamAccessPolicies = entity.TeamAccessPolicies;\n    const selectedRoleId = this.formValues.selectedRole.Id;\n\n    const selectedUserAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(this.formValues.multiselectOutput, access => access.Type === 'user');\n\n    const selectedTeamAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(this.formValues.multiselectOutput, access => access.Type === 'team');\n\n    const accessPolicies = this.AccessService.generateAccessPolicies(oldUserAccessPolicies, oldTeamAccessPolicies, selectedUserAccesses, selectedTeamAccesses, selectedRoleId);\n    this.accessControlledEntity.UserAccessPolicies = accessPolicies.userAccessPolicies;\n    this.accessControlledEntity.TeamAccessPolicies = accessPolicies.teamAccessPolicies;\n    this.updateAccess();\n  }\n\n  unauthorizeAccess(selectedAccesses) {\n    const entity = this.accessControlledEntity;\n    const userAccessPolicies = entity.UserAccessPolicies;\n    const teamAccessPolicies = entity.TeamAccessPolicies;\n\n    const selectedUserAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(selectedAccesses, access => access.Type === 'user');\n\n    const selectedTeamAccesses = lodash_es_filter__WEBPACK_IMPORTED_MODULE_2___default()(selectedAccesses, access => access.Type === 'team');\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(selectedUserAccesses, access => delete userAccessPolicies[access.Id]);\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(selectedTeamAccesses, access => delete teamAccessPolicies[access.Id]);\n\n    this.updateAccess();\n  }\n\n  isRoleLimitedToBE(role) {\n    if (!this.limitedToBE) {\n      return false;\n    }\n\n    return role.ID !== _portainer_rbac_models_role__WEBPACK_IMPORTED_MODULE_4__.RoleTypes.STANDARD;\n  }\n\n  roleLabel(role) {\n    if (!this.limitedToBE) {\n      return role.Name;\n    }\n\n    if (this.isRoleLimitedToBE(role)) {\n      return `${role.Name} (商业版功能)`;\n    }\n\n    return `${role.Name} (Default)`;\n  }\n\n  async $onInit() {\n    try {\n      if (this.limitedFeature) {\n        this.limitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_5__.isLimitedToBE)(this.limitedFeature);\n      }\n\n      const entity = this.accessControlledEntity;\n      const parent = this.inheritFrom;\n      const roles = await this.RoleService.roles();\n      this.roles = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(roles, 'Priority', 'asc');\n      this.formValues = {\n        selectedRole: this.roles.find(role => !this.isRoleLimitedToBE(role))\n      };\n      const data = await this.AccessService.accesses(entity, parent, this.roles);\n\n      if (this.filterUsers) {\n        data.availableUsersAndTeams = this.filterUsers(data.availableUsersAndTeams);\n      }\n\n      this.availableUsersAndTeams = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(data.availableUsersAndTeams, 'Name', 'asc');\n      this.authorizedUsersAndTeams = data.authorizedUsersAndTeams;\n    } catch (err) {\n      this.availableUsersAndTeams = [];\n      this.authorizedUsersAndTeams = [];\n      this.Notifications.error('失败', err, 'Unable to retrieve accesses');\n    }\n  }\n\n}\n\nPorAccessManagementController.$inject = [\"$scope\", \"Notifications\", \"AccessService\", \"RoleService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (PorAccessManagementController);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.app').controller('porAccessManagementController', PorAccessManagementController);//# sourceURL=webpack-internal:///22421\n");

}),

439:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _associatedEndpointsSelectorController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./associatedEndpointsSelectorController */ 98293);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./associatedEndpointsSelector.html */ 3401);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('associatedEndpointsSelector', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _associatedEndpointsSelectorController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    endpointIds: '<',\n    tags: '<',\n    groups: '<',\n    hasBackendPagination: '<',\n    onAssociate: '<',\n    onDissociate: '<'\n  }\n});//# sourceURL=webpack-internal:///439\n");

}),

98293:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_environments_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/environments/types */ 23945);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\n\n\n\nclass AssoicatedEndpointsSelectorController {\n  /* @ngInject */\n  constructor($async) {\n    this.$async = $async;\n    this.state = {\n      available: {\n        limit: '10',\n        filter: '',\n        pageNumber: 1,\n        totalCount: 0\n      },\n      associated: {\n        limit: '10',\n        filter: '',\n        pageNumber: 1,\n        totalCount: 0\n      }\n    };\n    this.endpoints = {\n      associated: [],\n      available: null\n    };\n    this.getAvailableEndpoints = this.getAvailableEndpoints.bind(this);\n    this.getAssociatedEndpoints = this.getAssociatedEndpoints.bind(this);\n    this.associateEndpoint = this.associateEndpoint.bind(this);\n    this.dissociateEndpoint = this.dissociateEndpoint.bind(this);\n    this.loadData = this.loadData.bind(this);\n  }\n\n  $onInit() {\n    this.loadData();\n  }\n\n  $onChanges({\n    endpointIds\n  }) {\n    if (endpointIds && endpointIds.currentValue) {\n      this.loadData();\n    }\n  }\n\n  loadData() {\n    this.getAvailableEndpoints();\n    this.getAssociatedEndpoints();\n  }\n  /* #region  internal queries to retrieve endpoints per \"side\" of the selector */\n\n\n  getAvailableEndpoints() {\n    return this.$async(async () => {\n      const {\n        start,\n        search,\n        limit\n      } = this.getPaginationData('available');\n      const query = {\n        search,\n        types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_3__.EdgeTypes\n      };\n      const response = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__.getEnvironments)({\n        start,\n        limit,\n        query\n      });\n\n      const endpoints = lodash_es_filter__WEBPACK_IMPORTED_MODULE_1___default()(response.value, endpoint => !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(this.endpointIds, endpoint.Id));\n\n      this.setTableData('available', endpoints, response.totalCount);\n      this.noEndpoints = this.state.available.totalCount === 0;\n    });\n  }\n\n  getAssociatedEndpoints() {\n    return this.$async(async () => {\n      let response = {\n        value: [],\n        totalCount: 0\n      };\n\n      if (this.endpointIds.length > 0) {\n        // fetch only if already has associated endpoints\n        const {\n          start,\n          search,\n          limit\n        } = this.getPaginationData('associated');\n        const query = {\n          search,\n          types: _portainer_environments_types__WEBPACK_IMPORTED_MODULE_3__.EdgeTypes,\n          endpointIds: this.endpointIds\n        };\n        response = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_4__.getEnvironments)({\n          start,\n          limit,\n          query\n        });\n      }\n\n      this.setTableData('associated', response.value, response.totalCount);\n    });\n  }\n  /* #endregion */\n\n  /* #region  On endpoint click (either available or associated) */\n\n\n  associateEndpoint(endpoint) {\n    this.onAssociate(endpoint);\n  }\n\n  dissociateEndpoint(endpoint) {\n    this.onDissociate(endpoint);\n  }\n  /* #endregion */\n\n  /* #region  Utils funcs */\n\n\n  getPaginationData(tableType) {\n    const {\n      pageNumber,\n      limit,\n      search\n    } = this.state[tableType];\n    const start = (pageNumber - 1) * limit + 1;\n    return {\n      start,\n      search,\n      limit\n    };\n  }\n\n  setTableData(tableType, endpoints, totalCount) {\n    this.endpoints[tableType] = endpoints;\n    this.state[tableType].totalCount = parseInt(totalCount, 10);\n  }\n  /* #endregion */\n\n\n}\n\nAssoicatedEndpointsSelectorController.$inject = [\"$async\"];\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.app').controller('AssoicatedEndpointsSelectorController', AssoicatedEndpointsSelectorController);\n/* harmony default export */ __webpack_exports__[\"default\"] = (AssoicatedEndpointsSelectorController);//# sourceURL=webpack-internal:///98293\n");

}),

64054:

(function() {

eval("angular.module('portainer.app').directive('autoFocus', ['$timeout', function porAutoFocus($timeout) {\n  var directive = {\n    restrict: 'A',\n    link: function (scope, element) {\n      $timeout(function () {\n        element[0].focus();\n      });\n    }\n  };\n  return directive;\n}]);//# sourceURL=webpack-internal:///64054\n");

}),

28428:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./betaPanel.html */ 78254);\n\nangular.module('portainer.app').component('betaPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1\n});//# sourceURL=webpack-internal:///28428\n");

}),

66864:

(function() {

eval("angular.module('portainer.app').directive('buttonSpinner', function buttonSpinner() {\n  var directive = {\n    restrict: 'A',\n    scope: {\n      spinning: '=buttonSpinner'\n    },\n    transclude: true,\n    template: '<ng-transclude></ng-transclude><span ng-show=\"spinning\"><i class=\"fa fa-circle-notch fa-spin\" style=\"margin-left: 2px;\"></i>&nbsp;</span>'\n  };\n  return directive;\n});//# sourceURL=webpack-internal:///66864\n");

}),

58945:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./codeEditor.html */ 98778);\n\nangular.module('portainer.app').component('codeEditor', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'CodeEditorController',\n  bindings: {\n    identifier: '@',\n    placeholder: '@',\n    yml: '<',\n    readOnly: '<',\n    onChange: '<',\n    value: '<'\n  }\n});//# sourceURL=webpack-internal:///58945\n");

}),

85150:

(function() {

eval("angular.module('portainer.app').controller('CodeEditorController', [\"$document\", \"CodeMirrorService\", \"$scope\", function CodeEditorController($document, CodeMirrorService, $scope) {\n  var ctrl = this;\n\n  this.$onChanges = function $onChanges({\n    value\n  }) {\n    if (value && value.currentValue && ctrl.editor && ctrl.editor.getValue() !== value.currentValue) {\n      ctrl.editor.setValue(value.currentValue);\n    }\n  };\n\n  this.$onInit = function () {\n    $document.ready(function () {\n      var editorElement = $document[0].getElementById(ctrl.identifier);\n      ctrl.editor = CodeMirrorService.applyCodeMirrorOnElement(editorElement, ctrl.yml, ctrl.readOnly);\n\n      if (ctrl.onChange) {\n        ctrl.editor.on('change', (...args) => $scope.$evalAsync(() => ctrl.onChange(...args)));\n      }\n\n      if (ctrl.value) {\n        ctrl.editor.setValue(ctrl.value);\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///85150\n");

}),

28944:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CopyButtonController; }\n/* harmony export */ });\nclass CopyButtonController {\n  /* @ngInject */\n  constructor(clipboard) {\n    this.clipboard = clipboard;\n    this.state = {\n      isFading: false\n    };\n  }\n\n  copyValueText() {\n    this.clipboard.copyText(this.value);\n    this.state.isFading = true;\n    setTimeout(() => this.state.isFading = false, 1000);\n  }\n\n}\nCopyButtonController.$inject = [\"clipboard\"];//# sourceURL=webpack-internal:///28944\n");

}),

27816:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _copy_button_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./copy-button.controller */ 28944);\n/* harmony import */ var _copy_button_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./copy-button.css */ 3103);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./copy-button.html */ 18164);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('copyButton', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _copy_button_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    value: '<'\n  }\n});//# sourceURL=webpack-internal:///27816\n");

}),

99614:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass CustomTemplateCommonFieldsController {\n  /* @ngInject */\n  constructor() {\n    this.platformTypes = [{\n      label: 'Linux',\n      value: 1\n    }, {\n      label: 'Windows',\n      value: 2\n    }];\n    this.templateTypes = [{\n      label: 'Swarm',\n      value: 1\n    }, {\n      label: 'Standalone',\n      value: 2\n    }];\n  }\n\n}\n\nCustomTemplateCommonFieldsController.$inject = [];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CustomTemplateCommonFieldsController);//# sourceURL=webpack-internal:///99614\n");

}),

26453:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _customTemplateCommonFieldsController_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./customTemplateCommonFieldsController.js */ 99614);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./customTemplateCommonFields.html */ 48794);\n\n\nangular.module('portainer.app').component('customTemplateCommonFields', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _customTemplateCommonFieldsController_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    formValues: '=',\n    showPlatformField: '<',\n    showTypeField: '<',\n    nameRegex: '<'\n  }\n});//# sourceURL=webpack-internal:///26453\n");

}),

45165:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass CustomTemplateSelectorController {\n  /* @ngInject */\n  constructor($async, CustomTemplateService, Notifications) {\n    Object.assign(this, {\n      $async,\n      CustomTemplateService,\n      Notifications\n    });\n    this.selectedTemplate = null;\n    this.templates = null;\n  }\n\n  async handleChangeTemplate(templateId) {\n    this.selectedTemplate = this.templates.find(t => t.Id === templateId);\n    this.onChange(templateId, this.selectedTemplate);\n  }\n\n  $onChanges({\n    value\n  }) {\n    if (value && value.currentValue && this.templates) {\n      this.handleChangeTemplate(value.currentValue);\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      try {\n        const templates = await this.CustomTemplateService.customTemplates(this.stackType);\n        this.templates = templates.map(template => ({ ...template,\n          label: `${template.Title} - ${template.Description}`\n        }));\n\n        if (this.value) {\n          this.handleChangeTemplate(this.value);\n        }\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve Custom Templates');\n      }\n    });\n  }\n\n}\n\nCustomTemplateSelectorController.$inject = [\"$async\", \"CustomTemplateService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CustomTemplateSelectorController);//# sourceURL=webpack-internal:///45165\n");

}),

16970:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"customTemplateSelector\": function() { return /* binding */ customTemplateSelector; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _custom_template_selector_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom-template-selector.controller.js */ 45165);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./custom-template-selector.html */ 43921);\n\n\n\nconst customTemplateSelector = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _custom_template_selector_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    newTemplatePath: '@',\n    stackType: '<',\n    value: '<',\n    onChange: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('customTemplateSelector', customTemplateSelector);//# sourceURL=webpack-internal:///16970\n");

}),

85452:

(function() {

eval("const CUSTOM_TEMPLATES_TYPES = {\n  SWARM: 1,\n  STANDALONE: 2,\n  KUBERNETES: 3\n};\nangular.module('portainer.docker').controller('CustomTemplatesListController', [\"$scope\", \"$controller\", \"DatatableService\", function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.typeLabel = typeLabel;\n  this.$onInit = $onInit;\n\n  function typeLabel(type) {\n    switch (type) {\n      case CUSTOM_TEMPLATES_TYPES.SWARM:\n        return 'swarm';\n\n      case CUSTOM_TEMPLATES_TYPES.KUBERNETES:\n        return 'manifest';\n\n      case CUSTOM_TEMPLATES_TYPES.STANDALONE:\n      default:\n        return 'standalone';\n    }\n  }\n\n  function $onInit() {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  }\n}]);//# sourceURL=webpack-internal:///85452\n");

}),

9578:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./customTemplatesList.html */ 81704);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('customTemplatesList', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'CustomTemplatesListController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    templates: '<',\n    tableKey: '@',\n    onSelectClick: '<',\n    showSwarmStacks: '<',\n    onDeleteClick: '<',\n    isEditAllowed: '<',\n    createPath: '@',\n    editPath: '@'\n  }\n});//# sourceURL=webpack-internal:///9578\n");

}),

43926:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AccessTokensDatatableController; }\n/* harmony export */ });\nclass AccessTokensDatatableController {\n  /* @ngInject*/\n  constructor($scope, $state, $controller, DatatableService) {\n    angular.extend(this, $controller('GenericDatatableController', {\n      $scope: $scope\n    }));\n\n    this.onClickAdd = () => {\n      if (this.uiCanExit()) {\n        $state.go('portainer.account.new-access-token');\n      }\n    };\n\n    this.$onInit = function () {\n      this.setDefaults();\n      this.prepareTableFromDataset();\n      const storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n      if (storedOrder !== null) {\n        this.state.reverseOrder = storedOrder.reverse;\n        this.state.orderBy = storedOrder.orderBy;\n      }\n\n      const textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n      if (textFilter !== null) {\n        this.state.textFilter = textFilter;\n        this.onTextFilterChange();\n      }\n\n      const storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n      if (storedFilters !== null) {\n        this.filters = storedFilters;\n      }\n\n      if (this.filters && this.filters.state) {\n        this.filters.state.open = false;\n      }\n\n      this.onSettingsRepeaterChange();\n    };\n  }\n\n}\nAccessTokensDatatableController.$inject = [\"$scope\", \"$state\", \"$controller\", \"DatatableService\"];//# sourceURL=webpack-internal:///43926\n");

}),

80127:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _access_tokens_datatable_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./access-tokens-datatable.controller */ 43926);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./access-tokens-datatable.html */ 24122);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('accessTokensDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _access_tokens_datatable_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    removeAction: '<',\n    uiCanExit: '<'\n  }\n});//# sourceURL=webpack-internal:///80127\n");

}),

76752:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DatatableColumnsVisibilityController; }\n/* harmony export */ });\nclass DatatableColumnsVisibilityController {\n  constructor() {\n    this.state = {\n      isOpen: false\n    };\n  }\n\n}//# sourceURL=webpack-internal:///76752\n");

}),

13877:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _datatable_columns_visibility_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./datatable-columns-visibility.controller */ 76752);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./datatable-columns-visibility.html */ 58430);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('datatableColumnsVisibility', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _datatable_columns_visibility_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    columns: '<',\n    onChange: '<'\n  }\n});//# sourceURL=webpack-internal:///13877\n");

}),

56210:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./endpointsDatatable.html */ 75970);\n\nangular.module('portainer.app').component('endpointsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'EndpointsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    retrievePage: '<'\n  }\n});//# sourceURL=webpack-internal:///56210\n");

}),

805:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nangular.module('portainer.app').controller('EndpointsDatatableController', ['$scope', '$controller', 'DatatableService', 'PaginationService', function ($scope, $controller, DatatableService, PaginationService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.state = Object.assign(this.state, {\n    orderBy: this.orderBy,\n    loading: true,\n    filteredDataSet: [],\n    totalFilteredDataset: 0,\n    pageNumber: 1\n  });\n\n  this.paginationChanged = async function () {\n    try {\n      this.state.loading = true;\n      this.state.filteredDataSet = [];\n      const start = (this.state.pageNumber - 1) * this.state.paginatedItemLimit + 1;\n      const {\n        endpoints,\n        totalCount\n      } = await this.retrievePage(start, this.state.paginatedItemLimit, this.state.textFilter);\n      this.state.filteredDataSet = endpoints;\n      this.state.totalFilteredDataSet = totalCount;\n      this.refreshSelectedItems();\n    } finally {\n      this.state.loading = false;\n    }\n  };\n\n  this.onPageChange = function (newPageNumber) {\n    this.state.pageNumber = newPageNumber;\n    this.paginationChanged();\n  };\n\n  this.setReferrer = function () {\n    window.localStorage.setItem('wizardReferrer', 'environments');\n  };\n  /**\n   * Overridden\n   */\n\n\n  this.onTextFilterChange = function () {\n    var filterValue = this.state.textFilter;\n    DatatableService.setDataTableTextFilters(this.tableKey, filterValue);\n    this.resetSelectionState();\n    this.paginationChanged();\n  };\n  /**\n   * Overriden\n   */\n\n\n  this.uniq = function () {\n    return lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default()(this.state.filteredDataSet, this.state.selectedItems), 'Id');\n  };\n  /**\n   * Overridden\n   */\n\n\n  this.changePaginationLimit = function () {\n    PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n    this.paginationChanged();\n  };\n\n  this.refreshSelectedItems = function () {\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(this.state.filteredDataSet, item => {\n      if (lodash_es_filter__WEBPACK_IMPORTED_MODULE_0___default()(this.state.selectedItems, i => i.Id == item.Id).length > 0) {\n        item.Checked = true;\n      }\n    });\n  };\n  /**\n   * Overridden\n   */\n\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    this.paginationChanged();\n  };\n}]);//# sourceURL=webpack-internal:///805\n");

}),

38058:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DatatableFilterController; }\n/* harmony export */ });\nclass DatatableFilterController {\n  isEnabled() {\n    return 0 < this.state.length && this.state.length < this.labels.length;\n  }\n\n  onChangeItem(filterValue) {\n    if (this.isChecked(filterValue)) {\n      return this.onChange(this.filterKey, this.state.filter(v => v !== filterValue));\n    }\n\n    return this.onChange(this.filterKey, [...this.state, filterValue]);\n  }\n\n  isChecked(filterValue) {\n    return this.state.includes(filterValue);\n  }\n\n}//# sourceURL=webpack-internal:///38058\n");

}),

59001:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"datatableFilter\": function() { return /* binding */ datatableFilter; }\n/* harmony export */ });\n/* harmony import */ var _datatable_filter_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./datatable-filter.controller */ 38058);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./datatable-filter.html */ 29656);\n\n\nconst datatableFilter = {\n  bindings: {\n    labels: '<',\n    // [{label, value}]\n    state: '<',\n    // [filterValue]\n    filterKey: '@',\n    onChange: '<'\n  },\n  controller: _datatable_filter_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  transclude: true\n};//# sourceURL=webpack-internal:///59001\n");

}),

11471:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _datatable_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./datatable.css */ 3588);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\n\nfunction isBetween(value, a, b) {\n  return value >= a && value <= b || value >= b && value <= a;\n} // TODO: review - refactor to use a class that can be extended\n\n\nangular.module('portainer.app').controller('GenericDatatableController', ['$interval', 'PaginationService', 'DatatableService', 'PAGINATION_MAX_ITEMS', function ($interval, PaginationService, DatatableService, PAGINATION_MAX_ITEMS) {\n  this.RCO = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_6__.ResourceControlOwnership;\n  this.state = {\n    selectAll: false,\n    orderBy: this.orderBy,\n    paginatedItemLimit: PAGINATION_MAX_ITEMS,\n    displayTextFilter: false,\n\n    get selectedItemCount() {\n      return this.selectedItems.length || 0;\n    },\n\n    selectedItems: []\n  };\n  this.settings = {\n    open: false,\n    repeater: {\n      autoRefresh: false,\n      refreshRate: '30'\n    }\n  };\n\n  this.resetSelectionState = function () {\n    this.state.selectAll = false;\n    this.state.selectedItems = [];\n\n    lodash_es_map__WEBPACK_IMPORTED_MODULE_4___default()(this.state.filteredDataSet, item => item.Checked = false);\n  };\n\n  this.onTextFilterChangeGeneric = onTextFilterChangeGeneric;\n\n  this.onTextFilterChange = function onTextFilterChange() {\n    return this.onTextFilterChangeGeneric();\n  };\n\n  function onTextFilterChangeGeneric() {\n    DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n  }\n\n  this.changeOrderBy = function changeOrderBy(orderField) {\n    this.state.reverseOrder = this.state.orderBy === orderField ? !this.state.reverseOrder : false;\n    this.state.orderBy = orderField;\n    DatatableService.setDataTableOrder(this.tableKey, orderField, this.state.reverseOrder);\n  };\n\n  this.selectItem = function (item, event) {\n    // Handle range select using shift\n    if (event && event.originalEvent.shiftKey && this.state.firstClickedItem) {\n      const firstItemIndex = this.state.filteredDataSet.indexOf(this.state.firstClickedItem);\n      const lastItemIndex = this.state.filteredDataSet.indexOf(item);\n\n      const itemsInRange = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(this.state.filteredDataSet, (item, index) => {\n        return isBetween(index, firstItemIndex, lastItemIndex);\n      });\n\n      const value = this.state.firstClickedItem.Checked;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_2___default()(itemsInRange, i => {\n        if (!this.allowSelection(i)) {\n          return;\n        }\n\n        i.Checked = value;\n      });\n\n      this.state.firstClickedItem = item;\n    } else if (event) {\n      item.Checked = !item.Checked;\n      this.state.firstClickedItem = item;\n    }\n\n    this.state.selectedItems = this.uniq().filter(i => i.Checked);\n\n    if (event && this.state.selectAll && this.state.selectedItems.length !== this.state.filteredDataSet.length) {\n      this.state.selectAll = false;\n    }\n\n    this.onSelectionChanged();\n  };\n\n  this.selectAll = function () {\n    this.state.firstClickedItem = null;\n\n    for (var i = 0; i < this.state.filteredDataSet.length; i++) {\n      var item = this.state.filteredDataSet[i];\n\n      if (this.allowSelection(item) && item.Checked !== this.state.selectAll) {\n        item.Checked = this.state.selectAll;\n        this.selectItem(item);\n      }\n    }\n\n    this.onSelectionChanged();\n  };\n  /**\n   * Override this method to change the uniqness filter when selecting items\n   */\n\n\n  this.uniq = function () {\n    return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_1___default()(lodash_es_concat__WEBPACK_IMPORTED_MODULE_0___default()(this.state.filteredDataSet, this.state.selectedItems));\n  };\n  /**\n   * Override this method to allow/deny selection\n   */\n\n\n  this.allowSelection = function\n    /*item*/\n  () {\n    return true;\n  };\n  /**\n   * Override this method to prepare data table\n   */\n\n\n  this.prepareTableFromDataset = function () {\n    return;\n  };\n  /**\n   * Override this method to execute code after selection changed on datatable\n   */\n\n\n  this.onSelectionChanged = function () {\n    return;\n  };\n\n  this.changePaginationLimit = function () {\n    PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n  };\n\n  this.setDefaults = function () {\n    this.showTextFilter = this.showTextFilter ? this.showTextFilter : false;\n    this.state.reverseOrder = this.reverseOrder ? this.reverseOrder : false;\n    this.state.paginatedItemLimit = PaginationService.getPaginationLimit(this.tableKey);\n  };\n  /**\n   * Duplicate this function when extending GenericDatatableController\n   * Extending-controller's bindings are not accessible there\n   * For more details see the following comments\n   * https://github.com/portainer/portainer/pull/2877#issuecomment-503333425\n   * https://github.com/portainer/portainer/pull/2877#issuecomment-503537249\n   */\n\n\n  this.$onInit = function $onInit() {\n    this.$onInitGeneric();\n  };\n\n  this.$onInitGeneric = function $onInitGeneric() {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n    var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n\n    if (storedColumnVisibility !== null) {\n      this.columnVisibility = storedColumnVisibility;\n    }\n  };\n  /**\n   * REPEATER SECTION\n   */\n\n\n  this.repeater = undefined;\n\n  this.$onDestroy = function () {\n    this.stopRepeater();\n  };\n\n  this.stopRepeater = function () {\n    if (angular.isDefined(this.repeater)) {\n      $interval.cancel(this.repeater);\n      this.repeater = undefined;\n    }\n  };\n\n  this.startRepeater = function () {\n    this.repeater = $interval(async () => {\n      await this.refreshCallback();\n      this.onDataRefresh();\n    }, this.settings.repeater.refreshRate * 1000);\n  };\n\n  this.onSettingsRepeaterChange = function () {\n    this.stopRepeater();\n\n    if (angular.isDefined(this.refreshCallback) && this.settings.repeater.autoRefresh) {\n      this.startRepeater();\n      $('#refreshRateChange').show();\n      $('#refreshRateChange').fadeOut(1500);\n    }\n\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n  /**\n   * Override this method to execute code after calling the refresh callback\n   */\n\n\n  this.onDataRefresh = function () {\n    return;\n  };\n  /**\n   * !REPEATER SECTION\n   */\n\n}]);//# sourceURL=webpack-internal:///11471\n");

}),

36864:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./groupsDatatable.html */ 34095);\n\nangular.module('portainer.app').component('groupsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///36864\n");

}),

41101:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular_utils_pagination__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular-utils-pagination */ 22479);\n/* harmony import */ var angular_utils_pagination__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular_utils_pagination__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _titlebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./titlebar */ 58973);\n/* harmony import */ var _sort_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sort-icon */ 62040);\n/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination */ 21757);\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./filter */ 59001);\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.shared.datatable', ['angularUtils.directives.dirPagination']).component('datatableTitlebar', _titlebar__WEBPACK_IMPORTED_MODULE_2__.datatableTitlebar).component('datatableSortIcon', _sort_icon__WEBPACK_IMPORTED_MODULE_3__.datatableSortIcon).component('datatablePagination', _pagination__WEBPACK_IMPORTED_MODULE_4__.datatablePagination).component('datatableFilter', _filter__WEBPACK_IMPORTED_MODULE_5__.datatableFilter).name);//# sourceURL=webpack-internal:///41101\n");

}),

21757:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"datatablePagination\": function() { return /* binding */ datatablePagination; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./pagination.html */ 5050);\n\nconst datatablePagination = {\n  bindings: {\n    onChangeLimit: '<',\n    limit: '<',\n    enableNoLimit: '<',\n    onChangePage: '<'\n  },\n  templateUrl: autoNgTemplateLoaderTemplate1\n};//# sourceURL=webpack-internal:///21757\n");

}),

44145:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registriesDatatable.html */ 81853);\n\nangular.module('portainer.app').component('registriesDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'RegistriesDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    canBrowse: '<',\n    endpointType: '<',\n    canManageAccess: '<'\n  }\n});//# sourceURL=webpack-internal:///44145\n");

}),

63188:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\nRegistriesDatatableController.$inject = [\"$scope\", \"$controller\", \"$state\", \"Authentication\", \"DatatableService\"];\n\n\nangular.module('portainer.docker').controller('RegistriesDatatableController', RegistriesDatatableController);\n/* @ngInject */\n\nfunction RegistriesDatatableController($scope, $controller, $state, Authentication, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.allowSelection = function (item) {\n    return item.Id;\n  };\n\n  this.enableGoToLink = item => {\n    return this.isAdmin && item.Id && !this.endpointType;\n  };\n\n  this.goToRegistry = function (item) {\n    if (this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.KubernetesLocalEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnKubernetesEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n      $state.go('kubernetes.registries.registry', {\n        id: item.Id\n      });\n    } else if (this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.DockerEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnDockerEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment) {\n      $state.go('docker.host.registries.registry', {\n        id: item.Id\n      });\n    } else {\n      $state.go('portainer.registries.registry', {\n        id: item.Id\n      });\n    }\n  };\n\n  this.redirectToManageAccess = function (item) {\n    if (this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.KubernetesLocalEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnKubernetesEnvironment || this.endpointType === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n      $state.go('kubernetes.registries.access', {\n        id: item.Id\n      });\n    } else {\n      if (window.location.hash.endsWith('/docker/swarm/registries')) {\n        $state.go('docker.swarm.registries.access', {\n          id: item.Id\n        });\n      } else {\n        $state.go('docker.host.registries.access', {\n          id: item.Id\n        });\n      }\n    }\n  };\n\n  this.$onInit = function () {\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.REGISTRY_MANAGEMENT;\n    this.isAdmin = Authentication.isAdmin();\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n    var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n\n    if (storedColumnVisibility !== null) {\n      this.columnVisibility = storedColumnVisibility;\n    }\n  };\n}//# sourceURL=webpack-internal:///63188\n");

}),

81749:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ datatableSortIconController; }\n/* harmony export */ });\nclass datatableSortIconController {\n  isCurrentSortOrder() {\n    return this.selectedSortKey === this.key;\n  }\n\n}//# sourceURL=webpack-internal:///81749\n");

}),

62040:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"datatableSortIcon\": function() { return /* binding */ datatableSortIcon; }\n/* harmony export */ });\n/* harmony import */ var _datatable_sort_icon_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./datatable-sort-icon.controller */ 81749);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./datatable-sort-icon.html */ 39477);\n\n\nconst datatableSortIcon = {\n  bindings: {\n    key: '@',\n    selectedSortKey: '@',\n    reverseOrder: '<'\n  },\n  controller: _datatable_sort_icon_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  templateUrl: autoNgTemplateLoaderTemplate1\n};//# sourceURL=webpack-internal:///62040\n");

}),

97203:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stacksDatatable.html */ 68861);\n\nangular.module('portainer.app').component('stacksDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'StacksDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    offlineMode: '<',\n    refreshCallback: '<',\n    createEnabled: '<'\n  }\n});//# sourceURL=webpack-internal:///97203\n");

}),

97433:

(function() {

eval("angular.module('portainer.app').controller('StacksDatatableController', ['$scope', '$controller', 'DatatableService', 'Authentication', function ($scope, $controller, DatatableService, Authentication) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n  this.filters = {\n    state: {\n      open: false,\n      enabled: false,\n      showActiveStacks: true,\n      showUnactiveStacks: true\n    }\n  };\n  this.columnVisibility = {\n    state: {\n      open: false\n    },\n    columns: {\n      updated: {\n        label: 'Updated',\n        display: false\n      }\n    }\n  };\n  this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);\n\n  function onColumnVisibilityChange(columns) {\n    this.columnVisibility.columns = columns;\n    DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);\n  }\n  /**\n   * Do not allow external items\n   */\n\n\n  this.allowSelection = function (item) {\n    if (item.External) {\n      return false;\n    }\n\n    return !(item.External && !this.isAdmin);\n  };\n\n  this.applyFilters = applyFilters.bind(this);\n\n  function applyFilters(stack) {\n    const {\n      showActiveStacks,\n      showUnactiveStacks\n    } = this.filters.state;\n\n    if (stack.Orphaned) {\n      return stack.OrphanedRunning || this.settings.allOrphanedStacks;\n    } else {\n      return stack.Status === 1 && showActiveStacks || stack.Status === 2 && showUnactiveStacks || stack.External || !stack.Status;\n    }\n  }\n\n  this.onFilterChange = onFilterChange.bind(this);\n\n  function onFilterChange() {\n    const {\n      showActiveStacks,\n      showUnactiveStacks\n    } = this.filters.state;\n    this.filters.state.enabled = !showActiveStacks || !showUnactiveStacks;\n    DatatableService.setDataTableFilters(this.tableKey, this.filters);\n  }\n\n  this.onSettingsAllOrphanedStacksChange = function () {\n    DatatableService.setDataTableSettings(this.tableKey, this.settings);\n  };\n\n  this.$onInit = function () {\n    this.isAdmin = Authentication.isAdmin();\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n      this.settings.allOrphanedStacks = this.settings.allOrphanedStacks && this.isAdmin;\n    }\n\n    this.onSettingsRepeaterChange();\n    var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n\n    if (storedColumnVisibility !== null) {\n      this.columnVisibility = storedColumnVisibility;\n    }\n  };\n}]);//# sourceURL=webpack-internal:///97433\n");

}),

59198:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stringsDatatable\": function() { return /* binding */ stringsDatatable; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./strings-datatable.html */ 83287);\n\n // import controller from './strings-datatable.controller.js';\n\nconst stringsDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    emptyDatasetMessage: '@',\n    columnHeader: '@',\n    tableKey: '@',\n    onRemove: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('stringsDatatable', stringsDatatable);//# sourceURL=webpack-internal:///59198\n");

}),

96447:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./tagsDatatable.html */ 30908);\n\nangular.module('portainer.app').component('tagsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<'\n  }\n});//# sourceURL=webpack-internal:///96447\n");

}),

58973:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"datatableTitlebar\": function() { return /* binding */ datatableTitlebar; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./datatable-titlebar.html */ 10049);\n\nconst datatableTitlebar = {\n  bindings: {\n    icon: '@',\n    title: '@',\n    feature: '@',\n    featherIcon: '<'\n  },\n  templateUrl: autoNgTemplateLoaderTemplate1\n};//# sourceURL=webpack-internal:///58973\n");

}),

59322:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _usersDatatableController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./usersDatatableController */ 92040);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./usersDatatable.html */ 63978);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('usersDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _usersDatatableController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    removeAction: '<',\n    authenticationMethod: '<',\n    isAdmin: '<'\n  }\n});//# sourceURL=webpack-internal:///59322\n");

}),

92040:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ UsersDatatableController; }\n/* harmony export */ });\nclass UsersDatatableController {\n  /* @ngInject*/\n  constructor($controller, $scope) {\n    const allowSelection = this.allowSelection;\n    angular.extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n    this.allowSelection = allowSelection.bind(this);\n  }\n  /**\n   * Override this method to allow/deny selection\n   */\n\n\n  allowSelection(item) {\n    return item.Id !== 1;\n  }\n\n}\nUsersDatatableController.$inject = [\"$controller\", \"$scope\"];//# sourceURL=webpack-internal:///92040\n");

}),

62424:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass DemoFeatureIndicatorController {\n  /* @ngInject */\n  constructor(StateManager) {\n    Object.assign(this, {\n      StateManager\n    });\n    this.isDemo = false;\n  }\n\n  $onInit() {\n    const state = this.StateManager.getState();\n    this.isDemo = state.application.demoEnvironment.enabled;\n  }\n\n}\n\nDemoFeatureIndicatorController.$inject = [\"StateManager\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (DemoFeatureIndicatorController);//# sourceURL=webpack-internal:///62424\n");

}),

96026:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"demoFeatureIndicator\": function() { return /* binding */ demoFeatureIndicator; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _demo_feature_indicator_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./demo-feature-indicator.controller.js */ 62424);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./demo-feature-indicator.html */ 86943);\n\n\n\nconst demoFeatureIndicator = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _demo_feature_indicator_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    content: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('demoFeatureIndicator', demoFeatureIndicator);//# sourceURL=webpack-internal:///96026\n");

}),

39590:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./porEndpointSecurity.html */ 9062);\n\nangular.module('portainer.app').component('porEndpointSecurity', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'porEndpointSecurityController',\n  bindings: {\n    // This object will be populated with the form data.\n    // Model reference in endpointSecurityModel.js\n    formData: '=',\n    // The component will use this object to initialize the default values\n    // if present.\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///39590\n");

}),

59810:

(function() {

eval("angular.module('portainer.app').controller('porEndpointSecurityController', ['$scope', function ($scope) {\n  var ctrl = this;\n\n  ctrl.onToggleTLS = function (newValue) {\n    $scope.$evalAsync(() => {\n      ctrl.formData.TLS = newValue;\n    });\n  };\n\n  this.$onInit = $onInit;\n\n  function $onInit() {\n    if (ctrl.endpoint) {\n      var endpoint = ctrl.endpoint;\n      var TLS = endpoint.TLSConfig.TLS;\n      ctrl.formData.TLS = TLS;\n      var CACert = endpoint.TLSConfig.TLSCACert;\n      ctrl.formData.TLSCACert = CACert;\n      var cert = endpoint.TLSConfig.TLSCert;\n      ctrl.formData.TLSCert = cert;\n      var key = endpoint.TLSConfig.TLSKey;\n      ctrl.formData.TLSKey = key;\n\n      if (TLS) {\n        if (CACert && cert && key) {\n          ctrl.formData.TLSMode = 'tls_client_ca';\n        } else if (cert && key) {\n          ctrl.formData.TLSMode = 'tls_client_noca';\n        } else if (CACert) {\n          ctrl.formData.TLSMode = 'tls_ca';\n        } else {\n          ctrl.formData.TLSMode = 'tls_only';\n        }\n      }\n    }\n  }\n}]);//# sourceURL=webpack-internal:///59810\n");

}),

25229:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EndpointSecurityFormData\": function() { return /* binding */ EndpointSecurityFormData; }\n/* harmony export */ });\nfunction EndpointSecurityFormData() {\n  this.TLS = false;\n  this.TLSMode = 'tls_client_ca';\n  this.TLSCACert = null;\n  this.TLSCert = null;\n  this.TLSKey = null;\n}//# sourceURL=webpack-internal:///25229\n");

}),

72532:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EnvironmentVariablesPanelController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/env-vars */ 93994);\n\nclass EnvironmentVariablesPanelController {\n  /* @ngInject */\n  constructor() {\n    this.mode = 'simple';\n    this.editorText = '';\n    this.switchEnvMode = this.switchEnvMode.bind(this);\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.handleSimpleChange = this.handleSimpleChange.bind(this);\n  }\n\n  switchEnvMode() {\n    if (this.mode === 'simple') {\n      const editorText = (0,_portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_0__.convertToArrayOfStrings)(this.ngModel).join('\\n');\n      this.editorText = editorText;\n      this.mode = 'advanced';\n    } else {\n      this.mode = 'simple';\n    }\n  }\n\n  handleSimpleChange(value) {\n    this.onChange(value);\n  }\n\n  editorUpdate(cm) {\n    this.editorText = cm.getValue();\n    this.onChange((0,_portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_0__.parseDotEnvFile)(this.editorText));\n  }\n\n}\nEnvironmentVariablesPanelController.$inject = [];//# sourceURL=webpack-internal:///72532\n");

}),

19695:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass EnvironmentVariablesSimpleModeItemController {\n  onChangeName(name) {\n    const fieldIsInvalid = typeof name === 'undefined';\n\n    if (fieldIsInvalid) {\n      return;\n    }\n\n    this.onChange(this.index, { ...this.variable,\n      name\n    });\n  }\n\n  onChangeValue(value) {\n    const fieldIsInvalid = typeof value === 'undefined';\n\n    if (fieldIsInvalid) {\n      return;\n    }\n\n    this.onChange(this.index, { ...this.variable,\n      value\n    });\n  }\n\n  $onInit() {\n    this.formName = `variableForm${this.index}`;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EnvironmentVariablesSimpleModeItemController);//# sourceURL=webpack-internal:///19695\n");

}),

47254:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"environmentVariablesSimpleModeItem\": function() { return /* binding */ environmentVariablesSimpleModeItem; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _environment_variables_simple_mode_item_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environment-variables-simple-mode-item.controller.js */ 19695);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./environment-variables-simple-mode-item.html */ 52927);\n\n\n\nconst environmentVariablesSimpleModeItem = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _environment_variables_simple_mode_item_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    variable: '<',\n    index: '<',\n    onChange: '<',\n    onRemove: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('environmentVariablesSimpleModeItem', environmentVariablesSimpleModeItem);//# sourceURL=webpack-internal:///47254\n");

}),

17272:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EnvironmentVariablesSimpleModeController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/env-vars */ 93994);\n\nclass EnvironmentVariablesSimpleModeController {\n  /* @ngInject */\n  constructor($async) {\n    this.$async = $async;\n    this.onChangeVariable = this.onChangeVariable.bind(this);\n    this.remove = this.remove.bind(this);\n  }\n\n  add() {\n    this.onChange([...this.ngModel, {\n      name: '',\n      value: ''\n    }]);\n  }\n\n  remove(index) {\n    this.onChange(this.ngModel.filter((_, i) => i !== index));\n  }\n\n  addFromFile(file) {\n    return this.$async(async () => {\n      if (!file) {\n        return;\n      }\n\n      const text = await this.getTextFromFile(file);\n      const parsed = (0,_portainer_helpers_env_vars__WEBPACK_IMPORTED_MODULE_0__.parseDotEnvFile)(text);\n      this.onChange(this.ngModel.concat(parsed));\n    });\n  }\n\n  getTextFromFile(file) {\n    return new Promise((resolve, reject) => {\n      const temporaryFileReader = new FileReader();\n      temporaryFileReader.readAsText(file);\n\n      temporaryFileReader.onload = event => resolve(event.target.result);\n\n      temporaryFileReader.onerror = error => reject(error);\n    });\n  }\n\n  onChangeVariable(index, variable) {\n    this.onChange(this.ngModel.map((v, i) => i !== index ? v : variable));\n  }\n\n}\nEnvironmentVariablesSimpleModeController.$inject = [\"$async\"];//# sourceURL=webpack-internal:///17272\n");

}),

55005:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _environment_variables_simple_mode_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environment-variables-simple-mode.css */ 7708);\n/* harmony import */ var _environment_variables_simple_mode_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./environment-variables-simple-mode.controller */ 17272);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./environment-variables-simple-mode.html */ 9277);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('environmentVariablesSimpleMode', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _environment_variables_simple_mode_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  bindings: {\n    ngModel: '<',\n    onSwitchModeClick: '<',\n    onChange: '<',\n    showHelpMessage: '<'\n  }\n});//# sourceURL=webpack-internal:///55005\n");

}),

5633:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _environment_variables_panel_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environment-variables-panel.css */ 89122);\n/* harmony import */ var _environment_variables_panel_controller_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./environment-variables-panel.controller.js */ 72532);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./environment-variables-panel.html */ 94176);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('environmentVariablesPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _environment_variables_panel_controller_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  bindings: {\n    ngModel: '<',\n    explanation: '@',\n    onChange: '<',\n    showHelpMessage: '<'\n  }\n});//# sourceURL=webpack-internal:///5633\n");

}),

87508:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n // ng-focus-if pkg from: https://github.com/hiebj/ng-focus-if\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').directive('focusIf', [\"$timeout\", function ($timeout) {\n  return {\n    restrict: 'A',\n    link: function ($scope, $element, $attrs) {\n      var dom = $element[0];\n\n      if ($attrs.focusIf) {\n        $scope.$watch($attrs.focusIf, focus);\n      } else {\n        focus(true);\n      }\n\n      function focus(condition) {\n        if (condition) {\n          $timeout(function () {\n            dom.focus();\n          }, $scope.$eval($attrs.focusDelay) || 0);\n        }\n      }\n    }\n  };\n}]);//# sourceURL=webpack-internal:///87508\n");

}),

74075:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fileUploadForm\": function() { return /* binding */ fileUploadForm; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./file-upload-form.html */ 49424);\n\nconst fileUploadForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    file: '<',\n    ngRequired: '<',\n    onChange: '<'\n  },\n  transclude: {\n    description: '?fileUploadDescription'\n  }\n};//# sourceURL=webpack-internal:///74075\n");

}),

39068:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _web_editor_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web-editor-form */ 67653);\n/* harmony import */ var _file_upload_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./file-upload-form */ 74075);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.components.form', []).component('webEditorForm', _web_editor_form__WEBPACK_IMPORTED_MODULE_1__.webEditorForm).component('fileUploadForm', _file_upload_form__WEBPACK_IMPORTED_MODULE_2__.fileUploadForm).name);//# sourceURL=webpack-internal:///39068\n");

}),

67653:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"webEditorForm\": function() { return /* binding */ webEditorForm; }\n/* harmony export */ });\n/* harmony import */ var _web_editor_form_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-editor-form.controller.js */ 32340);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./web-editor-form.html */ 57582);\n\n\nconst webEditorForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _web_editor_form_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    identifier: '@',\n    placeholder: '@',\n    yml: '<',\n    value: '<',\n    readOnly: '<',\n    onChange: '<',\n    hideTitle: '<'\n  },\n  transclude: {\n    description: '?editorDescription'\n  }\n};//# sourceURL=webpack-internal:///67653\n");

}),

32340:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass WebEditorFormController {\n  /* @ngInject */\n  constructor(BROWSER_OS_PLATFORM) {\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.BROWSER_OS_PLATFORM = BROWSER_OS_PLATFORM;\n  }\n\n  editorUpdate(cm) {\n    this.onChange(cm.getValue());\n  }\n\n}\n\nWebEditorFormController.$inject = [\"BROWSER_OS_PLATFORM\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebEditorFormController);//# sourceURL=webpack-internal:///32340\n");

}),

27190:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass GitFormAdditionalFileItemController {\n  onChangePath(value) {\n    const fieldIsInvalid = typeof value === 'undefined';\n\n    if (fieldIsInvalid) {\n      return;\n    }\n\n    this.onChange(this.index, {\n      value\n    });\n  }\n\n  removeValue() {\n    this.onChange(this.index);\n  }\n\n  $onInit() {\n    this.formName = `variableForm${this.index}`;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GitFormAdditionalFileItemController);//# sourceURL=webpack-internal:///27190\n");

}),

83208:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormAdditionalFileItem\": function() { return /* binding */ gitFormAdditionalFileItem; }\n/* harmony export */ });\n/* harmony import */ var _git_form_additional_file_item_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./git-form-additional-file-item.controller.js */ 27190);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-additional-file-item.html */ 10852);\n\n\nconst gitFormAdditionalFileItem = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _git_form_additional_file_item_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    variable: '<',\n    index: '<',\n    onChange: '<',\n    onRemove: '<'\n  }\n};//# sourceURL=webpack-internal:///83208\n");

}),

17968:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass GitFormAutoUpdateFieldsetController {\n  /* @ngInject */\n  constructor() {\n    this.add = this.add.bind(this);\n    this.onChangeVariable = this.onChangeVariable.bind(this);\n  }\n\n  add() {\n    this.model.AdditionalFiles.push('');\n  }\n\n  onChangeVariable(index, variable) {\n    if (!variable) {\n      this.model.AdditionalFiles.splice(index, 1);\n    } else {\n      this.model.AdditionalFiles[index] = variable.value;\n    }\n\n    this.onChange({ ...this.model,\n      AdditionalFiles: this.model.AdditionalFiles\n    });\n  }\n\n}\n\nGitFormAutoUpdateFieldsetController.$inject = [];\n/* harmony default export */ __webpack_exports__[\"default\"] = (GitFormAutoUpdateFieldsetController);//# sourceURL=webpack-internal:///17968\n");

}),

7274:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormAdditionalFilesPanel\": function() { return /* binding */ gitFormAdditionalFilesPanel; }\n/* harmony export */ });\n/* harmony import */ var _git_form_additional_files_panel_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./git-form-additional-files-panel.controller.js */ 17968);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-additional-files-panel.html */ 65568);\n\n\nconst gitFormAdditionalFilesPanel = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _git_form_additional_files_panel_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    model: '<',\n    onChange: '<'\n  }\n};//# sourceURL=webpack-internal:///7274\n");

}),

10789:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass GitFormComposeAuthFieldsetController {\n  /* @ngInject */\n  constructor($scope) {\n    Object.assign(this, {\n      $scope\n    });\n    this.authValues = {\n      username: '',\n      password: ''\n    };\n    this.handleChange = this.handleChange.bind(this);\n    this.onChangeField = this.onChangeField.bind(this);\n    this.onChangeAuth = this.onChangeAuth.bind(this);\n    this.onChangeUsername = this.onChangeField('RepositoryUsername');\n    this.onChangePassword = this.onChangeField('RepositoryPassword');\n  }\n\n  handleChange(...args) {\n    this.$scope.$evalAsync(() => {\n      this.onChange(...args);\n    });\n  }\n\n  onChangeField(field) {\n    return value => {\n      this.handleChange({ ...this.model,\n        [field]: value\n      });\n    };\n  }\n\n  onChangeAuth(auth) {\n    if (!auth) {\n      this.authValues.username = this.model.RepositoryUsername;\n      this.authValues.password = this.model.RepositoryPassword;\n    }\n\n    this.handleChange({ ...this.model,\n      RepositoryAuthentication: auth,\n      RepositoryUsername: auth ? this.authValues.username : '',\n      RepositoryPassword: auth ? this.authValues.password : ''\n    });\n  }\n\n  $onInit() {\n    if (this.model.RepositoryAuthentication) {\n      this.authValues.username = this.model.RepositoryUsername;\n      this.authValues.password = this.model.RepositoryPassword;\n    }\n  }\n\n}\n\nGitFormComposeAuthFieldsetController.$inject = [\"$scope\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (GitFormComposeAuthFieldsetController);//# sourceURL=webpack-internal:///10789\n");

}),

48980:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormAuthFieldset\": function() { return /* binding */ gitFormAuthFieldset; }\n/* harmony export */ });\n/* harmony import */ var _git_form_auth_fieldset_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./git-form-auth-fieldset.controller.js */ 10789);\n/* harmony import */ var _git_form_auth_fieldset_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./git-form-auth-fieldset.css */ 7340);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-auth-fieldset.html */ 98173);\n\n\n\nconst gitFormAuthFieldset = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _git_form_auth_fieldset_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    model: '<',\n    onChange: '<',\n    showAuthExplanation: '<',\n    isEdit: '<'\n  }\n};//# sourceURL=webpack-internal:///48980\n");

}),

12847:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\nclass GitFormAutoUpdateFieldsetController {\n  /* @ngInject */\n  constructor($scope, clipboard) {\n    Object.assign(this, {\n      $scope,\n      clipboard\n    });\n    this.onChangeAutoUpdate = this.onChangeField('RepositoryAutomaticUpdates');\n    this.onChangeMechanism = this.onChangeField('RepositoryMechanism');\n    this.onChangeInterval = this.onChangeField('RepositoryFetchInterval');\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.FORCE_REDEPLOYMENT;\n    this.stackPullImageFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.STACK_PULL_IMAGE;\n  }\n\n  copyWebhook() {\n    this.clipboard.copyText(this.model.RepositoryWebhookURL);\n    $('#copyNotification').show();\n    $('#copyNotification').fadeOut(2000);\n  }\n\n  onChangeField(field) {\n    return value => {\n      this.$scope.$evalAsync(() => {\n        this.onChange({ ...this.model,\n          [field]: value\n        });\n      });\n    };\n  }\n\n}\n\nGitFormAutoUpdateFieldsetController.$inject = [\"$scope\", \"clipboard\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (GitFormAutoUpdateFieldsetController);//# sourceURL=webpack-internal:///12847\n");

}),

34385:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormAutoUpdateFieldset\": function() { return /* binding */ gitFormAutoUpdateFieldset; }\n/* harmony export */ });\n/* harmony import */ var _git_form_auto_update_fieldset_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./git-form-auto-update-fieldset.controller.js */ 12847);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-auto-update-fieldset.html */ 17560);\n\n\nconst gitFormAutoUpdateFieldset = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _git_form_auto_update_fieldset_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    model: '<',\n    onChange: '<',\n    showForcePullImage: '<'\n  }\n};//# sourceURL=webpack-internal:///34385\n");

}),

39926:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormComposePathField\": function() { return /* binding */ gitFormComposePathField; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-compose-path-field.html */ 6942);\n\nconst gitFormComposePathField = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    deployMethod: '@',\n    value: '<',\n    onChange: '<',\n    isDockerStandalone: '<'\n  }\n};//# sourceURL=webpack-internal:///39926\n");

}),

78356:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormInfoPanel\": function() { return /* binding */ gitFormInfoPanel; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-info-panel.html */ 48037);\n\nconst gitFormInfoPanel = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    url: '<',\n    configFilePath: '<',\n    additionalFiles: '<',\n    className: '@',\n    type: '@'\n  }\n};//# sourceURL=webpack-internal:///78356\n");

}),

65830:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormRefField\": function() { return /* binding */ gitFormRefField; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-ref-field.html */ 6605);\n\nconst gitFormRefField = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    value: '<',\n    onChange: '<'\n  }\n};//# sourceURL=webpack-internal:///65830\n");

}),

4680:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitFormUrlField\": function() { return /* binding */ gitFormUrlField; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form-url-field.html */ 53754);\n\nconst gitFormUrlField = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    value: '<',\n    onChange: '<'\n  }\n};//# sourceURL=webpack-internal:///4680\n");

}),

93632:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GitFormController; }\n/* harmony export */ });\nclass GitFormController {\n  /* @ngInject */\n  constructor(StateManager) {\n    this.StateManager = StateManager;\n    this.onChangeField = this.onChangeField.bind(this);\n    this.onChangeURL = this.onChangeField('RepositoryURL');\n    this.onChangeRefName = this.onChangeField('RepositoryReferenceName');\n    this.onChangeComposePath = this.onChangeField('ComposeFilePathInRepository');\n  }\n\n  onChangeField(field) {\n    return value => {\n      this.onChange({ ...this.model,\n        [field]: value\n      });\n    };\n  }\n\n  $onInit() {\n    this.deployMethod = this.deployMethod || 'compose';\n    this.isDockerStandalone = !this.hideRebuildInfo && this.StateManager.getState().endpoint.mode.provider === 'DOCKER_STANDALONE';\n  }\n\n}\nGitFormController.$inject = [\"StateManager\"];//# sourceURL=webpack-internal:///93632\n");

}),

97525:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gitForm\": function() { return /* binding */ gitForm; }\n/* harmony export */ });\n/* harmony import */ var _git_form_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./git-form.controller.js */ 93632);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./git-form.html */ 23283);\n\n\nconst gitForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _git_form_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    deployMethod: '@',\n    model: '<',\n    onChange: '<',\n    additionalFile: '<',\n    autoUpdate: '<',\n    showAuthExplanation: '<',\n    showForcePullImage: '<',\n    hideRebuildInfo: '@'\n  }\n};//# sourceURL=webpack-internal:///97525\n");

}),

8540:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _git_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./git-form */ 97525);\n/* harmony import */ var _git_form_auth_fieldset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./git-form-auth-fieldset */ 48980);\n/* harmony import */ var _git_form_additional_files_panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./git-form-additional-files-panel */ 7274);\n/* harmony import */ var _git_form_additional_files_panel_git_form_additional_file_item__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! .//git-form-additional-files-panel/git-form-additional-file-item */ 83208);\n/* harmony import */ var _git_form_auto_update_fieldset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./git-form-auto-update-fieldset */ 34385);\n/* harmony import */ var _git_form_compose_path_field__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./git-form-compose-path-field */ 39926);\n/* harmony import */ var _git_form_ref_field__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./git-form-ref-field */ 65830);\n/* harmony import */ var _git_form_url_field__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./git-form-url-field */ 4680);\n/* harmony import */ var _git_form_info_panel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./git-form-info-panel */ 78356);\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.components.forms.git', []).component('gitFormComposePathField', _git_form_compose_path_field__WEBPACK_IMPORTED_MODULE_6__.gitFormComposePathField).component('gitFormRefField', _git_form_ref_field__WEBPACK_IMPORTED_MODULE_7__.gitFormRefField).component('gitForm', _git_form__WEBPACK_IMPORTED_MODULE_1__.gitForm).component('gitFormUrlField', _git_form_url_field__WEBPACK_IMPORTED_MODULE_8__.gitFormUrlField).component('gitFormInfoPanel', _git_form_info_panel__WEBPACK_IMPORTED_MODULE_9__.gitFormInfoPanel).component('gitFormAdditionalFilesPanel', _git_form_additional_files_panel__WEBPACK_IMPORTED_MODULE_3__.gitFormAdditionalFilesPanel).component('gitFormAdditionalFileItem', _git_form_additional_files_panel_git_form_additional_file_item__WEBPACK_IMPORTED_MODULE_4__.gitFormAdditionalFileItem).component('gitFormAutoUpdateFieldset', _git_form_auto_update_fieldset__WEBPACK_IMPORTED_MODULE_5__.gitFormAutoUpdateFieldset).component('gitFormAuthFieldset', _git_form_auth_fieldset__WEBPACK_IMPORTED_MODULE_2__.gitFormAuthFieldset).name);//# sourceURL=webpack-internal:///8540\n");

}),

95189:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _groupFormController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groupFormController */ 37134);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./groupForm.html */ 69688);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('groupForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _groupFormController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    loaded: '<',\n    pageType: '@',\n    model: '=',\n    availableEndpoints: '=',\n    associatedEndpoints: '=',\n    addLabelAction: '<',\n    removeLabelAction: '<',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<'\n  }\n});//# sourceURL=webpack-internal:///95189\n");

}),

37134:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _portainer_services_notifications__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/services/notifications */ 46021);\n\n\n\n\n\n\nclass GroupFormController {\n  /* @ngInject */\n  constructor($async, $scope, GroupService, Notifications, Authentication) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.GroupService = GroupService;\n    this.Notifications = Notifications;\n    this.Authentication = Authentication;\n    this.associateEndpoint = this.associateEndpoint.bind(this);\n    this.dissociateEndpoint = this.dissociateEndpoint.bind(this);\n    this.getPaginatedEndpointsByGroup = this.getPaginatedEndpointsByGroup.bind(this);\n    this.onChangeTags = this.onChangeTags.bind(this);\n  }\n\n  onChangeTags(value) {\n    return this.$scope.$evalAsync(() => {\n      this.model.TagIds = value;\n    });\n  }\n\n  $onInit() {\n    this.state = {\n      available: {\n        limit: '10',\n        filter: '',\n        pageNumber: 1,\n        totalCount: 0\n      },\n      associated: {\n        limit: '10',\n        filter: '',\n        pageNumber: 1,\n        totalCount: 0\n      },\n      allowCreateTag: this.Authentication.isAdmin()\n    };\n  }\n\n  associateEndpoint(endpoint) {\n    if (this.pageType === 'create' && !lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(this.associatedEndpoints, endpoint)) {\n      this.associatedEndpoints.push(endpoint);\n    } else if (this.pageType === 'edit') {\n      this.GroupService.addEndpoint(this.model.Id, endpoint).then(() => {\n        this.Notifications.success('Success', 'Environment successfully added to group');\n        this.reloadTablesContent();\n      }).catch(err => this.Notifications.error('Error', err, 'Unable to add environment to group'));\n    }\n  }\n\n  dissociateEndpoint(endpoint) {\n    if (this.pageType === 'create') {\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()(this.associatedEndpoints, item => item.Id === endpoint.Id);\n    } else if (this.pageType === 'edit') {\n      this.GroupService.removeEndpoint(this.model.Id, endpoint.Id).then(() => {\n        this.Notifications.success('Success', 'Environment successfully removed from group');\n        this.reloadTablesContent();\n      }).catch(err => this.Notifications.error('Error', err, 'Unable to remove environment from group'));\n    }\n  }\n\n  reloadTablesContent() {\n    this.getPaginatedEndpointsByGroup(this.pageType, 'available');\n    this.getPaginatedEndpointsByGroup(this.pageType, 'associated');\n    this.GroupService.group(this.model.Id).then(data => {\n      this.model = data;\n    });\n  }\n\n  getPaginatedEndpointsByGroup(pageType, tableType) {\n    this.$async(async () => {\n      try {\n        if (tableType === 'available') {\n          const context = this.state.available;\n          const start = (context.pageNumber - 1) * context.limit + 1;\n          const data = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__.endpointsByGroup)(1, start, context.limit, {\n            search: context.filter\n          });\n          this.availableEndpoints = data.value;\n          this.state.available.totalCount = data.totalCount;\n        } else if (tableType === 'associated' && pageType === 'edit') {\n          const groupId = this.model.Id ? this.model.Id : 1;\n          const context = this.state.associated;\n          const start = (context.pageNumber - 1) * context.limit + 1;\n          const data = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__.endpointsByGroup)(groupId, start, context.limit, {\n            search: context.filter\n          });\n          this.associatedEndpoints = data.value;\n          this.state.associated.totalCount = data.totalCount;\n        } // ignore (associated + create) group as there is no backend pagination for this table\n\n      } catch (err) {\n        (0,_portainer_services_notifications__WEBPACK_IMPORTED_MODULE_4__.notifyError)('失败', err, 'Failed getting endpoints for group');\n      }\n    });\n  }\n\n}\n\nGroupFormController.$inject = [\"$async\", \"$scope\", \"GroupService\", \"Notifications\", \"Authentication\"];\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.app').controller('GroupFormController', GroupFormController);\n/* harmony default export */ __webpack_exports__[\"default\"] = (GroupFormController);//# sourceURL=webpack-internal:///37134\n");

}),

29037:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass KubernetesAppGitFormController {\n  /* @ngInject */\n  constructor($async, $state, StackService, ModalService, Notifications) {\n    this.$async = $async;\n    this.$state = $state;\n    this.StackService = StackService;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.state = {\n      saveGitSettingsInProgress: false,\n      redeployInProgress: false,\n      showConfig: true,\n      isEdit: false\n    };\n    this.formValues = {\n      RefName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: ''\n    };\n    this.onChange = this.onChange.bind(this);\n    this.onChangeRef = this.onChangeRef.bind(this);\n  }\n\n  onChangeRef(value) {\n    this.onChange({\n      RefName: value\n    });\n  }\n\n  onChange(values) {\n    this.formValues = { ...this.formValues,\n      ...values\n    };\n  }\n\n  async pullAndRedeployApplication() {\n    return this.$async(async () => {\n      try {\n        const confirmed = await this.ModalService.confirmAsync({\n          title: '你确定吗？',\n          message: 'Any changes to this application will be overridden by the definition in git and may cause a service interruption. Do you wish to continue?',\n          buttons: {\n            confirm: {\n              label: 'Update',\n              className: 'btn-warning'\n            }\n          }\n        });\n\n        if (!confirmed) {\n          return;\n        }\n\n        this.state.redeployInProgress = true;\n        await this.StackService.updateKubeGit(this.stack.Id, this.stack.EndpointId, this.namespace, this.formValues);\n        this.Notifications.success('Success', 'Pulled and redeployed stack successfully');\n        await this.$state.reload(this.$state.current);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed redeploying application');\n      } finally {\n        this.state.redeployInProgress = false;\n      }\n    });\n  }\n\n  async saveGitSettings() {\n    return this.$async(async () => {\n      try {\n        this.state.saveGitSettingsInProgress = true;\n        await this.StackService.updateKubeStack({\n          EndpointId: this.stack.EndpointId,\n          Id: this.stack.Id\n        }, null, this.formValues);\n        this.Notifications.success('Success', 'Save stack settings successfully');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to save application settings');\n      } finally {\n        this.state.saveGitSettingsInProgress = false;\n      }\n    });\n  }\n\n  isSubmitButtonDisabled() {\n    return this.state.saveGitSettingsInProgress || this.state.redeployInProgress;\n  }\n\n  $onInit() {\n    this.formValues.RefName = this.stack.GitConfig.ReferenceName;\n\n    if (this.stack.GitConfig && this.stack.GitConfig.Authentication) {\n      this.formValues.RepositoryUsername = this.stack.GitConfig.Authentication.Username;\n      this.formValues.RepositoryAuthentication = true;\n      this.state.isEdit = true;\n    }\n  }\n\n}\n\nKubernetesAppGitFormController.$inject = [\"$async\", \"$state\", \"StackService\", \"ModalService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesAppGitFormController);//# sourceURL=webpack-internal:///29037\n");

}),

34323:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kubernetes_app_git_form_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kubernetes-app-git-form.controller */ 29037);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kubernetes-app-git-form.html */ 5032);\n\n\n\nconst kubernetesAppGitForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kubernetes_app_git_form_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    namespace: '<',\n    stack: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('kubernetesAppGitForm', kubernetesAppGitForm);//# sourceURL=webpack-internal:///34323\n");

}),

55658:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/deploy */ 6253);\n\n\n\nclass KubernetesRedeployAppGitFormController {\n  /* @ngInject */\n  constructor($async, $state, StackService, ModalService, Notifications, WebhookHelper) {\n    this.$async = $async;\n    this.$state = $state;\n    this.StackService = StackService;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.WebhookHelper = WebhookHelper;\n    this.state = {\n      saveGitSettingsInProgress: false,\n      redeployInProgress: false,\n      showConfig: false,\n      isEdit: false,\n      hasUnsavedChanges: false\n    };\n    this.formValues = {\n      RefName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: '',\n      // auto update\n      AutoUpdate: {\n        RepositoryAutomaticUpdates: false,\n        RepositoryMechanism: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL,\n        RepositoryFetchInterval: '5m',\n        RepositoryWebhookURL: ''\n      }\n    };\n    this.onChange = this.onChange.bind(this);\n    this.onChangeRef = this.onChangeRef.bind(this);\n    this.onChangeAutoUpdate = this.onChangeAutoUpdate.bind(this);\n  }\n\n  onChangeRef(value) {\n    this.onChange({\n      RefName: value\n    });\n  }\n\n  onChange(values) {\n    this.formValues = { ...this.formValues,\n      ...values\n    };\n    this.state.hasUnsavedChanges = angular.toJson(this.savedFormValues) !== angular.toJson(this.formValues);\n  }\n\n  onChangeAutoUpdate(values) {\n    this.onChange({\n      AutoUpdate: { ...this.formValues.AutoUpdate,\n        ...values\n      }\n    });\n  }\n\n  buildAnalyticsProperties() {\n    const metadata = {\n      'automatic-updates': automaticUpdatesLabel(this.formValues.AutoUpdate.RepositoryAutomaticUpdates, this.formValues.AutoUpdate.RepositoryMechanism)\n    };\n    return {\n      metadata\n    };\n\n    function automaticUpdatesLabel(repositoryAutomaticUpdates, repositoryMechanism) {\n      switch (repositoryAutomaticUpdates && repositoryMechanism) {\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL:\n          return 'polling';\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK:\n          return 'webhook';\n\n        default:\n          return 'off';\n      }\n    }\n  }\n\n  async pullAndRedeployApplication() {\n    return this.$async(async () => {\n      try {\n        const confirmed = await this.ModalService.confirmAsync({\n          title: '你确定吗？',\n          message: 'Any changes to this application will be overridden by the definition in git and may cause a service interruption. Do you wish to continue?',\n          buttons: {\n            confirm: {\n              label: 'Update',\n              className: 'btn-warning'\n            }\n          }\n        });\n\n        if (!confirmed) {\n          return;\n        }\n\n        this.state.redeployInProgress = true;\n        await this.StackService.updateKubeGit(this.stack.Id, this.stack.EndpointId, this.namespace, this.formValues);\n        this.Notifications.success('Success', 'Pulled and redeployed stack successfully');\n        await this.$state.reload();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed redeploying application');\n      } finally {\n        this.state.redeployInProgress = false;\n      }\n    });\n  }\n\n  async saveGitSettings() {\n    return this.$async(async () => {\n      try {\n        this.state.saveGitSettingsInProgress = true;\n        await this.StackService.updateKubeStack({\n          EndpointId: this.stack.EndpointId,\n          Id: this.stack.Id\n        }, null, this.formValues);\n        this.savedFormValues = angular.copy(this.formValues);\n        this.state.hasUnsavedChanges = false;\n        this.Notifications.success('Success', 'Save stack settings successfully');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to save application settings');\n      } finally {\n        this.state.saveGitSettingsInProgress = false;\n      }\n    });\n  }\n\n  isSubmitButtonDisabled() {\n    return this.state.saveGitSettingsInProgress || this.state.redeployInProgress;\n  }\n\n  $onInit() {\n    this.formValues.RefName = this.stack.GitConfig.ReferenceName; // Init auto update\n\n    if (this.stack.AutoUpdate && (this.stack.AutoUpdate.Interval || this.stack.AutoUpdate.Webhook)) {\n      this.formValues.AutoUpdate.RepositoryAutomaticUpdates = true;\n\n      if (this.stack.AutoUpdate.Interval) {\n        this.formValues.AutoUpdate.RepositoryMechanism = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL;\n        this.formValues.AutoUpdate.RepositoryFetchInterval = this.stack.AutoUpdate.Interval;\n      } else if (this.stack.AutoUpdate.Webhook) {\n        this.formValues.AutoUpdate.RepositoryMechanism = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK;\n        this.formValues.AutoUpdate.RepositoryWebhookURL = this.WebhookHelper.returnStackWebhookUrl(this.stack.AutoUpdate.Webhook);\n      }\n    }\n\n    if (!this.formValues.AutoUpdate.RepositoryWebhookURL) {\n      this.formValues.AutoUpdate.RepositoryWebhookURL = this.WebhookHelper.returnStackWebhookUrl(uuid_v4__WEBPACK_IMPORTED_MODULE_0___default()());\n    }\n\n    if (this.stack.GitConfig && this.stack.GitConfig.Authentication) {\n      this.formValues.RepositoryUsername = this.stack.GitConfig.Authentication.Username;\n      this.formValues.RepositoryAuthentication = true;\n      this.state.isEdit = true;\n    }\n\n    this.savedFormValues = angular.copy(this.formValues);\n  }\n\n}\n\nKubernetesRedeployAppGitFormController.$inject = [\"$async\", \"$state\", \"StackService\", \"ModalService\", \"Notifications\", \"WebhookHelper\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (KubernetesRedeployAppGitFormController);//# sourceURL=webpack-internal:///55658\n");

}),

9509:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _kubernetes_redeploy_app_git_form_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kubernetes-redeploy-app-git-form.controller */ 55658);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./kubernetes-redeploy-app-git-form.html */ 96927);\n\n\n\nconst kubernetesRedeployAppGitForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _kubernetes_redeploy_app_git_form_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    stack: '<',\n    namespace: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('kubernetesRedeployAppGitForm', kubernetesRedeployAppGitForm);//# sourceURL=webpack-internal:///9509\n");

}),

48637:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-ecr.html */ 6693);\n\nclass controller {\n  constructor($scope) {\n    this.$scope = $scope;\n    this.toggleAuthentication = this.toggleAuthentication.bind(this);\n  }\n\n  $postLink() {\n    this.registryFormEcr.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n  toggleAuthentication(newValue) {\n    this.$scope.$evalAsync(() => {\n      this.model.Authentication = newValue;\n    });\n  }\n\n}\n\ncontroller.$inject = [\"$scope\"];\nangular.module('portainer.app').component('registryFormEcr', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///48637\n");

}),

90018:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-azure.html */ 56440);\n\nclass controller {\n  $postLink() {\n    this.registryFormAzure.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n}\n\nangular.module('portainer.app').component('registryFormAzure', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///90018\n");

}),

8746:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-custom.html */ 35778);\n\nclass controller {\n  constructor($scope) {\n    this.$scope = $scope;\n    this.toggleAuthentication = this.toggleAuthentication.bind(this);\n  }\n\n  $postLink() {\n    this.registryFormCustom.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n  toggleAuthentication(newValue) {\n    this.$scope.$evalAsync(() => {\n      this.model.Authentication = newValue;\n    });\n  }\n\n}\n\ncontroller.$inject = [\"$scope\"];\nangular.module('portainer.app').component('registryFormCustom', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///8746\n");

}),

7744:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-dockerhub.html */ 85683);\n\nclass controller {\n  $postLink() {\n    this.registryFormDockerhub.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n}\n\nangular.module('portainer.app').component('registryFormDockerhub', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///7744\n");

}),

84375:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./gitlabProjectsDatatable.html */ 51338);\n\nangular.module('portainer.app').component('gitlabProjectsDatatable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GitlabProjectsDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<',\n    state: '='\n  }\n});//# sourceURL=webpack-internal:///84375\n");

}),

56110:

(function() {

eval("angular.module('portainer.app').controller('GitlabProjectsDatatableController', ['$scope', '$controller', 'DatatableService', function ($scope, $controller, DatatableService) {\n  angular.extend(this, $controller('GenericDatatableController', {\n    $scope: $scope\n  }));\n\n  this.disableSelection = function (item) {\n    return !this.allowSelection(item);\n  }; // based on RegistryGitlabProject model\n\n\n  this.allowSelection = function (item) {\n    return item.RegistryEnabled;\n  };\n\n  this.$onInit = function () {\n    this.setDefaults();\n    this.prepareTableFromDataset();\n    this.state.orderBy = this.orderBy;\n    var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n\n    if (storedOrder !== null) {\n      this.state.reverseOrder = storedOrder.reverse;\n      this.state.orderBy = storedOrder.orderBy;\n    }\n\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n      this.onTextFilterChange();\n    }\n\n    var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n\n    if (storedFilters !== null) {\n      this.filters = storedFilters;\n    }\n\n    if (this.filters && this.filters.state) {\n      this.filters.state.open = false;\n    }\n\n    var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n\n    if (storedSettings !== null) {\n      this.settings = storedSettings;\n      this.settings.open = false;\n    }\n\n    this.onSettingsRepeaterChange();\n  };\n}]);//# sourceURL=webpack-internal:///56110\n");

}),

54470:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-gitlab.html */ 62796);\n\nangular.module('portainer.app').component('registryFormGitlab', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    retrieveRegistries: '<',\n    createRegistries: '<',\n    actionInProgress: '<',\n    projects: '=',\n    state: '=',\n    resetDefaults: '<'\n  }\n});//# sourceURL=webpack-internal:///54470\n");

}),

25318:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-proget.html */ 64837);\n\nclass controller {\n  $postLink() {\n    this.registryFormProGet.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n}\n\nangular.module('portainer.app').component('registryFormProget', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///25318\n");

}),

18218:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-form-quay.html */ 26548);\n\nclass controller {\n  constructor($scope) {\n    this.$scope = $scope;\n    this.toggleOrganisation = this.toggleOrganisation.bind(this);\n  }\n\n  $postLink() {\n    this.registryFormQuay.registry_name.$validators.used = modelValue => !this.nameIsUsed(modelValue);\n  }\n\n  toggleOrganisation(newValue) {\n    this.$scope.$evalAsync(() => {\n      this.model.Quay.useOrganisation = newValue;\n    });\n  }\n\n}\n\ncontroller.$inject = [\"$scope\"];\nangular.module('portainer.app').component('registryFormQuay', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '=',\n    formAction: '<',\n    formActionLabel: '@',\n    actionInProgress: '<',\n    nameIsUsed: '<'\n  },\n  controller\n});//# sourceURL=webpack-internal:///18218\n");

}),

12281:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stackFromTemplateForm.html */ 11361);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('stackFromTemplateForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    template: '=',\n    formValues: '=',\n    state: '=',\n    createTemplate: '<',\n    unselectTemplate: '<',\n    nameRegex: '<'\n  },\n  transclude: {\n    advanced: '?advancedForm'\n  }\n});//# sourceURL=webpack-internal:///12281\n");

}),

7008:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stackRedeployGitForm\": function() { return /* binding */ stackRedeployGitForm; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stack_redeploy_git_form_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stack-redeploy-git-form.controller.js */ 20472);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stack-redeploy-git-form.html */ 8849);\n\n\n\nconst stackRedeployGitForm = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _stack_redeploy_git_form_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    model: '<',\n    stack: '<',\n    endpoint: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('stackRedeployGitForm', stackRedeployGitForm);//# sourceURL=webpack-internal:///7008\n");

}),

20472:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/deploy */ 6253);\n/* harmony import */ var Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/feature-flags/enums */ 26196);\n\n\n\n\nclass StackRedeployGitFormController {\n  /* @ngInject */\n  constructor($async, $state, $compile, $scope, StackService, ModalService, Notifications, WebhookHelper, FormHelper) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$compile = $compile;\n    this.$scope = $scope;\n    this.StackService = StackService;\n    this.ModalService = ModalService;\n    this.Notifications = Notifications;\n    this.WebhookHelper = WebhookHelper;\n    this.FormHelper = FormHelper;\n    $scope.stackPullImageFeature = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__.FeatureId.STACK_PULL_IMAGE;\n    this.state = {\n      inProgress: false,\n      redeployInProgress: false,\n      showConfig: false,\n      isEdit: false,\n      hasUnsavedChanges: false\n    };\n    this.formValues = {\n      RefName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: '',\n      Env: [],\n      PullImage: false,\n      Option: {\n        Prune: false\n      },\n      // auto update\n      AutoUpdate: {\n        RepositoryAutomaticUpdates: false,\n        RepositoryMechanism: Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL,\n        RepositoryFetchInterval: '5m',\n        RepositoryWebhookURL: ''\n      }\n    };\n    this.onChange = this.onChange.bind(this);\n    this.onChangeRef = this.onChangeRef.bind(this);\n    this.onChangeAutoUpdate = this.onChangeAutoUpdate.bind(this);\n    this.onChangeEnvVar = this.onChangeEnvVar.bind(this);\n    this.onChangeOption = this.onChangeOption.bind(this);\n  }\n\n  buildAnalyticsProperties() {\n    const metadata = {};\n\n    if (this.formValues.RepositoryAutomaticUpdates) {\n      metadata.automaticUpdates = autoSyncLabel(this.formValues.RepositoryMechanism);\n    }\n\n    return {\n      metadata\n    };\n\n    function autoSyncLabel(type) {\n      switch (type) {\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL:\n          return 'polling';\n\n        case Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK:\n          return 'webhook';\n      }\n\n      return 'off';\n    }\n  }\n\n  onChange(values) {\n    this.formValues = { ...this.formValues,\n      ...values\n    };\n    this.state.hasUnsavedChanges = angular.toJson(this.savedFormValues) !== angular.toJson(this.formValues);\n  }\n\n  onChangeRef(value) {\n    this.onChange({\n      RefName: value\n    });\n  }\n\n  onChangeAutoUpdate(values) {\n    this.onChange({\n      AutoUpdate: { ...this.formValues.AutoUpdate,\n        ...values\n      }\n    });\n  }\n\n  onChangeEnvVar(value) {\n    this.onChange({\n      Env: value\n    });\n  }\n\n  onChangeOption(values) {\n    this.onChange({\n      Option: { ...this.formValues.Option,\n        ...values\n      }\n    });\n  }\n\n  async submit() {\n    const isSwarmStack = this.stack.Type === 1;\n    const that = this;\n    this.ModalService.confirmStackUpdate('Any changes to this stack or application made locally in Portainer will be overridden, which may cause service interruption. Do you wish to continue?', isSwarmStack, 'btn-warning', async function (result) {\n      if (!result) {\n        return;\n      }\n\n      try {\n        that.state.redeployInProgress = true;\n        await that.StackService.updateGit(that.stack.Id, that.stack.EndpointId, that.FormHelper.removeInvalidEnvVars(that.formValues.Env), that.formValues.Option.Prune, that.formValues, !!result[0]);\n        that.Notifications.success('Success', 'Pulled and redeployed stack successfully');\n        that.$state.reload();\n      } catch (err) {\n        that.Notifications.error('失败', err, 'Failed redeploying stack');\n      } finally {\n        that.state.redeployInProgress = false;\n      }\n    });\n  }\n\n  async saveGitSettings() {\n    return this.$async(async () => {\n      try {\n        this.state.inProgress = true;\n        const stack = await this.StackService.updateGitStackSettings(this.stack.Id, this.stack.EndpointId, this.FormHelper.removeInvalidEnvVars(this.formValues.Env), this.formValues);\n        this.savedFormValues = angular.copy(this.formValues);\n        this.state.hasUnsavedChanges = false;\n        this.Notifications.success('Success', 'Save stack settings successfully');\n        this.stack = stack;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to save stack settings');\n      } finally {\n        this.state.inProgress = false;\n      }\n    });\n  }\n\n  isSubmitButtonDisabled() {\n    return this.state.inProgress || this.state.redeployInProgress;\n  }\n\n  isAutoUpdateChanged() {\n    const wasEnabled = !!(this.stack.AutoUpdate && (this.stack.AutoUpdate.Interval || this.stack.AutoUpdate.Webhook));\n    const isEnabled = this.formValues.AutoUpdate.RepositoryAutomaticUpdates;\n    return isEnabled !== wasEnabled;\n  }\n\n  $onInit() {\n    this.formValues.RefName = this.model.ReferenceName;\n    this.formValues.Env = this.stack.Env;\n\n    if (this.stack.Option) {\n      this.formValues.Option = this.stack.Option;\n    } // Init auto update\n\n\n    if (this.stack.AutoUpdate && (this.stack.AutoUpdate.Interval || this.stack.AutoUpdate.Webhook)) {\n      this.formValues.AutoUpdate.RepositoryAutomaticUpdates = true;\n\n      if (this.stack.AutoUpdate.Interval) {\n        this.formValues.AutoUpdate.RepositoryMechanism = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL;\n        this.formValues.AutoUpdate.RepositoryFetchInterval = this.stack.AutoUpdate.Interval;\n      } else if (this.stack.AutoUpdate.Webhook) {\n        this.formValues.AutoUpdate.RepositoryMechanism = Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK;\n        this.formValues.AutoUpdate.RepositoryWebhookURL = this.WebhookHelper.returnStackWebhookUrl(this.stack.AutoUpdate.Webhook);\n      }\n    }\n\n    if (!this.formValues.AutoUpdate.RepositoryWebhookURL) {\n      this.formValues.AutoUpdate.RepositoryWebhookURL = this.WebhookHelper.returnStackWebhookUrl(uuid_v4__WEBPACK_IMPORTED_MODULE_0___default()());\n    }\n\n    if (this.stack.GitConfig && this.stack.GitConfig.Authentication) {\n      this.formValues.RepositoryUsername = this.stack.GitConfig.Authentication.Username;\n      this.formValues.RepositoryAuthentication = true;\n      this.state.isEdit = true;\n    }\n\n    this.savedFormValues = angular.copy(this.formValues);\n  }\n\n}\n\nStackRedeployGitFormController.$inject = [\"$async\", \"$state\", \"$compile\", \"$scope\", \"StackService\", \"ModalService\", \"Notifications\", \"WebhookHelper\", \"FormHelper\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (StackRedeployGitFormController);//# sourceURL=webpack-internal:///20472\n");

}),

87637:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_helpers_tagHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/helpers/tagHelper */ 91619);\n\n\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./groupAssociationTable.html */ 17775);\n\n\nangular.module('portainer.app').component('groupAssociationTable', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: function () {\n    this.state = {\n      orderBy: 'Name',\n      reverseOrder: false,\n      paginatedItemLimit: '10',\n      textFilter: '',\n      loading: true,\n      pageNumber: 1\n    };\n\n    this.changeOrderBy = function (orderField) {\n      this.state.reverseOrder = this.state.orderBy === orderField ? !this.state.reverseOrder : false;\n      this.state.orderBy = orderField;\n    };\n\n    this.onTextFilterChange = function () {\n      this.paginationChangedAction();\n    };\n\n    this.onPageChanged = function (newPageNumber) {\n      this.paginationState.pageNumber = newPageNumber;\n      this.paginationChangedAction();\n    };\n\n    this.onPaginationLimitChanged = function () {\n      this.paginationChangedAction();\n    };\n\n    this.paginationChangedAction = function () {\n      this.retrievePage(this.pageType, this.tableType);\n    };\n\n    this.$onChanges = function (changes) {\n      if (changes.loaded && changes.loaded.currentValue) {\n        this.paginationChangedAction();\n      }\n    };\n\n    this.tagIdsToTagNames = function tagIdsToTagNames(tagIds) {\n      return (0,Portainer_helpers_tagHelper__WEBPACK_IMPORTED_MODULE_1__.idsToTagNames)(this.tags, tagIds).join(', ') || '-';\n    };\n\n    this.groupIdToGroupName = function groupIdToGroupName(groupId) {\n      const group = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.groups, {\n        Id: groupId\n      });\n\n      return group ? group.Name : '';\n    };\n  },\n  bindings: {\n    paginationState: '=',\n    loaded: '<',\n    pageType: '<',\n    tableType: '@',\n    retrievePage: '<',\n    dataset: '<',\n    entryClick: '<',\n    emptyDatasetMessage: '@',\n    tags: '<',\n    showTags: '<',\n    groups: '<',\n    showGroups: '<',\n    hasBackendPagination: '<',\n    cyValue: '@',\n    title: '@'\n  }\n});//# sourceURL=webpack-internal:///87637\n");

}),

46362:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form-components */ 39068);\n/* harmony import */ var _forms_git_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./forms/git-form */ 8540);\n/* harmony import */ var _accessManagement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./accessManagement */ 39372);\n/* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./widget */ 27171);\n/* harmony import */ var _BoxSelector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./BoxSelector */ 20292);\n/* harmony import */ var _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./BEFeatureIndicator */ 67006);\n/* harmony import */ var _InformationPanel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./InformationPanel */ 40516);\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.components', [_BoxSelector__WEBPACK_IMPORTED_MODULE_5__.boxSelectorModule, _widget__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _forms_git_form__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _accessManagement__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _form_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"]]).component('informationPanel', _InformationPanel__WEBPACK_IMPORTED_MODULE_7__.InformationPanelAngular).component('beFeatureIndicator', _BEFeatureIndicator__WEBPACK_IMPORTED_MODULE_6__.beFeatureIndicator).name);//# sourceURL=webpack-internal:///46362\n");

}),

64654:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./informationPanelOffline.html */ 94081);\n\nangular.module('portainer.app').component('informationPanelOffline', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'InformationPanelOfflineController'\n});//# sourceURL=webpack-internal:///64654\n");

}),

2454:

(function() {

eval("angular.module('portainer.app').controller('InformationPanelOfflineController', ['$state', 'EndpointProvider', 'EndpointService', 'Authentication', 'Notifications', function StackDuplicationFormController($state, EndpointProvider, EndpointService, Authentication, Notifications) {\n  var ctrl = this;\n  this.$onInit = onInit;\n  this.triggerSnapshot = triggerSnapshot;\n\n  function triggerSnapshot() {\n    var endpointId = EndpointProvider.endpointID();\n    EndpointService.snapshotEndpoint(endpointId).then(function onSuccess() {\n      $state.reload();\n    }).catch(function onError(err) {\n      Notifications.error('失败', err, 'An error occured during environment snapshot');\n    });\n  }\n\n  function onInit() {\n    var endpointId = EndpointProvider.endpointID();\n    ctrl.showRefreshButton = Authentication.isAdmin();\n    EndpointService.endpoint(endpointId).then(function onSuccess(data) {\n      ctrl.snapshotTime = data.Snapshots[0].Time;\n    }).catch(function onError(err) {\n      Notifications.error('失败', err, 'Unable to retrieve environment information');\n    });\n  }\n}]);//# sourceURL=webpack-internal:///2454\n");

}),

44516:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parse_duration__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parse-duration */ 92816);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').directive('intervalFormat', function () {\n  return {\n    restrict: 'A',\n    require: 'ngModel',\n    link: function ($scope, $element, $attrs, ngModel) {\n      ngModel.$validators.invalidIntervalFormat = function (modelValue) {\n        try {\n          return modelValue && modelValue.toUpperCase().match(/^P?(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T?(?=\\d+[HMS])(\\d+H)?(\\d+M)?(\\d+S)?)?$/gm) !== null;\n        } catch (error) {\n          return false;\n        }\n      };\n\n      ngModel.$validators.minimumInterval = function (modelValue) {\n        try {\n          return modelValue && (0,parse_duration__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(modelValue, 'minute') >= 1;\n        } catch (error) {\n          return false;\n        }\n      };\n    }\n  };\n});//# sourceURL=webpack-internal:///44516\n");

}),

45679:

(function() {

eval("angular.module('portainer.app').directive('onEnterKey', [function porOnEnterKey() {\n  var directive = {\n    restrict: 'A',\n    link: function (scope, element, attrs) {\n      element.bind('keydown keypress', function (e) {\n        if (e.which === 13) {\n          e.preventDefault();\n          scope.$apply(function () {\n            scope.$eval(attrs.onEnterKey);\n          });\n        }\n      });\n    }\n  };\n  return directive;\n}]);//# sourceURL=webpack-internal:///45679\n");

}),

22730:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _option_panel_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./option-panel.controller.js */ 25601);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./option-panel.html */ 50182);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('optionPanel', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _option_panel_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    ngModel: '<',\n    explanation: '@',\n    onChange: '<'\n  }\n});//# sourceURL=webpack-internal:///22730\n");

}),

25601:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OptionPanelController; }\n/* harmony export */ });\nclass OptionPanelController {\n  /* @ngInject */\n  constructor() {\n    this.switchPruneService = this.switchPruneService.bind(this);\n  }\n\n  switchPruneService() {\n    this.onChange(this.ngModel);\n  }\n\n}\nOptionPanelController.$inject = [];//# sourceURL=webpack-internal:///25601\n");

}),

46621:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./productItem.html */ 52273);\n\nangular.module('portainer.app').component('productItem', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '<',\n    goTo: '<'\n  }\n});//# sourceURL=webpack-internal:///46621\n");

}),

38222:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./productList.html */ 2050);\n\nangular.module('portainer.app').component('productList', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    titleText: '@',\n    products: '<',\n    goTo: '<'\n  }\n});//# sourceURL=webpack-internal:///38222\n");

}),

97554:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"registryDetails\": function() { return /* binding */ registryDetails; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry-details.html */ 22746);\n\n\nconst registryDetails = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    registry: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('registryDetails', registryDetails);//# sourceURL=webpack-internal:///97554\n");

}),

90434:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _sensitive_details_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sensitive-details.css */ 37304);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./sensitive-details.html */ 63010);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('sensitiveDetails', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    key: '@',\n    value: '@'\n  }\n});//# sourceURL=webpack-internal:///90434\n");

}),

53712:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./show-hide.html */ 39773);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('showHide', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    value: '<',\n    useAsterisk: '<'\n  }\n});//# sourceURL=webpack-internal:///53712\n");

}),

77337:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./slider.html */ 55419);\n\nangular.module('portainer.app').component('slider', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'SliderController',\n  bindings: {\n    model: '=',\n    onChange: '<',\n    floor: '<',\n    ceil: '<',\n    step: '<',\n    precision: '<'\n  }\n});//# sourceURL=webpack-internal:///77337\n");

}),

58944:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n// TODO: k8s merge - TEST WITH EXISTING SLIDERS !\n// Not sure if this is not breaking existing sliders on docker views\n// Or sliders with onChange call (docker service update view)\n\n\nclass SliderController {\n  /* @ngInject */\n  constructor($scope) {\n    this.$scope = $scope;\n    this.buildOptions = this.buildOptions.bind(this);\n    this.translate = this.translate.bind(this);\n  }\n\n  $onChanges() {\n    this.buildOptions();\n  }\n\n  translate(value, sliderId, label) {\n    if (label === 'floor' && this.floor === 0 || value === 0) {\n      return 'unlimited';\n    }\n\n    return value;\n  }\n\n  buildOptions() {\n    this.options = {\n      floor: this.floor,\n      ceil: this.ceil,\n      step: this.step,\n      precision: this.precision,\n      showSelectionBar: true,\n      enforceStep: false,\n      translate: this.translate,\n      onChange: () => this.onChange()\n    };\n  }\n\n  $onInit() {\n    this.buildOptions();\n  }\n\n}\n\nSliderController.$inject = [\"$scope\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (SliderController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('SliderController', SliderController);//# sourceURL=webpack-internal:///58944\n");

}),

10018:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/constants */ 71541);\n\nangular.module('portainer.app').controller('StackDuplicationFormController', ['Notifications', '$scope', function StackDuplicationFormController(Notifications, $scope) {\n  var ctrl = this;\n  ctrl.environmentSelectorOptions = null;\n  ctrl.state = {\n    duplicationInProgress: false,\n    migrationInProgress: false\n  };\n  ctrl.formValues = {\n    endpointId: null,\n    newName: ''\n  };\n  ctrl.STACK_NAME_VALIDATION_REGEX = _constants__WEBPACK_IMPORTED_MODULE_0__.STACK_NAME_VALIDATION_REGEX;\n  ctrl.isFormValidForDuplication = isFormValidForDuplication;\n  ctrl.isFormValidForMigration = isFormValidForMigration;\n  ctrl.duplicateStack = duplicateStack;\n  ctrl.migrateStack = migrateStack;\n  ctrl.isMigrationButtonDisabled = isMigrationButtonDisabled;\n  ctrl.isEndpointSelected = isEndpointSelected;\n  ctrl.onChangeEnvironment = onChangeEnvironment;\n  ctrl.$onChanges = $onChanges;\n\n  function isFormValidForMigration() {\n    return ctrl.formValues.endpointId;\n  }\n\n  function isFormValidForDuplication() {\n    return isFormValidForMigration() && ctrl.formValues.newName && !ctrl.yamlError;\n  }\n\n  function onChangeEnvironment(endpointId) {\n    return $scope.$evalAsync(() => {\n      ctrl.formValues.endpointId = endpointId;\n    });\n  }\n\n  function duplicateStack() {\n    if (!ctrl.formValues.newName) {\n      Notifications.error('失败', null, 'Stack name is required for duplication');\n      return;\n    }\n\n    ctrl.state.duplicationInProgress = true;\n    ctrl.onDuplicate({\n      endpointId: ctrl.formValues.endpointId,\n      name: ctrl.formValues.newName ? ctrl.formValues.newName : undefined\n    }).finally(function () {\n      ctrl.state.duplicationInProgress = false;\n    });\n  }\n\n  function migrateStack() {\n    ctrl.state.migrationInProgress = true;\n    ctrl.onMigrate({\n      endpointId: ctrl.formValues.endpointId,\n      name: ctrl.formValues.newName ? ctrl.formValues.newName : undefined\n    }).finally(function () {\n      ctrl.state.migrationInProgress = false;\n    });\n  }\n\n  function isMigrationButtonDisabled() {\n    return !ctrl.isFormValidForMigration() || ctrl.state.duplicationInProgress || ctrl.state.migrationInProgress || isTargetEndpointAndCurrentEquals();\n  }\n\n  function isTargetEndpointAndCurrentEquals() {\n    return ctrl.formValues.endpointId === ctrl.currentEndpointId;\n  }\n\n  function isEndpointSelected() {\n    return ctrl.formValues.endpointId;\n  }\n\n  function $onChanges() {\n    ctrl.environmentSelectorOptions = getOptions(ctrl.groups, ctrl.endpoints);\n  }\n}]);\n\nfunction getOptions(groups, environments) {\n  if (!groups || !environments) {\n    return [];\n  }\n\n  const groupSet = environments.reduce((groupSet, environment) => {\n    const groupEnvironments = groupSet[environment.GroupId] || [];\n    return { ...groupSet,\n      [environment.GroupId]: [...groupEnvironments, {\n        label: environment.Name,\n        value: environment.Id\n      }]\n    };\n  }, {});\n  return Object.entries(groupSet).map(([groupId, environments]) => {\n    const group = groups.find(group => group.Id === parseInt(groupId, 10));\n\n    if (!group) {\n      throw new Error('missing group');\n    }\n\n    return {\n      label: group.Name,\n      options: environments\n    };\n  });\n}//# sourceURL=webpack-internal:///10018\n");

}),

37848:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./stack-duplication-form.html */ 78196);\n\nangular.module('portainer.app').component('stackDuplicationForm', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'StackDuplicationFormController',\n  bindings: {\n    onDuplicate: '&',\n    onMigrate: '&',\n    endpoints: '<',\n    groups: '<',\n    currentEndpointId: '<',\n    yamlError: '<'\n  }\n});//# sourceURL=webpack-internal:///37848\n");

}),

91709:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"statusIndicator\": function() { return /* binding */ statusIndicator; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _status_indicator_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./status-indicator.css */ 22835);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./status-indicator.html */ 80240);\n\n\n\nconst statusIndicator = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    ok: '<'\n  }\n};\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('statusIndicator', statusIndicator);//# sourceURL=webpack-internal:///91709\n");

}),

44677:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _template_item_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./template-item.css */ 95082);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./templateItem.html */ 76339);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('templateItem', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    model: '<',\n    typeLabel: '@',\n    onSelect: '<'\n  },\n  transclude: {\n    actions: '?templateItemActions'\n  }\n});//# sourceURL=webpack-internal:///44677\n");

}),

67620:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/sortBy */ 40714);\n/* harmony import */ var lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nTemplateListController.$inject = [\"$scope\", \"$async\", \"$state\", \"DatatableService\", \"Notifications\", \"TemplateService\"];\nangular.module('portainer.app').controller('TemplateListController', TemplateListController);\n\nfunction TemplateListController($scope, $async, $state, DatatableService, Notifications, TemplateService) {\n  var ctrl = this;\n  this.state = {\n    textFilter: '',\n    selectedCategory: null,\n    categories: [],\n    typeFilters: [],\n    filterByType: null,\n    showContainerTemplates: true,\n    selectedOrderBy: null,\n    orderByFields: [],\n    orderDesc: false\n  };\n\n  this.onTextFilterChange = function () {\n    DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n  };\n\n  ctrl.filterByTemplateType = function (item) {\n    switch (item.Type) {\n      case 1:\n        // container\n        return ctrl.state.showContainerTemplates;\n\n      case 2:\n        // swarm stack\n        return ctrl.showSwarmStacks && !ctrl.state.showContainerTemplates;\n\n      case 3:\n        // docker compose\n        return !ctrl.state.showContainerTemplates || null === ctrl.state.filterByType;\n\n      case 4:\n        // Edge stack templates\n        return false;\n    }\n\n    return false;\n  };\n\n  ctrl.updateCategories = function () {\n    var availableCategories = [];\n\n    for (var i = 0; i < ctrl.templates.length; i++) {\n      var template = ctrl.templates[i];\n\n      if (ctrl.filterByTemplateType(template)) {\n        availableCategories = availableCategories.concat(template.Categories);\n      }\n    }\n\n    ctrl.state.categories = lodash_es_sortBy__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_2___default()(availableCategories));\n  };\n\n  ctrl.filterByCategory = function (item) {\n    if (!ctrl.state.selectedCategory) {\n      return true;\n    }\n\n    return lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(item.Categories, ctrl.state.selectedCategory);\n  };\n\n  this.duplicateTemplate = duplicateTemplate.bind(this);\n  this.duplicateTemplateAsync = duplicateTemplateAsync.bind(this);\n\n  function duplicateTemplate(template) {\n    return $async(this.duplicateTemplateAsync, template);\n  }\n\n  async function duplicateTemplateAsync(template) {\n    try {\n      const {\n        FileContent: fileContent\n      } = await TemplateService.templateFile(template.Repository.url, template.Repository.stackfile);\n      let type = 0;\n\n      if (template.Type === 2) {\n        type = 1;\n      }\n\n      if (template.Type === 3) {\n        type = 2;\n      }\n\n      $state.go('docker.templates.custom.new', {\n        fileContent,\n        type\n      });\n    } catch (err) {\n      Notifications.error('失败', err, 'Failed to duplicate template');\n    }\n  }\n\n  ctrl.changeOrderBy = function (orderField) {\n    $scope.$evalAsync(() => {\n      if (null === orderField) {\n        ctrl.state.selectedOrderBy = null;\n        ctrl.templates = ctrl.initalTemplates;\n      }\n\n      ctrl.state.selectedOrderBy = orderField;\n      ctrl.templates = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(ctrl.templates, [getSorter(ctrl.state.selectedOrderBy)], [ctrl.state.orderDesc ? 'desc' : 'asc']);\n    });\n  };\n\n  ctrl.applyTypeFilter = function (type) {\n    $scope.$evalAsync(() => {\n      ctrl.state.filterByType = type;\n      ctrl.state.showContainerTemplates = 'Container' === type || null === type;\n      ctrl.updateCategories();\n    });\n  };\n\n  ctrl.invertOrder = function () {\n    $scope.$evalAsync(() => {\n      ctrl.state.orderDesc = !ctrl.state.orderDesc;\n      ctrl.templates = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(ctrl.templates, [getSorter(ctrl.state.selectedOrderBy)], [ctrl.state.orderDesc ? 'desc' : 'asc']);\n    });\n  };\n\n  ctrl.applyCategoriesFilter = function (category) {\n    $scope.$evalAsync(() => {\n      ctrl.state.selectedCategory = category;\n      ctrl.updateCategories();\n    });\n  };\n\n  this.$onInit = function () {\n    if (this.showSwarmStacks) {\n      this.state.showContainerTemplates = false;\n    }\n\n    this.updateCategories();\n    var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n\n    if (textFilter !== null) {\n      this.state.textFilter = textFilter;\n    }\n\n    this.initalTemplates = this.templates;\n    this.state.orderByFields = ['Title', 'Categories', 'Description'];\n    this.state.typeFilters = ['Container', 'Stack'];\n  };\n\n  function categorySorter(template) {\n    if (template.Categories && template.Categories.length > 0 && template.Categories[0] && template.Categories[0].length > 0) {\n      return template.Categories[0].toLowerCase();\n    }\n  }\n\n  function getSorter(orderBy) {\n    let sorter;\n\n    switch (orderBy) {\n      case 'Categories':\n        sorter = categorySorter;\n        break;\n\n      default:\n        sorter = orderBy;\n    }\n\n    return sorter;\n  }\n}//# sourceURL=webpack-internal:///67620\n");

}),

47177:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./templateList.html */ 14309);\n\nangular.module('portainer.app').component('templateList', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'TemplateListController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    templates: '<',\n    tableKey: '@',\n    selectAction: '<',\n    showSwarmStacks: '<'\n  }\n});//# sourceURL=webpack-internal:///47177\n");

}),

38119:

(function() {

eval("angular.module('portainer.app').directive('rdTemplateWidget', function rdWidget() {\n  var directive = {\n    scope: {\n      ngModel: '='\n    },\n    transclude: true,\n    template: '<div class=\"widget template-widget\" id=\"template-widget\" ng-transclude></div>',\n    restrict: 'EA'\n  };\n  return directive;\n});//# sourceURL=webpack-internal:///38119\n");

}),

30839:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ThemeSettingsController; }\n/* harmony export */ });\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./options */ 25856);\n\nclass ThemeSettingsController {\n  /* @ngInject */\n  constructor($async, Authentication, ThemeManager, StateManager, UserService, Notifications) {\n    this.$async = $async;\n    this.Authentication = Authentication;\n    this.ThemeManager = ThemeManager;\n    this.StateManager = StateManager;\n    this.UserService = UserService;\n    this.Notifications = Notifications;\n    this.setTheme = this.setTheme.bind(this);\n  }\n\n  async setTheme(theme) {\n    try {\n      if (theme === 'auto' || !theme) {\n        this.ThemeManager.autoTheme();\n      } else {\n        this.ThemeManager.setTheme(theme);\n      }\n\n      this.state.userTheme = theme;\n\n      if (!this.state.isDemo) {\n        await this.UserService.updateUserTheme(this.state.userId, this.state.userTheme);\n      }\n\n      this.Notifications.success('Success', '用户主题已成功更新');\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法更新用户主题');\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      const state = this.StateManager.getState();\n      this.state = {\n        userId: null,\n        userTheme: '',\n        defaultTheme: 'auto',\n        isDemo: state.application.demoEnvironment.enabled\n      };\n      this.state.availableThemes = _options__WEBPACK_IMPORTED_MODULE_0__.options;\n\n      try {\n        this.state.userId = await this.Authentication.getUserDetails().ID;\n        const data = await this.UserService.user(this.state.userId);\n        this.state.userTheme = data.UserTheme || this.state.defaultTheme;\n      } catch (err) {\n        this.Notifications.error('失败', err, '无法获取用户详细信息');\n      }\n    });\n  }\n\n}\nThemeSettingsController.$inject = [\"$async\", \"Authentication\", \"ThemeManager\", \"StateManager\", \"UserService\", \"Notifications\"];//# sourceURL=webpack-internal:///30839\n");

}),

30749:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_settings_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-settings.controller */ 30839);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./theme-settings.html */ 42662);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('themeSettings', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _theme_settings_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///30749\n");

}),

19376:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"azureEndpointConfig\": function() { return /* binding */ azureEndpointConfig; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./azureEndpointConfig.html */ 91539);\n\nconst azureEndpointConfig = {\n  bindings: {\n    applicationId: '=',\n    tenantId: '=',\n    authenticationKey: '='\n  },\n  templateUrl: autoNgTemplateLoaderTemplate1\n};//# sourceURL=webpack-internal:///19376\n");

}),

24268:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"K8S_RESOURCE_POOL_LB_QUOTA\": function() { return /* binding */ K8S_RESOURCE_POOL_LB_QUOTA; },\n/* harmony export */   \"K8S_RESOURCE_POOL_STORAGE_QUOTA\": function() { return /* binding */ K8S_RESOURCE_POOL_STORAGE_QUOTA; },\n/* harmony export */   \"RBAC_ROLES\": function() { return /* binding */ RBAC_ROLES; },\n/* harmony export */   \"REGISTRY_MANAGEMENT\": function() { return /* binding */ REGISTRY_MANAGEMENT; },\n/* harmony export */   \"K8S_SETUP_DEFAULT\": function() { return /* binding */ K8S_SETUP_DEFAULT; },\n/* harmony export */   \"S3_BACKUP_SETTING\": function() { return /* binding */ S3_BACKUP_SETTING; },\n/* harmony export */   \"HIDE_INTERNAL_AUTHENTICATION_PROMPT\": function() { return /* binding */ HIDE_INTERNAL_AUTHENTICATION_PROMPT; },\n/* harmony export */   \"TEAM_MEMBERSHIP\": function() { return /* binding */ TEAM_MEMBERSHIP; },\n/* harmony export */   \"HIDE_INTERNAL_AUTH\": function() { return /* binding */ HIDE_INTERNAL_AUTH; },\n/* harmony export */   \"EXTERNAL_AUTH_LDAP\": function() { return /* binding */ EXTERNAL_AUTH_LDAP; },\n/* harmony export */   \"ACTIVITY_AUDIT\": function() { return /* binding */ ACTIVITY_AUDIT; },\n/* harmony export */   \"HIDE_AUTO_UPDATE_WINDOW\": function() { return /* binding */ HIDE_AUTO_UPDATE_WINDOW; },\n/* harmony export */   \"FORCE_REDEPLOYMENT\": function() { return /* binding */ FORCE_REDEPLOYMENT; },\n/* harmony export */   \"STACK_PULL_IMAGE\": function() { return /* binding */ STACK_PULL_IMAGE; },\n/* harmony export */   \"STACK_WEBHOOK\": function() { return /* binding */ STACK_WEBHOOK; },\n/* harmony export */   \"CONTAINER_WEBHOOK\": function() { return /* binding */ CONTAINER_WEBHOOK; }\n/* harmony export */ });\nconst K8S_RESOURCE_POOL_LB_QUOTA = 'k8s-resourcepool-Ibquota';\nconst K8S_RESOURCE_POOL_STORAGE_QUOTA = 'k8s-resourcepool-storagequota';\nconst RBAC_ROLES = 'rbac-roles';\nconst REGISTRY_MANAGEMENT = 'registry-management';\nconst K8S_SETUP_DEFAULT = 'k8s-setup-default';\nconst S3_BACKUP_SETTING = 's3-backup-setting';\nconst HIDE_INTERNAL_AUTHENTICATION_PROMPT = 'hide-internal-authentication-prompt';\nconst TEAM_MEMBERSHIP = 'team-membership';\nconst HIDE_INTERNAL_AUTH = 'hide-internal-auth';\nconst EXTERNAL_AUTH_LDAP = 'external-auth-ldap';\nconst ACTIVITY_AUDIT = 'activity-audit';\nconst HIDE_AUTO_UPDATE_WINDOW = 'hide-auto-update-window';\nconst FORCE_REDEPLOYMENT = 'force-redeployment';\nconst STACK_PULL_IMAGE = 'stack-pull-image';\nconst STACK_WEBHOOK = 'stack-webhook';\nconst CONTAINER_WEBHOOK = 'container-webhook';//# sourceURL=webpack-internal:///24268\n");

}),

41066:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"truncateLeftRight\": function() { return /* binding */ truncateLeftRight; },\n/* harmony export */   \"stripProtocol\": function() { return /* binding */ stripProtocol; },\n/* harmony export */   \"humanize\": function() { return /* binding */ humanize; },\n/* harmony export */   \"isoDateFromTimestamp\": function() { return /* binding */ isoDateFromTimestamp; },\n/* harmony export */   \"isoDate\": function() { return /* binding */ isoDate; },\n/* harmony export */   \"getPairKey\": function() { return /* binding */ getPairKey; },\n/* harmony export */   \"getPairValue\": function() { return /* binding */ getPairValue; },\n/* harmony export */   \"ipAddress\": function() { return /* binding */ ipAddress; },\n/* harmony export */   \"arrayToStr\": function() { return /* binding */ arrayToStr; },\n/* harmony export */   \"labelsToStr\": function() { return /* binding */ labelsToStr; },\n/* harmony export */   \"endpointTypeName\": function() { return /* binding */ endpointTypeName; },\n/* harmony export */   \"environmentTypeIcon\": function() { return /* binding */ environmentTypeIcon; },\n/* harmony export */   \"ownershipIcon\": function() { return /* binding */ ownershipIcon; },\n/* harmony export */   \"truncate\": function() { return /* binding */ truncate; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var filesize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! filesize */ 7084);\n/* harmony import */ var filesize__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(filesize__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-feather */ 10820);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-feather */ 85568);\n/* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-feather */ 91821);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\n\n\n\n\nfunction truncateLeftRight(text, max, left, right) {\n  max = isNaN(max) ? 50 : max;\n  left = isNaN(left) ? 25 : left;\n  right = isNaN(right) ? 25 : right;\n\n  if (text.length <= max) {\n    return text;\n  } else {\n    return text.substring(0, left) + '[...]' + text.substring(text.length - right, text.length);\n  }\n}\nfunction stripProtocol(url) {\n  return url.replace(/.*?:\\/\\//g, '');\n}\nfunction humanize(bytes, round, base) {\n  if (!round) {\n    round = 1;\n  }\n\n  if (!base) {\n    base = 10;\n  }\n\n  if (bytes || bytes === 0) {\n    return filesize__WEBPACK_IMPORTED_MODULE_2___default()(bytes, {\n      base: base,\n      round: round\n    });\n  }\n}\nfunction isoDateFromTimestamp(timestamp) {\n  return moment__WEBPACK_IMPORTED_MODULE_1___default().unix(timestamp).format('YYYY-MM-DD HH:mm:ss');\n}\nfunction isoDate(date) {\n  return moment__WEBPACK_IMPORTED_MODULE_1___default()(date).format('YYYY-MM-DD HH:mm:ss');\n}\nfunction getPairKey(pair, separator) {\n  if (!pair.includes(separator)) {\n    return pair;\n  }\n\n  return pair.slice(0, pair.indexOf(separator));\n}\nfunction getPairValue(pair, separator) {\n  if (!pair.includes(separator)) {\n    return '';\n  }\n\n  return pair.slice(pair.indexOf(separator) + 1);\n}\nfunction ipAddress(ip) {\n  return ip.slice(0, ip.indexOf('/'));\n}\nfunction arrayToStr(arr, separator) {\n  if (arr) {\n    return lodash_es_join__WEBPACK_IMPORTED_MODULE_0___default()(arr, separator);\n  }\n\n  return '';\n}\nfunction labelsToStr(arr, separator) {\n  if (arr) {\n    return lodash_es_join__WEBPACK_IMPORTED_MODULE_0___default()(arr.map(item => item.key + ':' + item.value), separator);\n  }\n\n  return '';\n}\nfunction endpointTypeName(type) {\n  if (type === 1) {\n    return 'Docker';\n  } else if (type === 2 || type === 6) {\n    return 'Agent';\n  } else if (type === 3) {\n    return 'Azure ACI';\n  } else if (type === 5) {\n    return 'Kubernetes';\n  } else if (type === 4 || type === 7) {\n    return 'Edge Agent';\n  }\n\n  return '';\n}\nfunction environmentTypeIcon(type) {\n  if (type === 3) {\n    return 'fab fa-microsoft';\n  } else if (type === 4) {\n    return 'fa fa-cloud';\n  } else if (type === 5 || type === 6 || type === 7) {\n    return 'fas fa-dharmachakra';\n  }\n\n  return 'fab fa-docker';\n}\nfunction ownershipIcon(ownership) {\n  switch (ownership) {\n    case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.PRIVATE:\n      return react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n    case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.ADMINISTRATORS:\n      return react_feather__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n    case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_3__.ResourceControlOwnership.RESTRICTED:\n      return react_feather__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\n    default:\n      return react_feather__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n  }\n}\nfunction truncate(text, length, end) {\n  if (isNaN(length)) {\n    length = 10;\n  }\n\n  if (end === undefined) {\n    end = '...';\n  }\n\n  if (text.length <= length || text.length - end.length <= length) {\n    return text;\n  } else {\n    return String(text).substring(0, length - end.length) + end;\n  }\n}//# sourceURL=webpack-internal:///41066\n");

}),

1740:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_capitalize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/capitalize */ 35057);\n/* harmony import */ var lodash_es_capitalize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_capitalize__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _filters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filters */ 41066);\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_2___default().module('portainer.app').filter('truncate', () => _filters__WEBPACK_IMPORTED_MODULE_3__.truncate).filter('truncatelr', () => _filters__WEBPACK_IMPORTED_MODULE_3__.truncateLeftRight).filter('capitalize', () => (lodash_es_capitalize__WEBPACK_IMPORTED_MODULE_1___default())).filter('stripprotocol', () => _filters__WEBPACK_IMPORTED_MODULE_3__.stripProtocol).filter('humansize', () => _filters__WEBPACK_IMPORTED_MODULE_3__.humanize).filter('getisodatefromtimestamp', () => _filters__WEBPACK_IMPORTED_MODULE_3__.isoDateFromTimestamp).filter('getisodate', () => _filters__WEBPACK_IMPORTED_MODULE_3__.isoDate).filter('key', () => _filters__WEBPACK_IMPORTED_MODULE_3__.getPairKey).filter('value', () => _filters__WEBPACK_IMPORTED_MODULE_3__.getPairValue).filter('emptyobject', () => (lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default())).filter('ipaddress', () => _filters__WEBPACK_IMPORTED_MODULE_3__.ipAddress).filter('arraytostr', () => _filters__WEBPACK_IMPORTED_MODULE_3__.arrayToStr).filter('labelsToStr', () => _filters__WEBPACK_IMPORTED_MODULE_3__.labelsToStr).filter('endpointtypename', () => _filters__WEBPACK_IMPORTED_MODULE_3__.endpointTypeName).filter('endpointtypeicon', () => _filters__WEBPACK_IMPORTED_MODULE_3__.environmentTypeIcon).filter('ownershipicon', () => _filters__WEBPACK_IMPORTED_MODULE_3__.ownershipIcon);//# sourceURL=webpack-internal:///1740\n");

}),

70589:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EndpointHelper; },\n/* harmony export */   \"isOfflineEndpoint\": function() { return /* binding */ isOfflineEndpoint; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n\n\n\nfunction findAssociatedGroup(endpoint, groups) {\n  return lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(groups, function (group) {\n    return group.Id === endpoint.GroupId;\n  });\n}\n\nclass EndpointHelper {\n  static isLocalEndpoint(endpoint) {\n    return endpoint.URL.includes('unix://') || endpoint.URL.includes('npipe://') || endpoint.Type === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.KubernetesLocalEnvironment;\n  }\n\n  static isDockerEndpoint(endpoint) {\n    return [Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.DockerEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnDockerEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment].includes(endpoint.Type);\n  }\n\n  static isAgentEndpoint(endpoint) {\n    return [Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnDockerEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnKubernetesEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment].includes(endpoint.Type);\n  }\n\n  static isEdgeEndpoint(endpoint) {\n    return [Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment].includes(endpoint.Type);\n  }\n\n  static mapGroupNameToEndpoint(endpoints, groups) {\n    for (var i = 0; i < endpoints.length; i++) {\n      var endpoint = endpoints[i];\n      var group = findAssociatedGroup(endpoint, groups);\n\n      if (group) {\n        endpoint.GroupName = group.Name;\n      }\n    }\n  }\n\n}\nfunction isOfflineEndpoint(endpoint) {\n  return endpoint.Status !== 1;\n}//# sourceURL=webpack-internal:///70589\n");

}),

93994:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KEY_REGEX\": function() { return /* binding */ KEY_REGEX; },\n/* harmony export */   \"VALUE_REGEX\": function() { return /* binding */ VALUE_REGEX; },\n/* harmony export */   \"parseDotEnvFile\": function() { return /* binding */ parseDotEnvFile; },\n/* harmony export */   \"parseArrayOfStrings\": function() { return /* binding */ parseArrayOfStrings; },\n/* harmony export */   \"convertToArrayOfStrings\": function() { return /* binding */ convertToArrayOfStrings; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/compact */ 20810);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__);\n\nconst KEY_REGEX = /(.+?)/.source;\nconst VALUE_REGEX = /(.*)?/.source;\nconst KEY_VALUE_REGEX = new RegExp(`^(${KEY_REGEX})\\\\s*=(${VALUE_REGEX})$`);\nconst NEWLINES_REGEX = /\\n|\\r|\\r\\n/;\n/**\n * @param  {string} src the source of the .env file\n *\n * @returns {[{name: string, value: string}]} array of {name, value}\n */\n\nfunction parseDotEnvFile(src) {\n  return parseArrayOfStrings(lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default()(src.split(NEWLINES_REGEX)).map(v => v.trim()).filter(v => !v.startsWith('#') && v !== ''));\n}\n/**\n * parses an array of name=value to array of {name, value}\n *\n * @param  {[string]} array array of strings in format name=value\n *\n * @returns {[{name: string, value: string}]} array of {name, value}\n */\n\nfunction parseArrayOfStrings(array) {\n  if (!array) {\n    return [];\n  }\n\n  return lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default()(array.map(variableString => {\n    if (!variableString.includes('=')) {\n      return {\n        name: variableString\n      };\n    }\n\n    const parsedKeyValArr = variableString.trim().match(KEY_VALUE_REGEX);\n\n    if (parsedKeyValArr != null && parsedKeyValArr.length > 4) {\n      return {\n        name: parsedKeyValArr[1].trim(),\n        value: parsedKeyValArr[3].trim() || ''\n      };\n    }\n  }));\n}\n/**\n * converts an array of {name, value} to array of `name=value`, name is always defined\n *\n * @param  {[{name, value}]} array array of {name, value}\n *\n * @returns {[string]} array of `name=value`\n */\n\nfunction convertToArrayOfStrings(array) {\n  if (!array) {\n    return [];\n  }\n\n  return array.filter(variable => variable.name).map(({\n    name,\n    value\n  }) => value || value === '' ? `${name}=${value}` : name);\n}//# sourceURL=webpack-internal:///93994\n");

}),

30398:

(function() {

eval("angular.module('portainer.app').factory('FormHelper', [function FormHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.removeInvalidEnvVars = function (env) {\n    for (var i = env.length - 1; i >= 0; i--) {\n      var envvar = env[i];\n\n      if (!envvar.name) {\n        env.splice(i, 1);\n      }\n    }\n\n    return env;\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///30398\n");

}),

24003:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass GenericHelper {\n  static findDeepAll(obj, target, res = []) {\n    if (typeof obj === 'object') {\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(obj, (child, key) => {\n        if (key === target) res.push(child);\n        if (typeof child === 'object') GenericHelper.findDeepAll(child, target, res);\n      });\n    }\n\n    return res;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GenericHelper);//# sourceURL=webpack-internal:///24003\n");

}),

30556:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass NetworkHelper {\n  /* @ngInject */\n  constructor(PREDEFINED_NETWORKS) {\n    this.PREDEFINED_NETWORKS = PREDEFINED_NETWORKS;\n  }\n\n  isSystemNetwork(item) {\n    return lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(this.PREDEFINED_NETWORKS, item.Name);\n  }\n\n}\n\nNetworkHelper.$inject = [\"PREDEFINED_NETWORKS\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (NetworkHelper);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app').service('NetworkHelper', NetworkHelper);//# sourceURL=webpack-internal:///30556\n");

}),

50433:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"baseHref\": function() { return /* binding */ baseHref; }\n/* harmony export */ });\n/**\n * calculates baseHref\n *\n * return [string]\n *\n */\nfunction baseHref() {\n  const base = document.getElementById('base');\n  return base ? base.getAttribute('href') : '/';\n}//# sourceURL=webpack-internal:///50433\n");

}),

43622:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var _models_resourceControl_resourceControlOwnershipParameters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../models/resourceControl/resourceControlOwnershipParameters */ 1870);\n\n\n\n\n\n\n\nclass ResourceControlHelper {\n  /**\n   * Transform ResourceControlViewModel to ResourceControlOwnershipParameters\n   * @param {int} userId ID of User performing the action\n   * @param {ResourceControlViewModel} resourceControl ResourceControl view model\n   */\n  RCViewModelToOwnershipParameters(userId, resourceControl) {\n    if (!resourceControl) {\n      return new _models_resourceControl_resourceControlOwnershipParameters__WEBPACK_IMPORTED_MODULE_5__.ResourceControlOwnershipParameters(true);\n    }\n\n    let adminOnly = false;\n    let publicOnly = false;\n    let users = [];\n    let teams = [];\n\n    switch (resourceControl.Ownership) {\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.PUBLIC:\n        publicOnly = true;\n        break;\n\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.PRIVATE:\n        users = [userId];\n        break;\n\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.RESTRICTED:\n        users = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(resourceControl.UserAccesses, user => user.UserId);\n        teams = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(resourceControl.TeamAccesses, team => team.TeamId);\n        break;\n\n      default:\n        adminOnly = true;\n        break;\n    }\n\n    return new _models_resourceControl_resourceControlOwnershipParameters__WEBPACK_IMPORTED_MODULE_5__.ResourceControlOwnershipParameters(adminOnly, publicOnly, users, teams);\n  }\n  /**\n   * Transform AccessControlFormData to ResourceControlOwnershipParameters\n   * @param {int} userId ID of user performing the operation\n   * @param {AccessControlFormData} formValues Form data (generated by AccessControlForm)\n   * @param {int[]} subResources Sub Resources restricted by the ResourceControl\n   */\n\n\n  RCFormDataToOwnershipParameters(userId, formValues, subResources = []) {\n    if (!formValues.AccessControlEnabled) {\n      formValues.Ownership = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.PUBLIC;\n    }\n\n    let adminOnly = false;\n    let publicOnly = false;\n    let users = [];\n    let teams = [];\n\n    switch (formValues.Ownership) {\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.PUBLIC:\n        publicOnly = true;\n        break;\n\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.PRIVATE:\n        users.push(userId);\n        break;\n\n      case _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_4__.ResourceControlOwnership.RESTRICTED:\n        users = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(formValues.AuthorizedUsers, user => user.Id);\n        teams = lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(formValues.AuthorizedTeams, team => team.Id);\n        break;\n\n      default:\n        adminOnly = true;\n        break;\n    }\n\n    return new _models_resourceControl_resourceControlOwnershipParameters__WEBPACK_IMPORTED_MODULE_5__.ResourceControlOwnershipParameters(adminOnly, publicOnly, users, teams, subResources);\n  }\n\n  retrieveAuthorizedUsers(resourceControl, users) {\n    const authorizedUsers = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(resourceControl.UserAccesses, access => {\n      const user = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(users, {\n        Id: access.UserId\n      });\n\n      if (user) {\n        authorizedUsers.push(user);\n      }\n    });\n\n    return authorizedUsers;\n  }\n\n  retrieveAuthorizedTeams(resourceControl, teams) {\n    const authorizedTeams = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_1___default()(resourceControl.TeamAccesses, access => {\n      const team = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(teams, {\n        Id: access.TeamId\n      });\n\n      if (team) {\n        authorizedTeams.push(team);\n      }\n    });\n\n    return authorizedTeams;\n  }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ResourceControlHelper);\nangular__WEBPACK_IMPORTED_MODULE_3___default().module('portainer.app').service('ResourceControlHelper', ResourceControlHelper);//# sourceURL=webpack-internal:///43622\n");

}),

13118:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"extractContainerNames\": function() { return /* binding */ extractContainerNames; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/join */ 89858);\n/* harmony import */ var lodash_es_join__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_join__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/difference */ 65491);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_intersection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/intersection */ 63209);\n/* harmony import */ var lodash_es_intersection__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_intersection__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/uniqBy */ 93715);\n/* harmony import */ var lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! yaml */ 78879);\n/* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(yaml__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _portainer_helpers_genericHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/helpers/genericHelper */ 24003);\n/* harmony import */ var _portainer_models_stack__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/portainer/models/stack */ 49036);\n\n\n\n\n\n\n\n\nangular.module('portainer.app').factory('StackHelper', [function StackHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.getExternalStacksFromContainers = function (containers) {\n    return getExternalStacksFromLabel(containers, 'com.docker.compose.project', 2);\n  };\n\n  helper.getExternalStacksFromServices = function (services) {\n    return getExternalStacksFromLabel(services, 'com.docker.stack.namespace', 1);\n  };\n\n  function getExternalStacksFromLabel(items, label, type) {\n    return lodash_es_uniqBy__WEBPACK_IMPORTED_MODULE_4___default()(items.filter(item => item.Labels && item.Labels[label]).map(item => new _portainer_models_stack__WEBPACK_IMPORTED_MODULE_7__.ExternalStackViewModel(item.Labels[label], type, item.Created)), 'Name');\n  }\n\n  helper.validateYAML = validateYAML;\n  return helper;\n}]);\n\nfunction validateYAML(yaml, containerNames, originalContainersNames = []) {\n  let yamlObject;\n\n  try {\n    yamlObject = yaml__WEBPACK_IMPORTED_MODULE_5___default().parse(yaml);\n  } catch (err) {\n    return 'yaml语法中存在一个错误: ' + err;\n  }\n\n  const names = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3___default()(_portainer_helpers_genericHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].findDeepAll(yamlObject, 'container_name'));\n\n  const duplicateContainers = lodash_es_intersection__WEBPACK_IMPORTED_MODULE_2___default()(lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default()(containerNames, originalContainersNames), names);\n\n  if (duplicateContainers.length === 0) {\n    return '';\n  }\n\n  return (duplicateContainers.length === 1 ? '这个容器名称是' : '这些容器名称是') + ' 已经被运行在这个环境中的另一个容器所使用: ' + lodash_es_join__WEBPACK_IMPORTED_MODULE_0___default()(duplicateContainers, ', ') + '.';\n}\n\nfunction extractContainerNames(yaml = '') {\n  let yamlObject;\n\n  try {\n    yamlObject = yaml__WEBPACK_IMPORTED_MODULE_5___default().parse(yaml);\n  } catch (err) {\n    return [];\n  }\n\n  return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3___default()(_portainer_helpers_genericHelper__WEBPACK_IMPORTED_MODULE_6__[\"default\"].findDeepAll(yamlObject, 'container_name'));\n}//# sourceURL=webpack-internal:///13118\n");

}),

91619:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"idsToTagNames\": function() { return /* binding */ idsToTagNames; }\n/* harmony export */ });\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/includes */ 44716);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/filter */ 83432);\n/* harmony import */ var lodash_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_filter__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction idsToTagNames(tags, ids) {\n  const filteredTags = lodash_filter__WEBPACK_IMPORTED_MODULE_2___default()(tags, tag => lodash_includes__WEBPACK_IMPORTED_MODULE_1___default()(ids, tag.Id));\n\n  const tagNames = lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(filteredTags, 'Name');\n\n  return tagNames;\n}//# sourceURL=webpack-internal:///91619\n");

}),

69424:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.app').factory('TemplateHelper', [function TemplateHelperFactory() {\n  'use strict';\n\n  var helper = {};\n\n  helper.getDefaultContainerConfiguration = function () {\n    return {\n      Env: [],\n      OpenStdin: false,\n      Tty: false,\n      ExposedPorts: {},\n      HostConfig: {\n        RestartPolicy: {\n          Name: 'no'\n        },\n        PortBindings: {},\n        Binds: [],\n        Privileged: false,\n        ExtraHosts: []\n      },\n      Volumes: {},\n      Labels: {}\n    };\n  };\n\n  helper.portArrayToPortConfiguration = function (ports) {\n    var portConfiguration = {\n      bindings: {},\n      exposedPorts: {}\n    };\n    ports.forEach(function (p) {\n      if (p.containerPort) {\n        var key = p.containerPort + '/' + p.protocol;\n        var binding = {};\n\n        if (p.hostPort) {\n          binding.HostPort = p.hostPort;\n\n          if (p.hostPort.indexOf(':') > -1) {\n            var hostAndPort = p.hostPort.split(':');\n            binding.HostIp = hostAndPort[0];\n            binding.HostPort = hostAndPort[1];\n          }\n        }\n\n        portConfiguration.bindings[key] = [binding];\n        portConfiguration.exposedPorts[key] = {};\n      }\n    });\n    return portConfiguration;\n  };\n\n  helper.updateContainerConfigurationWithLabels = function (labelsArray) {\n    var labels = {};\n    labelsArray.forEach(function (l) {\n      if (l.name) {\n        if (l.value) {\n          labels[l.name] = l.value;\n        } else {\n          labels[l.name] = '';\n        }\n      }\n    });\n    return labels;\n  };\n\n  helper.EnvToStringArray = function (templateEnvironment) {\n    var env = [];\n    templateEnvironment.forEach(function (envvar) {\n      if (envvar.value || envvar.set) {\n        var value = envvar.set ? envvar.set : envvar.value;\n        env.push(envvar.name + '=' + value);\n      }\n    });\n    return env;\n  };\n\n  helper.getConsoleConfiguration = function (interactiveFlag) {\n    var consoleConfiguration = {\n      openStdin: false,\n      tty: false\n    };\n\n    if (interactiveFlag === true) {\n      consoleConfiguration.openStdin = true;\n      consoleConfiguration.tty = true;\n    }\n\n    return consoleConfiguration;\n  };\n\n  helper.createVolumeBindings = function (volumes, generatedVolumesPile) {\n    volumes.forEach(function (volume) {\n      if (volume.container) {\n        var binding;\n\n        if (volume.type === 'auto') {\n          binding = generatedVolumesPile.pop().Id + ':' + volume.container;\n        } else if (volume.type !== 'auto' && volume.bind) {\n          binding = volume.bind + ':' + volume.container;\n        }\n\n        if (volume.readonly) {\n          binding += ':ro';\n        }\n\n        volume.binding = binding;\n      }\n    });\n  };\n\n  helper.determineRequiredGeneratedVolumeCount = function (volumes) {\n    var count = 0;\n    volumes.forEach(function (volume) {\n      if (volume.type === 'auto') {\n        ++count;\n      }\n    });\n    return count;\n  };\n\n  helper.getUniqueCategories = function (templates) {\n    var categories = [];\n\n    for (var i = 0; i < templates.length; i++) {\n      var template = templates[i];\n      categories = categories.concat(template.Categories);\n    }\n\n    return lodash_es_uniq__WEBPACK_IMPORTED_MODULE_0___default()(categories);\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///69424\n");

}),

79190:

(function() {

eval("angular.module('portainer.app').factory('URLHelper', ['$window', function URLHelperFactory($window) {\n  'use strict';\n\n  var helper = {};\n  helper.getParameter = getParameter;\n  helper.cleanParameters = cleanParameters;\n\n  function getParameter(param) {\n    var parameters = extractParameters();\n    return parameters[param];\n  }\n\n  function extractParameters() {\n    var queryString = $window.location.search.replace(/.*?\\?/, '').split('&');\n    return queryString.reduce(function (acc, keyValStr) {\n      var keyVal = keyValStr.split('=');\n      var key = keyVal[0];\n      var val = keyVal[1];\n      acc[key] = val;\n      return acc;\n    }, {});\n  }\n\n  function cleanParameters() {\n    $window.location.replace($window.location.origin + $window.location.pathname + $window.location.hash);\n  }\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///79190\n");

}),

48328:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n\nangular.module('portainer.app').factory('WebhookHelper', ['$location', 'API_ENDPOINT_WEBHOOKS', 'API_ENDPOINT_STACKS', function WebhookHelperFactory($location, API_ENDPOINT_WEBHOOKS, API_ENDPOINT_STACKS) {\n  'use strict';\n\n  var helper = {};\n  let base;\n  const protocol = $location.protocol().toLowerCase();\n\n  if (protocol !== 'file') {\n    const host = $location.host();\n    const port = $location.port();\n    const displayPort = protocol === 'http' && port === 80 || protocol === 'https' && port === 443 ? '' : ':' + port;\n    base = `${protocol}://${host}${displayPort}${(0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__.baseHref)()}`;\n  } else {\n    base = (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__.baseHref)();\n  }\n\n  helper.returnWebhookUrl = function (token) {\n    return `${base}${API_ENDPOINT_WEBHOOKS}/${token}`;\n  };\n\n  helper.returnStackWebhookUrl = function (token) {\n    return `${base}${API_ENDPOINT_STACKS}/webhooks/${token}`;\n  };\n\n  return helper;\n}]);//# sourceURL=webpack-internal:///48328\n");

}),

89940:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.app').factory('EndpointStatusInterceptor', ['$q', 'EndpointProvider', function ($q, EndpointProvider) {\n  'use strict';\n\n  var interceptor = {};\n  interceptor.response = responseInterceptor;\n  interceptor.responseError = responseErrorInterceptor;\n\n  function canBeOffline(url) {\n    return lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_1___default()(url, 'api/') && (lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/containers') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/images') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/volumes') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/networks') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/info') || lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(url, '/version'));\n  }\n\n  function responseInterceptor(response) {\n    var url = response.config.url;\n\n    if (response.status === 200 && canBeOffline(url) && EndpointProvider.offlineMode()) {\n      EndpointProvider.setOfflineMode(false);\n    }\n\n    return response || $q.when(response);\n  }\n\n  function responseErrorInterceptor(rejection) {\n    if (rejection.config) {\n      var url = rejection.config.url;\n\n      if ((rejection.status === 502 || rejection.status === 503 || rejection.status === -1) && canBeOffline(url) && !EndpointProvider.offlineMode()) {\n        EndpointProvider.setOfflineMode(true);\n      }\n    }\n\n    return $q.reject(rejection);\n  }\n\n  return interceptor;\n}]);//# sourceURL=webpack-internal:///89940\n");

}),

93133:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UserAccessViewModel\": function() { return /* binding */ UserAccessViewModel; },\n/* harmony export */   \"TeamAccessViewModel\": function() { return /* binding */ TeamAccessViewModel; }\n/* harmony export */ });\n// create UserAccessViewModel from UserViewModel\nfunction UserAccessViewModel(data) {\n  this.Id = data.Id;\n  this.Name = data.Username;\n  this.Type = 'user';\n  this.Inherited = false;\n  this.Override = false;\n  this.Role = {\n    Id: 0,\n    Name: '-'\n  };\n  this.icon = '<i class=\"fa fa-user\" aria-hidden=\"true\"></i>';\n} // create TeamAccessViewModel from TeamViewModel\n\nfunction TeamAccessViewModel(data) {\n  this.Id = data.Id;\n  this.Name = data.Name;\n  this.Type = 'team';\n  this.Inherited = false;\n  this.Override = false;\n  this.Role = {\n    Id: 0,\n    Name: '-'\n  };\n  this.icon = '<i class=\"fa fa-users\" aria-hidden=\"true\"></i>';\n}//# sourceURL=webpack-internal:///93133\n");

}),

74962:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DockerHubViewModel\": function() { return /* binding */ DockerHubViewModel; }\n/* harmony export */ });\n/* harmony import */ var _registryTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registryTypes */ 56414);\n\nfunction DockerHubViewModel() {\n  this.Id = 0;\n  this.Type = _registryTypes__WEBPACK_IMPORTED_MODULE_0__.RegistryTypes.ANONYMOUS;\n  this.Name = 'Docker Hub (匿名)';\n  this.URL = 'docker.io';\n}//# sourceURL=webpack-internal:///74962\n");

}),

690:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PortainerEndpointInitFormValues\": function() { return /* binding */ PortainerEndpointInitFormValues; },\n/* harmony export */   \"PortainerEndpointInitFormValueEndpointSections\": function() { return /* binding */ PortainerEndpointInitFormValueEndpointSections; }\n/* harmony export */ });\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n\nclass PortainerEndpointInitFormValues {\n  constructor() {\n    this.ConnectionType = Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointConnectionTypes.KUBERNETES_LOCAL;\n    this.Name = '';\n    this.URL = '';\n    this.TLS = false;\n    this.TLSSkipVerify = false;\n    this.TLSSKipClientVerify = false;\n    this.TLSCACert = null;\n    this.TLSCert = null;\n    this.TLSKey = null;\n    this.AzureApplicationId = '';\n    this.AzureTenantId = '';\n    this.AzureAuthenticationKey = '';\n  }\n\n}\n\nclass PortainerEndpointInitFormValueEndpointSection {\n  constructor(value, title, classes, description) {\n    this.Id = value;\n    this.Value = value;\n    this.Title = title;\n    this.Classes = classes;\n    this.Description = description;\n  }\n\n}\n\nconst PortainerEndpointInitFormValueEndpointSections = Object.freeze([new PortainerEndpointInitFormValueEndpointSection(Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointConnectionTypes.DOCKER_LOCAL, 'Docker', 'fab fa-docker', 'Manage the local Docker environment'), new PortainerEndpointInitFormValueEndpointSection(Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointConnectionTypes.KUBERNETES_LOCAL, 'Kubernetes', 'fas fa-dharmachakra', 'Manage the local Kubernetes environment'), new PortainerEndpointInitFormValueEndpointSection(Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointConnectionTypes.AGENT, 'Agent', 'fa fa-bolt', 'Connect to a Portainer agent')]);//# sourceURL=webpack-internal:///690\n");

}),

13494:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PortainerEndpointTypes\": function() { return /* binding */ PortainerEndpointTypes; },\n/* harmony export */   \"PortainerEndpointCreationTypes\": function() { return /* binding */ PortainerEndpointCreationTypes; },\n/* harmony export */   \"PortainerEndpointConnectionTypes\": function() { return /* binding */ PortainerEndpointConnectionTypes; }\n/* harmony export */ });\n/**\n * JS reference of portainer.go#EndpointType iota\n */\nconst PortainerEndpointTypes = Object.freeze({\n  // DockerEnvironment represents an endpoint connected to a Docker environment\n  DockerEnvironment: 1,\n  // AgentOnDockerEnvironment represents an endpoint connected to a Portainer agent deployed on a Docker environment\n  AgentOnDockerEnvironment: 2,\n  // AzureEnvironment represents an endpoint connected to an Azure environment\n  AzureEnvironment: 3,\n  // EdgeAgentOnDockerEnvironment represents an endpoint connected to an Edge agent deployed on a Docker environment\n  EdgeAgentOnDockerEnvironment: 4,\n  // KubernetesLocalEnvironment represents an endpoint connected to a local Kubernetes environment\n  KubernetesLocalEnvironment: 5,\n  // AgentOnKubernetesEnvironment represents an endpoint connected to a Portainer agent deployed on a Kubernetes environment\n  AgentOnKubernetesEnvironment: 6,\n  // EdgeAgentOnKubernetesEnvironment represents an endpoint connected to an Edge agent deployed on a Kubernetes environment\n  EdgeAgentOnKubernetesEnvironment: 7\n});\n/**\n * JS reference of endpoint_create.go#EndpointCreationType iota\n */\n\nconst PortainerEndpointCreationTypes = Object.freeze({\n  LocalDockerEnvironment: 1,\n  AgentEnvironment: 2,\n  AzureEnvironment: 3,\n  EdgeAgentEnvironment: 4,\n  LocalKubernetesEnvironment: 5\n});\nconst PortainerEndpointConnectionTypes = Object.freeze({\n  DOCKER_LOCAL: 1,\n  KUBERNETES_LOCAL: 2,\n  REMOTE: 3,\n  AZURE: 4,\n  AGENT: 5,\n  EDGE: 6\n});//# sourceURL=webpack-internal:///13494\n");

}),

62365:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RegistryGitlabProject\": function() { return /* binding */ RegistryGitlabProject; }\n/* harmony export */ });\nfunction RegistryGitlabProject(project) {\n  this.Id = project.id;\n  this.Description = project.description;\n  this.Name = project.name;\n  this.Namespace = project.namespace ? project.namespace.name : '';\n  this.PathWithNamespace = project.path_with_namespace;\n  this.RegistryEnabled = project.container_registry_enabled;\n}//# sourceURL=webpack-internal:///62365\n");

}),

79607:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EndpointGroupDefaultModel\": function() { return /* binding */ EndpointGroupDefaultModel; },\n/* harmony export */   \"EndpointGroupModel\": function() { return /* binding */ EndpointGroupModel; },\n/* harmony export */   \"EndpointGroupCreateRequest\": function() { return /* binding */ EndpointGroupCreateRequest; },\n/* harmony export */   \"EndpointGroupUpdateRequest\": function() { return /* binding */ EndpointGroupUpdateRequest; }\n/* harmony export */ });\nfunction EndpointGroupDefaultModel() {\n  this.Name = '';\n  this.Description = '';\n  this.TagIds = [];\n}\nfunction EndpointGroupModel(data) {\n  this.Id = data.Id;\n  this.Name = data.Name;\n  this.Description = data.Description;\n  this.TagIds = data.TagIds;\n  this.AuthorizedUsers = data.AuthorizedUsers;\n  this.AuthorizedTeams = data.AuthorizedTeams;\n  this.UserAccessPolicies = data.UserAccessPolicies;\n  this.TeamAccessPolicies = data.TeamAccessPolicies;\n}\nfunction EndpointGroupCreateRequest(model, endpoints) {\n  this.Name = model.Name;\n  this.Description = model.Description;\n  this.TagIds = model.TagIds;\n  this.AssociatedEndpoints = endpoints;\n}\nfunction EndpointGroupUpdateRequest(model, endpoints) {\n  this.id = model.Id;\n  this.Name = model.Name;\n  this.Description = model.Description;\n  this.TagIds = model.TagIds;\n  this.AssociatedEndpoints = endpoints;\n  this.UserAccessPolicies = model.UserAccessPolicies;\n  this.TeamAccessPolicies = model.TeamAccessPolicies;\n}//# sourceURL=webpack-internal:///79607\n");

}),

33180:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RegistryViewModel\": function() { return /* binding */ RegistryViewModel; },\n/* harmony export */   \"RegistryManagementConfigurationDefaultModel\": function() { return /* binding */ RegistryManagementConfigurationDefaultModel; },\n/* harmony export */   \"RegistryCreateFormValues\": function() { return /* binding */ RegistryCreateFormValues; },\n/* harmony export */   \"RegistryCreateRequest\": function() { return /* binding */ RegistryCreateRequest; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/replace */ 30465);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_replace__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _registryTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registryTypes */ 56414);\n\n\nfunction RegistryViewModel(data) {\n  this.Id = data.Id;\n  this.Type = data.Type;\n  this.Name = data.Name;\n  this.URL = data.URL;\n  this.BaseURL = data.BaseURL;\n  this.Authentication = data.Authentication;\n  this.Username = data.Username;\n  this.Password = data.Password;\n  this.RegistryAccesses = data.RegistryAccesses; // map[EndpointID]{UserAccessPolicies, TeamAccessPolicies, NamespaceAccessPolicies}\n\n  this.Checked = false;\n  this.Gitlab = data.Gitlab;\n  this.Quay = data.Quay;\n  this.Ecr = data.Ecr;\n}\nfunction RegistryManagementConfigurationDefaultModel(registry) {\n  this.Authentication = false;\n  this.Password = '';\n  this.TLS = false;\n  this.TLSSkipVerify = false;\n  this.TLSCACertFile = null;\n  this.TLSCertFile = null;\n  this.TLSKeyFile = null;\n\n  if (registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ECR) {\n    this.Region = registry.Ecr.Region;\n    this.TLSSkipVerify = true;\n  }\n\n  if (registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.QUAY || registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.AZURE || registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ECR) {\n    this.Authentication = true;\n    this.Username = registry.Username;\n    this.TLS = true;\n  }\n\n  if ((registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.CUSTOM || registry.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.PROGET) && registry.Authentication) {\n    this.Authentication = true;\n    this.Username = registry.Username;\n  }\n}\nfunction RegistryCreateFormValues() {\n  this.Type = _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.CUSTOM;\n  this.URL = '';\n  this.Name = '';\n  this.Authentication = false;\n  this.Username = '';\n  this.Password = '';\n}\nfunction RegistryCreateRequest(model) {\n  this.Name = model.Name;\n  this.Type = model.Type;\n  this.URL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_0___default()(model.URL, /^https?\\:\\/\\//i, '');\n  this.URL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_0___default()(this.URL, /\\/$/, '');\n  this.Authentication = model.Authentication;\n\n  if (model.Authentication) {\n    this.Username = model.Username;\n    this.Password = model.Password;\n  }\n\n  if (model.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.GITLAB) {\n    this.Gitlab = {\n      ProjectId: model.Gitlab.ProjectId,\n      InstanceURL: model.Gitlab.InstanceURL,\n      ProjectPath: model.Gitlab.ProjectPath\n    };\n  }\n\n  if (model.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ECR) {\n    this.Ecr = model.Ecr;\n  }\n\n  if (model.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.QUAY) {\n    this.Quay = {\n      useOrganisation: model.Quay.useOrganisation,\n      organisationName: model.Quay.organisationName\n    };\n  }\n\n  if (model.Type === _registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.PROGET) {\n    this.BaseURL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_0___default()(model.BaseURL, /^https?\\:\\/\\//i, '');\n    this.BaseURL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_0___default()(this.BaseURL, /\\/$/, '');\n  }\n}//# sourceURL=webpack-internal:///33180\n");

}),

64088:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RegistryRepositoryViewModel\": function() { return /* binding */ RegistryRepositoryViewModel; },\n/* harmony export */   \"RegistryRepositoryGitlabViewModel\": function() { return /* binding */ RegistryRepositoryGitlabViewModel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/without */ 46545);\n/* harmony import */ var lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_without__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction RegistryRepositoryViewModel(item) {\n  if (item.name && item.tags) {\n    this.Name = item.name;\n    this.TagsCount = lodash_es_without__WEBPACK_IMPORTED_MODULE_0___default()(item.tags, null).length;\n  } else {\n    this.Name = item;\n    this.TagsCount = 0;\n  }\n}\nfunction RegistryRepositoryGitlabViewModel(data) {\n  this.Name = data.path;\n  this.TagsCount = data.tags.length;\n}//# sourceURL=webpack-internal:///64088\n");

}),

56414:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RegistryTypes\": function() { return /* binding */ RegistryTypes; }\n/* harmony export */ });\nconst RegistryTypes = Object.freeze({\n  ANONYMOUS: 0,\n  // not backend replicated, only for frontend\n  QUAY: 1,\n  AZURE: 2,\n  CUSTOM: 3,\n  GITLAB: 4,\n  PROGET: 5,\n  DOCKERHUB: 6,\n  ECR: 7\n});//# sourceURL=webpack-internal:///56414\n");

}),

74392:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ResourceControlCreatePayload\": function() { return /* binding */ ResourceControlCreatePayload; }\n/* harmony export */ });\n/**\n * Payload for resourceControleCreate operation\n * @param {string} resourceId ID of involved Resource\n * @param {ResourceControlResourceType} resourceType Type of involved Resource\n * @param {ResourceControlOwnershipParameters} data Transcient type from view data to payload\n */\nfunction ResourceControlCreatePayload(resourceId, resourceType, data) {\n  void data;\n  this.ResourceID = resourceId;\n  this.Type = resourceType;\n  this.Public = data.Public;\n  this.AdministratorsOnly = data.AdministratorsOnly;\n  this.Users = data.Users;\n  this.Teams = data.Teams;\n  this.SubResourceIDs = data.SubResourceIDs;\n}//# sourceURL=webpack-internal:///74392\n");

}),

1870:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ResourceControlOwnershipParameters\": function() { return /* binding */ ResourceControlOwnershipParameters; }\n/* harmony export */ });\n/**\n * Transcient type from view data to payload\n * @param {bool} adminOnly is ResourceControl restricted to admin only\n * @param {bool} publicOnly is ResourceControl exposed to public\n * @param {[]int} users Authorized UserIDs array\n * @param {[]int} teams Authorized TeamIDs array\n * @param {[]int} subResources subResourceIDs array\n */\nfunction ResourceControlOwnershipParameters(adminOnly = false, publicOnly = false, users = [], teams = [], subResources = []) {\n  this.AdministratorsOnly = adminOnly;\n  this.Public = publicOnly;\n  this.Users = users;\n  this.Teams = teams;\n  this.SubResourceIDs = subResources;\n}//# sourceURL=webpack-internal:///1870\n");

}),

82653:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScheduleCreateRequest\": function() { return /* binding */ ScheduleCreateRequest; },\n/* harmony export */   \"ScheduleUpdateRequest\": function() { return /* binding */ ScheduleUpdateRequest; }\n/* harmony export */ });\nfunction ScheduleCreateRequest(model) {\n  this.Name = model.Name;\n  this.Recurring = model.Recurring;\n  this.CronExpression = model.CronExpression;\n  this.Endpoints = model.Endpoints;\n  this.FileContent = model.FileContent;\n  this.File = model.File;\n}\nfunction ScheduleUpdateRequest(model) {\n  this.id = model.Id;\n  this.Name = model.Name;\n  this.Recurring = model.Recurring;\n  this.CronExpression = model.CronExpression;\n  this.Endpoints = model.Endpoints;\n  this.FileContent = model.FileContent;\n}//# sourceURL=webpack-internal:///82653\n");

}),

55287:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SettingsViewModel\": function() { return /* binding */ SettingsViewModel; },\n/* harmony export */   \"PublicSettingsViewModel\": function() { return /* binding */ PublicSettingsViewModel; },\n/* harmony export */   \"InternalAuthSettingsViewModel\": function() { return /* binding */ InternalAuthSettingsViewModel; },\n/* harmony export */   \"LDAPSettingsViewModel\": function() { return /* binding */ LDAPSettingsViewModel; },\n/* harmony export */   \"LDAPSearchSettings\": function() { return /* binding */ LDAPSearchSettings; },\n/* harmony export */   \"LDAPGroupSearchSettings\": function() { return /* binding */ LDAPGroupSearchSettings; },\n/* harmony export */   \"OAuthSettingsViewModel\": function() { return /* binding */ OAuthSettingsViewModel; },\n/* harmony export */   \"EdgeSettingsViewModel\": function() { return /* binding */ EdgeSettingsViewModel; }\n/* harmony export */ });\nfunction SettingsViewModel(data) {\n  this.LogoURL = data.LogoURL;\n  this.BlackListedLabels = data.BlackListedLabels;\n  this.AuthenticationMethod = data.AuthenticationMethod;\n  this.InternalAuthSettings = data.InternalAuthSettings;\n  this.LDAPSettings = data.LDAPSettings;\n  this.OAuthSettings = new OAuthSettingsViewModel(data.OAuthSettings);\n  this.openAMTConfiguration = data.openAMTConfiguration;\n  this.fdoConfiguration = data.fdoConfiguration;\n  this.SnapshotInterval = data.SnapshotInterval;\n  this.TemplatesURL = data.TemplatesURL;\n  this.EdgeAgentCheckinInterval = data.EdgeAgentCheckinInterval;\n  this.EnableEdgeComputeFeatures = data.EnableEdgeComputeFeatures;\n  this.FeatureFlagSettings = data.FeatureFlagSettings;\n  this.UserSessionTimeout = data.UserSessionTimeout;\n  this.EnableTelemetry = data.EnableTelemetry;\n  this.KubeconfigExpiry = data.KubeconfigExpiry;\n  this.HelmRepositoryURL = data.HelmRepositoryURL;\n  this.TrustOnFirstConnect = data.TrustOnFirstConnect;\n  this.EnforceEdgeID = data.EnforceEdgeID;\n  this.AgentSecret = data.AgentSecret;\n  this.EdgePortainerUrl = data.EdgePortainerUrl;\n}\nfunction PublicSettingsViewModel(settings) {\n  this.AuthenticationMethod = settings.AuthenticationMethod;\n  this.TeamSync = settings.TeamSync;\n  this.RequiredPasswordLength = settings.RequiredPasswordLength;\n  this.EnableEdgeComputeFeatures = settings.EnableEdgeComputeFeatures;\n  this.EnforceEdgeID = settings.EnforceEdgeID;\n  this.LogoURL = settings.LogoURL;\n  this.OAuthLoginURI = settings.OAuthLoginURI;\n  this.EnableTelemetry = settings.EnableTelemetry;\n  this.OAuthLogoutURI = settings.OAuthLogoutURI;\n  this.KubeconfigExpiry = settings.KubeconfigExpiry;\n  this.Features = settings.Features;\n  this.Edge = new EdgeSettingsViewModel(settings.Edge);\n  this.DefaultRegistry = settings.DefaultRegistry;\n}\nfunction InternalAuthSettingsViewModel(data) {\n  this.RequiredPasswordLength = data.RequiredPasswordLength;\n}\nfunction LDAPSettingsViewModel(data) {\n  this.ReaderDN = data.ReaderDN;\n  this.Password = data.Password;\n  this.URL = data.URL;\n  this.SearchSettings = data.SearchSettings;\n  this.GroupSearchSettings = data.GroupSearchSettings;\n  this.AutoCreateUsers = data.AutoCreateUsers;\n}\nfunction LDAPSearchSettings(BaseDN, UsernameAttribute, Filter) {\n  this.BaseDN = BaseDN;\n  this.UsernameAttribute = UsernameAttribute;\n  this.Filter = Filter;\n}\nfunction LDAPGroupSearchSettings(GroupBaseDN, GroupAttribute, GroupFilter) {\n  this.GroupBaseDN = GroupBaseDN;\n  this.GroupAttribute = GroupAttribute;\n  this.GroupFilter = GroupFilter;\n}\nfunction OAuthSettingsViewModel(data) {\n  this.ClientID = data.ClientID;\n  this.ClientSecret = data.ClientSecret;\n  this.AccessTokenURI = data.AccessTokenURI;\n  this.AuthorizationURI = data.AuthorizationURI;\n  this.ResourceURI = data.ResourceURI;\n  this.RedirectURI = data.RedirectURI;\n  this.UserIdentifier = data.UserIdentifier;\n  this.Scopes = data.Scopes;\n  this.OAuthAutoCreateUsers = data.OAuthAutoCreateUsers;\n  this.DefaultTeamID = data.DefaultTeamID;\n  this.SSO = data.SSO;\n  this.LogoutURI = data.LogoutURI;\n}\nfunction EdgeSettingsViewModel(data = {}) {\n  this.CheckinInterval = data.CheckinInterval;\n  this.PingInterval = data.PingInterval;\n  this.SnapshotInterval = data.SnapshotInterval;\n  this.CommandInterval = data.CommandInterval;\n  this.AsyncMode = data.AsyncMode;\n}//# sourceURL=webpack-internal:///55287\n");

}),

49036:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StackViewModel\": function() { return /* binding */ StackViewModel; },\n/* harmony export */   \"ExternalStackViewModel\": function() { return /* binding */ ExternalStackViewModel; },\n/* harmony export */   \"OrphanedStackViewModel\": function() { return /* binding */ OrphanedStackViewModel; }\n/* harmony export */ });\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n\nfunction StackViewModel(data) {\n  this.Id = data.Id;\n  this.Type = data.Type;\n  this.Name = data.Name;\n  this.EndpointId = data.EndpointId;\n  this.SwarmId = data.SwarmId;\n  this.Env = data.Env ? data.Env : [];\n  this.Option = data.Option;\n  this.IsComposeFormat = data.IsComposeFormat;\n\n  if (data.ResourceControl && data.ResourceControl.Id !== 0) {\n    this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.ResourceControl);\n  }\n\n  this.Status = data.Status;\n  this.CreationDate = data.CreationDate;\n  this.CreatedBy = data.CreatedBy;\n  this.UpdateDate = data.UpdateDate;\n  this.UpdatedBy = data.UpdatedBy;\n  this.Regular = true;\n  this.External = false;\n  this.Orphaned = false;\n  this.Checked = false;\n  this.GitConfig = data.GitConfig;\n  this.FromAppTemplate = data.FromAppTemplate;\n  this.AdditionalFiles = data.AdditionalFiles;\n  this.AutoUpdate = data.AutoUpdate;\n}\nfunction ExternalStackViewModel(name, type, creationDate) {\n  this.Name = name;\n  this.Type = type;\n  this.CreationDate = creationDate;\n  this.Regular = false;\n  this.External = true;\n  this.Orphaned = false;\n  this.Checked = false;\n}\nfunction OrphanedStackViewModel(data) {\n  this.Id = data.Id;\n  this.Type = data.Type;\n  this.Name = data.Name;\n  this.EndpointId = data.EndpointId;\n  this.SwarmId = data.SwarmId;\n  this.Env = data.Env ? data.Env : [];\n  this.Option = data.Option;\n\n  if (data.ResourceControl && data.ResourceControl.Id !== 0) {\n    this.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_0__.ResourceControlViewModel(data.ResourceControl);\n  }\n\n  this.Status = data.Status;\n  this.CreationDate = data.CreationDate;\n  this.CreatedBy = data.CreatedBy;\n  this.UpdateDate = data.UpdateDate;\n  this.UpdatedBy = data.UpdatedBy;\n  this.Regular = false;\n  this.External = false;\n  this.Orphaned = true;\n  this.OrphanedRunning = false;\n  this.Checked = false;\n}//# sourceURL=webpack-internal:///49036\n");

}),

95154:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StatusViewModel\": function() { return /* binding */ StatusViewModel; },\n/* harmony export */   \"StatusVersionViewModel\": function() { return /* binding */ StatusVersionViewModel; }\n/* harmony export */ });\nfunction StatusViewModel(data) {\n  this.Authentication = data.Authentication;\n  this.Snapshot = data.Snapshot;\n  this.Version = data.Version;\n  this.Edition = data.Edition;\n  this.InstanceID = data.InstanceID;\n  this.DemoEnvironment = data.DemoEnvironment;\n}\nfunction StatusVersionViewModel(data) {\n  this.UpdateAvailable = data.UpdateAvailable;\n  this.LatestVersion = data.LatestVersion;\n}//# sourceURL=webpack-internal:///95154\n");

}),

26410:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TagViewModel\": function() { return /* binding */ TagViewModel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_escape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/escape */ 3520);\n/* harmony import */ var lodash_es_escape__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_escape__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction TagViewModel(data) {\n  this.Id = data.ID;\n  this.Name = lodash_es_escape__WEBPACK_IMPORTED_MODULE_0___default()(data.Name);\n}//# sourceURL=webpack-internal:///26410\n");

}),

58552:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamViewModel\": function() { return /* binding */ TeamViewModel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_escape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/escape */ 3520);\n/* harmony import */ var lodash_es_escape__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_escape__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction TeamViewModel(data) {\n  this.Id = data.Id;\n  this.Name = lodash_es_escape__WEBPACK_IMPORTED_MODULE_0___default()(data.Name);\n  this.Checked = false;\n}//# sourceURL=webpack-internal:///58552\n");

}),

3010:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TeamMembershipModel\": function() { return /* binding */ TeamMembershipModel; }\n/* harmony export */ });\nfunction TeamMembershipModel(data) {\n  this.Id = data.Id;\n  this.UserId = data.UserID;\n  this.TeamId = data.TeamID;\n  this.Role = data.Role;\n}//# sourceURL=webpack-internal:///3010\n");

}),

55439:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TemplateViewModel\": function() { return /* binding */ TemplateViewModel; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n\n\nclass TemplateViewModel {\n  constructor(data, version) {\n    switch (version) {\n      case '2':\n        this.setTemplatesV2(data);\n        break;\n\n      default:\n        throw new Error('Unsupported template version');\n    }\n  }\n\n  setTemplatesV2(data) {\n    this.Id = data.Id;\n    this.Title = data.title;\n    this.Type = data.type;\n    this.Description = data.description;\n    this.AdministratorOnly = data.AdministratorOnly;\n    this.Name = data.name;\n    this.Note = data.note;\n    this.Categories = data.categories ? data.categories : [];\n    this.Platform = data.platform ? data.platform : '';\n    this.Logo = data.logo;\n    this.Repository = data.repository;\n    this.Hostname = data.hostname;\n    this.RegistryModel = new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_1__.PorImageRegistryModel();\n    this.RegistryModel.Image = data.image;\n    this.RegistryModel.Registry.URL = data.registry || '';\n    this.Command = data.command ? data.command : '';\n    this.Network = data.network ? data.network : '';\n    this.Privileged = data.privileged ? data.privileged : false;\n    this.Interactive = data.interactive ? data.interactive : false;\n    this.RestartPolicy = data.restart_policy ? data.restart_policy : 'always';\n    this.Labels = data.labels ? data.labels : [];\n    this.Hosts = data.hosts ? data.hosts : [];\n    this.Env = templateEnv(data);\n    this.Volumes = templateVolumes(data);\n    this.Ports = templatePorts(data);\n  }\n\n}\n\nfunction templatePorts(data) {\n  var ports = [];\n\n  if (data.ports) {\n    ports = data.ports.map(function (p) {\n      var portAndProtocol = lodash_es_split__WEBPACK_IMPORTED_MODULE_0___default()(p, '/');\n\n      var hostAndContainerPort = lodash_es_split__WEBPACK_IMPORTED_MODULE_0___default()(portAndProtocol[0], ':');\n\n      return {\n        hostPort: hostAndContainerPort.length > 1 ? hostAndContainerPort[0] : undefined,\n        containerPort: hostAndContainerPort.length > 1 ? hostAndContainerPort[1] : hostAndContainerPort[0],\n        protocol: portAndProtocol[1]\n      };\n    });\n  }\n\n  return ports;\n}\n\nfunction templateVolumes(data) {\n  var volumes = [];\n\n  if (data.volumes) {\n    volumes = data.volumes.map(function (v) {\n      return {\n        container: v.container,\n        readonly: v.readonly || false,\n        type: v.bind ? 'bind' : 'auto',\n        bind: v.bind ? v.bind : null\n      };\n    });\n  }\n\n  return volumes;\n}\n\nfunction templateEnv(data) {\n  var env = [];\n\n  if (data.env) {\n    env = data.env.map(function (envvar) {\n      envvar.type = 2;\n      envvar.value = envvar.default ? envvar.default : '';\n\n      if (envvar.preset) {\n        envvar.type = 1;\n      }\n\n      if (envvar.select) {\n        envvar.type = 3;\n\n        for (var i = 0; i < envvar.select.length; i++) {\n          var allowedValue = envvar.select[i];\n\n          if (allowedValue.default) {\n            envvar.value = allowedValue.value;\n            break;\n          }\n        }\n      }\n\n      return envvar;\n    });\n  }\n\n  return env;\n}//# sourceURL=webpack-internal:///55439\n");

}),

90327:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UserViewModel\": function() { return /* binding */ UserViewModel; },\n/* harmony export */   \"UserTokenModel\": function() { return /* binding */ UserTokenModel; }\n/* harmony export */ });\nfunction UserViewModel(data) {\n  this.Id = data.Id;\n  this.Username = data.Username;\n  this.Role = data.Role;\n  this.UserTheme = data.UserTheme;\n\n  if (data.Role === 1) {\n    this.RoleName = 'administrator';\n  } else {\n    this.RoleName = 'user';\n  }\n\n  this.AuthenticationMethod = data.AuthenticationMethod;\n  this.Checked = false;\n  this.EndpointAuthorizations = null;\n  this.PortainerAuthorizations = null;\n}\nfunction UserTokenModel(data) {\n  this.id = data.id;\n  this.userId = data.userId;\n  this.description = data.description;\n  this.prefix = data.prefix;\n  this.dateCreated = data.dateCreated;\n  this.lastUsed = data.lastUsed;\n}//# sourceURL=webpack-internal:///90327\n");

}),

74708:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WebhookViewModel\": function() { return /* binding */ WebhookViewModel; }\n/* harmony export */ });\nfunction WebhookViewModel(data) {\n  this.Id = data.Id;\n  this.Token = data.Token;\n  this.ResourceId = data.ResourceID;\n  this.EndpointId = data.EndpointID;\n  this.WebhookType = data.WebhookType;\n}//# sourceURL=webpack-internal:///74708\n");

}),

77274:

(function() {

eval("angular.module('portainer.oauth', ['ngResource']).constant('API_ENDPOINT_OAUTH', 'api/auth/oauth');//# sourceURL=webpack-internal:///77274\n");

}),

21869:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _oauth_provider_selector_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./oauth-provider-selector.controller */ 14537);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./oauth-providers-selector.html */ 59154);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.oauth').component('oauthProvidersSelector', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    onChange: '<',\n    value: '<'\n  },\n  controller: _oauth_provider_selector_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///21869\n");

}),

14537:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OAuthProviderSelectorController; }\n/* harmony export */ });\n/* harmony import */ var _oauth_options__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./oauth-options */ 51314);\n\nclass OAuthProviderSelectorController {\n  constructor() {\n    this.options = _oauth_options__WEBPACK_IMPORTED_MODULE_0__.options;\n  }\n\n}//# sourceURL=webpack-internal:///14537\n");

}),

10453:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _oauth_settings_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./oauth-settings.controller */ 30152);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./oauth-settings.html */ 11318);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.oauth').component('oauthSettings', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    settings: '=',\n    teams: '<',\n    onSaveSettings: '<',\n    saveButtonState: '<'\n  },\n  controller: _oauth_settings_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///10453\n");

}),

30152:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OAuthSettingsController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _providers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./providers */ 67879);\n\n\n\n\nconst MS_TENANT_ID_PLACEHOLDER = 'TENANT_ID';\nclass OAuthSettingsController {\n  /* @ngInject */\n  constructor($scope) {\n    Object.assign(this, {\n      $scope\n    });\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__.FeatureId.HIDE_INTERNAL_AUTH;\n    this.limitedFeatureClass = 'limited-be';\n    this.state = {\n      provider: 'custom',\n      overrideConfiguration: false,\n      microsoftTenantID: ''\n    };\n    this.$onInit = this.$onInit.bind(this);\n    this.onSelectProvider = this.onSelectProvider.bind(this);\n    this.onMicrosoftTenantIDChange = this.onMicrosoftTenantIDChange.bind(this);\n    this.useDefaultProviderConfiguration = this.useDefaultProviderConfiguration.bind(this);\n    this.updateSSO = this.updateSSO.bind(this);\n    this.addTeamMembershipMapping = this.addTeamMembershipMapping.bind(this);\n    this.removeTeamMembership = this.removeTeamMembership.bind(this);\n    this.onToggleAutoTeamMembership = this.onToggleAutoTeamMembership.bind(this);\n  }\n\n  onMicrosoftTenantIDChange() {\n    const tenantID = this.state.microsoftTenantID || MS_TENANT_ID_PLACEHOLDER;\n    this.settings.AuthorizationURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/authorize`;\n    this.settings.AccessTokenURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/token`;\n    this.settings.ResourceURI = `https://graph.microsoft.com/v1.0/me`;\n    this.settings.LogoutURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/logout`;\n  }\n\n  useDefaultProviderConfiguration(providerId) {\n    const provider = _providers__WEBPACK_IMPORTED_MODULE_3__[\"default\"][providerId];\n    this.state.overrideConfiguration = false;\n\n    if (!this.isLimitedToBE || providerId === 'custom') {\n      this.settings.AuthorizationURI = provider.authUrl;\n      this.settings.AccessTokenURI = provider.accessTokenUrl;\n      this.settings.ResourceURI = provider.resourceUrl;\n      this.settings.LogoutURI = provider.logoutUrl;\n      this.settings.UserIdentifier = provider.userIdentifier;\n      this.settings.Scopes = provider.scopes;\n\n      if (providerId === 'microsoft' && this.state.microsoftTenantID !== '') {\n        this.onMicrosoftTenantIDChange();\n      }\n    } else {\n      this.settings.ClientID = '';\n      this.settings.ClientSecret = '';\n    }\n  }\n\n  onSelectProvider(provider) {\n    this.state.provider = provider;\n    this.useDefaultProviderConfiguration(provider);\n  }\n\n  updateSSO(checked) {\n    this.$scope.$evalAsync(() => {\n      this.settings.SSO = checked;\n      this.onChangeHideInternalAuth(checked);\n    });\n  }\n\n  onChangeHideInternalAuth(checked) {\n    this.$scope.$evalAsync(() => {\n      if (!this.isLimitedToBE) {\n        this.settings.HideInternalAuth = checked;\n      }\n    });\n  }\n\n  onToggleAutoTeamMembership(checked) {\n    this.$scope.$evalAsync(() => {\n      this.settings.OAuthAutoMapTeamMemberships = checked;\n    });\n  }\n\n  addTeamMembershipMapping() {\n    this.settings.TeamMemberships.OAuthClaimMappings.push({\n      ClaimValRegex: '',\n      Team: this.settings.DefaultTeamID\n    });\n  }\n\n  removeTeamMembership(index) {\n    this.settings.TeamMemberships.OAuthClaimMappings.splice(index, 1);\n  }\n\n  isOAuthTeamMembershipFormValid() {\n    if (this.settings.OAuthAutoMapTeamMemberships && this.settings.TeamMemberships) {\n      if (!this.settings.TeamMemberships.OAuthClaimName) {\n        return false;\n      }\n\n      const hasInvalidMapping = this.settings.TeamMemberships.OAuthClaimMappings.some(m => !(m.ClaimValRegex && m.Team));\n\n      if (hasInvalidMapping) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  $onInit() {\n    this.isLimitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_1__.isLimitedToBE)(this.limitedFeature);\n\n    if (this.isLimitedToBE) {\n      return;\n    }\n\n    if (this.settings.RedirectURI === '') {\n      this.settings.RedirectURI = window.location.origin + (0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__.baseHref)();\n    }\n\n    if (this.settings.AuthorizationURI) {\n      const authUrl = this.settings.AuthorizationURI;\n      this.state.provider = (0,_providers__WEBPACK_IMPORTED_MODULE_3__.getProviderByUrl)(authUrl);\n\n      if (this.state.provider === 'microsoft') {\n        const tenantID = authUrl.match(/login.microsoftonline.com\\/(.*?)\\//)[1];\n\n        if (tenantID !== MS_TENANT_ID_PLACEHOLDER) {\n          this.state.microsoftTenantID = tenantID;\n          this.onMicrosoftTenantIDChange();\n        }\n      }\n    }\n\n    if (this.settings.DefaultTeamID === 0) {\n      this.settings.DefaultTeamID = null;\n    }\n\n    if (this.settings.TeamMemberships == null) {\n      this.settings.TeamMemberships = {};\n    }\n\n    if (this.settings.TeamMemberships.OAuthClaimMappings === null) {\n      this.settings.TeamMemberships.OAuthClaimMappings = [];\n    }\n  }\n\n}\nOAuthSettingsController.$inject = [\"$scope\"];//# sourceURL=webpack-internal:///30152\n");

}),

67879:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getProviderByUrl\": function() { return /* binding */ getProviderByUrl; }\n/* harmony export */ });\n/* harmony import */ var _portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/pathHelper */ 50433);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  microsoft: {\n    authUrl: 'https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize',\n    accessTokenUrl: 'https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token',\n    resourceUrl: 'https://graph.microsoft.com/v1.0/me',\n    logoutUrl: `https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/logout`,\n    userIdentifier: 'userPrincipalName',\n    scopes: 'profile openid'\n  },\n  google: {\n    authUrl: 'https://accounts.google.com/o/oauth2/auth',\n    accessTokenUrl: 'https://accounts.google.com/o/oauth2/token',\n    resourceUrl: 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json',\n    logoutUrl: `https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=${window.location.origin}${(0,_portainer_helpers_pathHelper__WEBPACK_IMPORTED_MODULE_0__.baseHref)()}#!/auth`,\n    userIdentifier: 'email',\n    scopes: 'profile email'\n  },\n  github: {\n    authUrl: 'https://github.com/login/oauth/authorize',\n    accessTokenUrl: 'https://github.com/login/oauth/access_token',\n    resourceUrl: 'https://api.github.com/user',\n    logoutUrl: `https://github.com/logout`,\n    userIdentifier: 'login',\n    scopes: 'id email name'\n  },\n  custom: {\n    authUrl: '',\n    accessTokenUrl: '',\n    resourceUrl: '',\n    logoutUrl: '',\n    userIdentifier: '',\n    scopes: ''\n  }\n});\nfunction getProviderByUrl(providerAuthURL = '') {\n  if (providerAuthURL.includes('login.microsoftonline.com')) {\n    return 'microsoft';\n  }\n\n  if (providerAuthURL.includes('accounts.google.com')) {\n    return 'google';\n  }\n\n  if (providerAuthURL.includes('github.com')) {\n    return 'github';\n  }\n\n  return 'custom';\n}//# sourceURL=webpack-internal:///67879\n");

}),

18152:

(function() {

eval("angular.module('portainer.oauth').factory('OAuth', ['$resource', 'API_ENDPOINT_OAUTH', function OAuthFactory($resource, API_ENDPOINT_OAUTH) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_OAUTH + '/:action', {}, {\n    validate: {\n      method: 'POST',\n      ignoreLoadingBar: true,\n      params: {\n        action: 'validate'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///18152\n");

}),

3589:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"accessViewerDatatable\": function() { return /* binding */ accessViewerDatatable; }\n/* harmony export */ });\n/* harmony import */ var _access_viewer_datatable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./access-viewer-datatable.css */ 80030);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./access-viewer-datatable.html */ 27707);\n\n\nconst accessViewerDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    tableKey: '@',\n    orderBy: '@',\n    dataset: '<',\n    isAdmin: '<'\n  }\n};//# sourceURL=webpack-internal:///3589\n");

}),

79657:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AccessViewerController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/keyBy */ 22937);\n/* harmony import */ var lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_first__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/first */ 6806);\n/* harmony import */ var lodash_es_first__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_first__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/values */ 68582);\n/* harmony import */ var lodash_es_values__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_values__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_entries__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/entries */ 82549);\n/* harmony import */ var lodash_es_entries__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_entries__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _models_access__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../models/access */ 82853);\n\n\n\n\n\n\n\n\n\n\n\nclass AccessViewerController {\n  /* @ngInject */\n  constructor($scope, Notifications, RoleService, UserService, GroupService, TeamService, TeamMembershipService, Authentication) {\n    this.$scope = $scope;\n    this.Notifications = Notifications;\n    this.RoleService = RoleService;\n    this.UserService = UserService;\n    this.GroupService = GroupService;\n    this.TeamService = TeamService;\n    this.TeamMembershipService = TeamMembershipService;\n    this.Authentication = Authentication;\n    this.limitedFeature = 'rbac-roles';\n    this.users = [];\n    this.selectedUserId = null;\n    this.onUserSelect = this.onUserSelect.bind(this);\n  }\n\n  onUserSelect(selectedUserId) {\n    this.$scope.$evalAsync(() => {\n      this.userRoles = [];\n      this.selectedUserId = selectedUserId;\n      const userRoles = {};\n      const user = this.allUsers.find(user => user.Id === selectedUserId);\n\n      if (!user) {\n        throw new Error('User not found');\n      }\n\n      const userMemberships = lodash_es_filter__WEBPACK_IMPORTED_MODULE_7___default()(this.teamMemberships, {\n        UserId: user.Id\n      });\n\n      for (const [, endpoint] of lodash_es_entries__WEBPACK_IMPORTED_MODULE_6___default()(this.endpoints)) {\n        let role = this.getRoleFromUserEndpointPolicy(user, endpoint);\n\n        if (role) {\n          userRoles[endpoint.Id] = role;\n          continue;\n        }\n\n        role = this.getRoleFromUserEndpointGroupPolicy(user, endpoint);\n\n        if (role) {\n          userRoles[endpoint.Id] = role;\n          continue;\n        }\n\n        role = this.getRoleFromTeamEndpointPolicies(userMemberships, endpoint);\n\n        if (role) {\n          userRoles[endpoint.Id] = role;\n          continue;\n        }\n\n        role = this.getRoleFromTeamEndpointGroupPolicies(userMemberships, endpoint);\n\n        if (role) {\n          userRoles[endpoint.Id] = role;\n        }\n      }\n\n      this.userRoles = lodash_es_values__WEBPACK_IMPORTED_MODULE_5___default()(userRoles);\n    });\n  }\n\n  findLowestRole(policies) {\n    return lodash_es_first__WEBPACK_IMPORTED_MODULE_4___default()(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_3___default()(policies, 'RolePriority', 'desc'));\n  }\n\n  getRoleFromUserEndpointPolicy(user, endpoint) {\n    const policyRoles = [];\n    const policy = (endpoint.UserAccessPolicies || {})[user.Id];\n\n    if (policy) {\n      const accessPolicy = new _models_access__WEBPACK_IMPORTED_MODULE_10__[\"default\"](policy, endpoint, this.roles, null, null);\n      policyRoles.push(accessPolicy);\n    }\n\n    return this.findLowestRole(policyRoles);\n  }\n\n  getRoleFromUserEndpointGroupPolicy(user, endpoint) {\n    const policyRoles = [];\n    const policy = this.groupUserAccessPolicies[endpoint.GroupId][user.Id];\n\n    if (policy) {\n      const accessPolicy = new _models_access__WEBPACK_IMPORTED_MODULE_10__[\"default\"](policy, endpoint, this.roles, this.groups[endpoint.GroupId], null);\n      policyRoles.push(accessPolicy);\n    }\n\n    return this.findLowestRole(policyRoles);\n  }\n\n  getRoleFromTeamEndpointPolicies(memberships, endpoint) {\n    const policyRoles = [];\n\n    for (const membership of memberships) {\n      const policy = (endpoint.TeamAccessPolicies || {})[membership.TeamId];\n\n      if (policy) {\n        const accessPolicy = new _models_access__WEBPACK_IMPORTED_MODULE_10__[\"default\"](policy, endpoint, this.roles, null, this.teams[membership.TeamId]);\n        policyRoles.push(accessPolicy);\n      }\n    }\n\n    return this.findLowestRole(policyRoles);\n  }\n\n  getRoleFromTeamEndpointGroupPolicies(memberships, endpoint) {\n    const policyRoles = [];\n\n    for (const membership of memberships) {\n      const policy = this.groupTeamAccessPolicies[endpoint.GroupId][membership.TeamId];\n\n      if (policy) {\n        const accessPolicy = new _models_access__WEBPACK_IMPORTED_MODULE_10__[\"default\"](policy, endpoint, this.roles, this.groups[endpoint.GroupId], this.teams[membership.TeamId]);\n        policyRoles.push(accessPolicy);\n      }\n    }\n\n    return this.findLowestRole(policyRoles);\n  } // for admin, returns all users\n  // for team leader, only return all his/her team member users\n\n\n  async teamMemberUsers(users, teamMemberships) {\n    if (this.isAdmin) {\n      return users;\n    }\n\n    const filteredUsers = [];\n    const userId = this.Authentication.getUserDetails().ID;\n    const leadingTeams = await this.UserService.userLeadingTeams(userId);\n\n    const isMember = (userId, teamId) => {\n      return !!lodash_es_find__WEBPACK_IMPORTED_MODULE_2___default()(teamMemberships, {\n        UserId: userId,\n        TeamId: teamId\n      });\n    };\n\n    for (const user of users) {\n      for (const leadingTeam of leadingTeams) {\n        if (isMember(user.Id, leadingTeam.Id)) {\n          filteredUsers.push(user);\n          break;\n        }\n      }\n    }\n\n    return filteredUsers;\n  }\n\n  async $onInit() {\n    try {\n      const limitedToBE = (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_8__.isLimitedToBE)(this.limitedFeature);\n\n      if (limitedToBE) {\n        return;\n      }\n\n      this.isAdmin = this.Authentication.isAdmin();\n      this.allUsers = await this.UserService.users();\n      this.endpoints = lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1___default()((await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_9__.getEnvironments)()).value, 'Id');\n      const groups = await this.GroupService.groups();\n      this.groupUserAccessPolicies = {};\n      this.groupTeamAccessPolicies = {};\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(groups, group => {\n        this.groupUserAccessPolicies[group.Id] = group.UserAccessPolicies;\n        this.groupTeamAccessPolicies[group.Id] = group.TeamAccessPolicies;\n      });\n\n      this.groups = lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1___default()(groups, 'Id');\n      this.roles = lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1___default()(await this.RoleService.roles(), 'Id');\n      this.teams = lodash_es_keyBy__WEBPACK_IMPORTED_MODULE_1___default()(await this.TeamService.teams(), 'Id');\n      this.teamMemberships = await this.TeamMembershipService.memberships();\n      const teamUsers = await this.teamMemberUsers(this.allUsers, this.teamMemberships);\n      this.users = teamUsers.map(user => ({\n        label: user.Username,\n        value: user.Id\n      }));\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve accesses');\n    }\n  }\n\n}\nAccessViewerController.$inject = [\"$scope\", \"Notifications\", \"RoleService\", \"UserService\", \"GroupService\", \"TeamService\", \"TeamMembershipService\", \"Authentication\"];//# sourceURL=webpack-internal:///79657\n");

}),

87208:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"accessViewer\": function() { return /* binding */ accessViewer; }\n/* harmony export */ });\n/* harmony import */ var _access_viewer_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./access-viewer.controller */ 79657);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./access-viewer.html */ 98538);\n\n\nconst accessViewer = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _access_viewer_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///87208\n");

}),

77181:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rolesDatatable\": function() { return /* binding */ rolesDatatable; }\n/* harmony export */ });\n/* harmony import */ var _roles_datatable_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./roles-datatable.controller */ 15560);\n/* harmony import */ var _roles_datatable_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./roles-datatable.css */ 69661);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./roles-datatable.html */ 71450);\n\n\n\nconst rolesDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _roles_datatable_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n};//# sourceURL=webpack-internal:///77181\n");

}),

15560:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ RolesDatatableController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_role__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../models/role */ 61969);\n\n\nclass RolesDatatableController {\n  /* @ngInject */\n  constructor($controller, $scope) {\n    this.limitedFeature = 'rbac-roles';\n    angular__WEBPACK_IMPORTED_MODULE_0___default().extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n  }\n\n  isDefaultItem(item) {\n    return item.ID === _models_role__WEBPACK_IMPORTED_MODULE_1__.RoleTypes.STANDARD;\n  }\n\n}\nRolesDatatableController.$inject = [\"$controller\", \"$scope\"];//# sourceURL=webpack-internal:///15560\n");

}),

35552:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _views_roles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./views/roles */ 93239);\n/* harmony import */ var _components_access_viewer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/access-viewer */ 87208);\n/* harmony import */ var _components_access_viewer_access_viewer_datatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/access-viewer/access-viewer-datatable */ 3589);\n/* harmony import */ var _components_roles_datatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/roles-datatable */ 77181);\n/* harmony import */ var _services_role_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./services/role.service */ 70055);\n/* harmony import */ var _services_role_rest__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./services/role.rest */ 37838);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n\n\nangular.module('portainer.rbac', ['ngResource']).constant('API_ENDPOINT_ROLES', 'api/roles').component('accessViewer', _components_access_viewer__WEBPACK_IMPORTED_MODULE_1__.accessViewer).component('accessViewerDatatable', _components_access_viewer_access_viewer_datatable__WEBPACK_IMPORTED_MODULE_2__.accessViewerDatatable).component('rolesDatatable', _components_roles_datatable__WEBPACK_IMPORTED_MODULE_3__.rolesDatatable).component('rolesView', _views_roles__WEBPACK_IMPORTED_MODULE_0__.rolesView).factory('RoleService', _services_role_service__WEBPACK_IMPORTED_MODULE_4__.RoleService).factory('Roles', _services_role_rest__WEBPACK_IMPORTED_MODULE_5__.RolesFactory).config(config);\n/* @ngInject */\n\nfunction config($stateRegistryProvider) {\n  const roles = {\n    name: 'portainer.roles',\n    url: '/roles',\n    views: {\n      'content@': {\n        component: 'rolesView'\n      }\n    }\n  };\n  $stateRegistryProvider.register(roles);\n}//# sourceURL=webpack-internal:///35552\n");

}),

82853:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AccessViewerPolicyModel; }\n/* harmony export */ });\nfunction AccessViewerPolicyModel(policy, endpoint, roles, group, team) {\n  this.EndpointId = endpoint.Id;\n  this.EndpointName = endpoint.Name;\n  this.RoleId = policy.RoleId;\n  this.RoleName = roles[policy.RoleId].Name;\n  this.RolePriority = roles[policy.RoleId].Priority;\n\n  if (group) {\n    this.GroupId = group.Id;\n    this.GroupName = group.Name;\n  }\n\n  if (team) {\n    this.TeamId = team.Id;\n    this.TeamName = team.Name;\n  }\n\n  this.AccessLocation = group ? 'environment group' : 'environment';\n}//# sourceURL=webpack-internal:///82853\n");

}),

61969:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoleViewModel\": function() { return /* binding */ RoleViewModel; },\n/* harmony export */   \"RoleTypes\": function() { return /* binding */ RoleTypes; }\n/* harmony export */ });\nfunction RoleViewModel(id, name, description, authorizations) {\n  this.ID = id;\n  this.Name = name;\n  this.Description = description;\n  this.Authorizations = authorizations;\n}\nconst RoleTypes = Object.freeze({\n  ENDPOINT_ADMIN: 1,\n  HELPDESK: 2,\n  STANDARD: 3,\n  READ_ONLY: 4,\n  OPERATOR: 5\n});//# sourceURL=webpack-internal:///61969\n");

}),

37838:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RolesFactory\": function() { return /* binding */ RolesFactory; }\n/* harmony export */ });\nRolesFactory.$inject = [\"$resource\", \"API_ENDPOINT_ROLES\"];\n\n/* @ngInject */\nfunction RolesFactory($resource, API_ENDPOINT_ROLES) {\n  return $resource(API_ENDPOINT_ROLES + '/:id', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///37838\n");

}),

70055:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoleService\": function() { return /* binding */ RoleService; }\n/* harmony export */ });\n/* harmony import */ var _models_role__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/role */ 61969);\n\nfunction RoleService() {\n  const rolesData = [new _models_role__WEBPACK_IMPORTED_MODULE_0__.RoleViewModel(_models_role__WEBPACK_IMPORTED_MODULE_0__.RoleTypes.ENDPOINT_ADMIN, 'Environment administrator', '完全控制环境中的所有资源', []), new _models_role__WEBPACK_IMPORTED_MODULE_0__.RoleViewModel(_models_role__WEBPACK_IMPORTED_MODULE_0__.RoleTypes.OPERATOR, 'Operator', '环境中所有现有资源的运营控制', []), new _models_role__WEBPACK_IMPORTED_MODULE_0__.RoleViewModel(_models_role__WEBPACK_IMPORTED_MODULE_0__.RoleTypes.HELPDESK, 'Helpdesk', '环境中所有资源的只读访问', []), new _models_role__WEBPACK_IMPORTED_MODULE_0__.RoleViewModel(_models_role__WEBPACK_IMPORTED_MODULE_0__.RoleTypes.READ_ONLY, 'Read-only user', '环境中分配资源的只读访问', []), new _models_role__WEBPACK_IMPORTED_MODULE_0__.RoleViewModel(_models_role__WEBPACK_IMPORTED_MODULE_0__.RoleTypes.STANDARD, 'Standard user', '完全控制环境中的分配资源', [])];\n  return {\n    roles\n  };\n\n  function roles() {\n    return rolesData;\n  }\n}//# sourceURL=webpack-internal:///70055\n");

}),

93239:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rolesView\": function() { return /* binding */ rolesView; }\n/* harmony export */ });\n/* harmony import */ var _roles_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./roles.controller */ 60090);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./roles.html */ 49458);\n\n\nconst rolesView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _roles_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///93239\n");

}),

60090:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ RolesController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n\nclass RolesController {\n  /* @ngInject */\n  constructor(Notifications, RoleService) {\n    this.Notifications = Notifications;\n    this.RoleService = RoleService;\n  }\n\n  async $onInit() {\n    this.roles = [];\n\n    try {\n      this.roles = await this.RoleService.roles();\n      this.roles = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(this.roles, 'Priority', 'asc');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve roles');\n    }\n  }\n\n}\nRolesController.$inject = [\"Notifications\", \"RoleService\"];//# sourceURL=webpack-internal:///60090\n");

}),

95599:

(function() {

eval("angular.module('portainer.app').factory('Auth', ['$resource', 'API_ENDPOINT_AUTH', function AuthFactory($resource, API_ENDPOINT_AUTH) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_AUTH + '/:action', {}, {\n    login: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    logout: {\n      method: 'POST',\n      params: {\n        action: 'logout'\n      },\n      ignoreLoadingBar: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///95599\n");

}),

59987:

(function() {

eval("angular.module('portainer.app').factory('Backup', ['$resource', 'API_ENDPOINT_BACKUP', function BackupFactory($resource, API_ENDPOINT_BACKUP) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_BACKUP + '/:subResource/:action', {}, {\n    download: {\n      method: 'POST',\n      responseType: 'arraybuffer',\n      ignoreLoadingBar: true,\n      transformResponse: (data, headersGetter, status) => {\n        if (status !== 200) {\n          const decoder = new TextDecoder('utf-8');\n          const str = decoder.decode(data);\n          return JSON.parse(str);\n        }\n\n        return {\n          file: data,\n          name: headersGetter('Content-Disposition').replace('attachment; filename=', '')\n        };\n      }\n    },\n    getS3Settings: {\n      method: 'GET',\n      params: {\n        subResource: 's3',\n        action: 'settings'\n      }\n    },\n    saveS3Settings: {\n      method: 'POST',\n      params: {\n        subResource: 's3',\n        action: 'settings'\n      }\n    },\n    exportS3Backup: {\n      method: 'POST',\n      params: {\n        subResource: 's3',\n        action: 'execute'\n      }\n    },\n    restoreS3Backup: {\n      method: 'POST',\n      params: {\n        subResource: 's3',\n        action: 'restore'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///59987\n");

}),

92179:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nCustomTemplatesFactory.$inject = [\"$resource\", \"API_ENDPOINT_CUSTOM_TEMPLATES\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('CustomTemplates', CustomTemplatesFactory);\n\nfunction CustomTemplatesFactory($resource, API_ENDPOINT_CUSTOM_TEMPLATES) {\n  return $resource(API_ENDPOINT_CUSTOM_TEMPLATES + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    file: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'file'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///92179\n");

}),

50947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_getEndpointsTotalCount__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform/getEndpointsTotalCount */ 28098);\n\nangular.module('portainer.app').factory('Endpoints', ['$resource', 'API_ENDPOINT_ENDPOINTS', function EndpointsFactory($resource, API_ENDPOINT_ENDPOINTS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINTS + '/:id/:action', {}, {\n    query: {\n      method: 'GET',\n      params: {\n        start: '@start',\n        limit: '@limit',\n        search: '@search',\n        groupId: '@groupId'\n      },\n      transformResponse: _transform_getEndpointsTotalCount__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    disassociate: {\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        action: 'association'\n      }\n    },\n    updateAccess: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        action: 'access'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    snapshots: {\n      method: 'POST',\n      params: {\n        action: 'snapshot'\n      }\n    },\n    snapshot: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'snapshot'\n      }\n    },\n    status: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'status'\n      }\n    },\n    updateSecuritySettings: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        action: 'settings'\n      }\n    },\n    dockerhubLimits: {\n      method: 'GET',\n      url: `${API_ENDPOINT_ENDPOINTS}/:id/dockerhub/:registryId`\n    },\n    registries: {\n      method: 'GET',\n      url: `${API_ENDPOINT_ENDPOINTS}/:id/registries`,\n      params: {\n        id: '@id',\n        namespace: '@namespace'\n      },\n      isArray: true\n    },\n    updateRegistryAccess: {\n      method: 'PUT',\n      url: `${API_ENDPOINT_ENDPOINTS}/:id/registries/:registryId`,\n      params: {\n        id: '@id',\n        registryId: '@registryId'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///50947\n");

}),

48664:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_gitlabResponseGetLink__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform/gitlabResponseGetLink */ 40432);\n\nangular.module('portainer.app').factory('Gitlab', ['$resource', 'API_ENDPOINT_REGISTRIES', function GitlabFactory($resource, API_ENDPOINT_REGISTRIES) {\n  'use strict';\n\n  return function (env) {\n    const headers = {};\n\n    if (env) {\n      headers['Private-Token'] = env.token;\n      headers['X-Gitlab-Domain'] = env.url;\n    }\n\n    const baseUrl = API_ENDPOINT_REGISTRIES + '/:id/proxies/gitlab/api/v4/projects';\n    return $resource(baseUrl, {\n      id: '@id'\n    }, {\n      projects: {\n        method: 'GET',\n        params: {\n          membership: 'true'\n        },\n        transformResponse: _transform_gitlabResponseGetLink__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n        headers: headers\n      },\n      repositories: {\n        method: 'GET',\n        url: baseUrl + '/:projectId/registry/repositories',\n        params: {\n          tags: true\n        },\n        headers: headers,\n        transformResponse: _transform_gitlabResponseGetLink__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n      }\n    });\n  };\n}]);//# sourceURL=webpack-internal:///48664\n");

}),

41019:

(function() {

eval("angular.module('portainer.app').factory('EndpointGroups', ['$resource', 'API_ENDPOINT_ENDPOINT_GROUPS', function EndpointGroupsFactory($resource, API_ENDPOINT_ENDPOINT_GROUPS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_ENDPOINT_GROUPS + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    updateAccess: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        action: 'access'\n      }\n    },\n    addEndpoint: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        action: '@action'\n      }\n    },\n    removeEndpoint: {\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        action: '@action'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///41019\n");

}),

26911:

(function() {

eval("angular.module('portainer.app').factory('Registries', ['$resource', 'API_ENDPOINT_REGISTRIES', function RegistriesFactory($resource, API_ENDPOINT_REGISTRIES) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_REGISTRIES + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: '',\n        endpointId: '@endpointId'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    configure: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'configure'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///26911\n");

}),

9095:

(function() {

eval("angular.module('portainer.app').factory('ResourceControl', ['$resource', 'API_ENDPOINT_RESOURCE_CONTROLS', function ResourceControlFactory($resource, API_ENDPOINT_RESOURCE_CONTROLS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_RESOURCE_CONTROLS + '/:id', {}, {\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///9095\n");

}),

26862:

(function() {

eval("angular.module('portainer.app').factory('Settings', ['$resource', 'API_ENDPOINT_SETTINGS', function SettingsFactory($resource, API_ENDPOINT_SETTINGS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_SETTINGS + '/:subResource/:action', {}, {\n    get: {\n      method: 'GET'\n    },\n    update: {\n      method: 'PUT',\n      ignoreLoadingBar: true\n    },\n    publicSettings: {\n      method: 'GET',\n      params: {\n        subResource: 'public'\n      },\n      ignoreLoadingBar: true\n    },\n    checkLDAPConnectivity: {\n      method: 'PUT',\n      params: {\n        subResource: 'authentication',\n        action: 'checkLDAP'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///26862\n");

}),

33729:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nSSLFactory.$inject = [\"$resource\"];\n\nconst API_ENDPOINT_SSL = 'api/ssl';\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('SSL', SSLFactory);\n/* @ngInject */\n\nfunction SSLFactory($resource) {\n  return $resource(API_ENDPOINT_SSL, {}, {\n    get: {\n      method: 'GET'\n    },\n    upload: {\n      method: 'PUT'\n    }\n  });\n}//# sourceURL=webpack-internal:///33729\n");

}),

84006:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nStackFactory.$inject = [\"$resource\", \"API_ENDPOINT_STACKS\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('Stack', StackFactory);\n/* @ngInject */\n\nfunction StackFactory($resource, API_ENDPOINT_STACKS) {\n  return $resource(API_ENDPOINT_STACKS + '/:id/:action/:subaction', {}, {\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      },\n      ignoreLoadingBar: true\n    },\n    associate: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        swarmId: '@swarmId',\n        endpointId: '@endpointId',\n        orphanedRunning: '@orphanedRunning',\n        action: 'associate'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        external: '@external',\n        endpointId: '@endpointId'\n      }\n    },\n    getStackFile: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        action: 'file'\n      }\n    },\n    migrate: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'migrate',\n        endpointId: '@endpointId'\n      },\n      ignoreLoadingBar: true\n    },\n    start: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'start'\n      }\n    },\n    stop: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'stop'\n      }\n    },\n    updateGit: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        action: 'git',\n        subaction: 'redeploy'\n      }\n    },\n    updateGitStackSettings: {\n      method: 'POST',\n      params: {\n        id: '@id',\n        action: 'git'\n      },\n      ignoreLoadingBar: true\n    }\n  });\n}//# sourceURL=webpack-internal:///84006\n");

}),

1962:

(function() {

eval("angular.module('portainer.app').factory('Status', ['$resource', 'API_ENDPOINT_STATUS', function StatusFactory($resource, API_ENDPOINT_STATUS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_STATUS + '/:action', {}, {\n    get: {\n      method: 'GET'\n    },\n    version: {\n      method: 'GET',\n      params: {\n        action: 'version'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///1962\n");

}),

3985:

(function() {

eval("angular.module('portainer.app').factory('Support', ['$resource', 'API_ENDPOINT_SUPPORT', function SupportFactory($resource, API_ENDPOINT_SUPPORT) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_SUPPORT, {}, {\n    get: {\n      method: 'GET',\n      isArray: true\n    }\n  });\n}]);//# sourceURL=webpack-internal:///3985\n");

}),

69586:

(function() {

eval("angular.module('portainer.app').factory('Tags', ['$resource', 'API_ENDPOINT_TAGS', function TagsFactory($resource, API_ENDPOINT_TAGS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_TAGS + '/:id', {}, {\n    create: {\n      method: 'POST'\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///69586\n");

}),

51406:

(function() {

eval("angular.module('portainer.app').factory('Teams', ['$resource', 'API_ENDPOINT_TEAMS', function TeamsFactory($resource, API_ENDPOINT_TEAMS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_TEAMS + '/:id/:entity/:entityId', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        environmentId: '@environmentId'\n      }\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    queryMemberships: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        id: '@id',\n        entity: 'memberships'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///51406\n");

}),

63027:

(function() {

eval("angular.module('portainer.app').factory('TeamMemberships', ['$resource', 'API_ENDPOINT_TEAM_MEMBERSHIPS', function TeamMembershipsFactory($resource, API_ENDPOINT_TEAM_MEMBERSHIPS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_TEAM_MEMBERSHIPS + '/:id/:action', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///63027\n");

}),

35627:

(function() {

eval("angular.module('portainer.app').factory('Templates', ['$resource', 'API_ENDPOINT_TEMPLATES', function TemplatesFactory($resource, API_ENDPOINT_TEMPLATES) {\n  return $resource(API_ENDPOINT_TEMPLATES + '/:action', {}, {\n    query: {\n      method: 'GET'\n    },\n    file: {\n      method: 'POST',\n      params: {\n        action: 'file'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///35627\n");

}),

28098:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getEndpointsTotalCount; }\n/* harmony export */ });\nfunction getEndpointsTotalCount(data, headers) {\n  const response = {};\n  response.value = angular.fromJson(data);\n  response.totalCount = headers('X-Total-Count');\n  return response;\n}//# sourceURL=webpack-internal:///28098\n");

}),

40432:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ gitlabResponseGetLink; }\n/* harmony export */ });\nfunction gitlabResponseGetLink(data, headers) {\n  let response = {};\n\n  try {\n    response.data = angular.fromJson(data);\n    response.next = headers('X-Next-Page');\n  } catch (error) {\n    response = data;\n  }\n\n  return response;\n}//# sourceURL=webpack-internal:///40432\n");

}),

88211:

(function() {

eval("angular.module('portainer.app').factory('Users', ['$resource', 'API_ENDPOINT_USERS', function UsersFactory($resource, API_ENDPOINT_USERS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_USERS + '/:id/:entity/:entityId', {}, {\n    create: {\n      method: 'POST',\n      ignoreLoadingBar: true\n    },\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    get: {\n      method: 'GET',\n      params: {\n        id: '@id'\n      }\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      },\n      ignoreLoadingBar: true\n    },\n    updatePassword: {\n      method: 'PUT',\n      params: {\n        id: '@id',\n        entity: 'passwd'\n      }\n    },\n    updateTheme: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    },\n    queryMemberships: {\n      method: 'GET',\n      isArray: true,\n      params: {\n        id: '@id',\n        entity: 'memberships'\n      }\n    },\n    checkAdminUser: {\n      method: 'GET',\n      params: {\n        id: 'admin',\n        entity: 'check'\n      },\n      isArray: true,\n      ignoreLoadingBar: true\n    },\n    initAdminUser: {\n      method: 'POST',\n      params: {\n        id: 'admin',\n        entity: 'init'\n      },\n      ignoreLoadingBar: true\n    },\n    createAccessToken: {\n      url: `${API_ENDPOINT_USERS}/:id/tokens`,\n      method: 'POST',\n      params: {\n        id: '@id'\n      },\n      ignoreLoadingBar: true\n    },\n    getAccessTokens: {\n      method: 'GET',\n      params: {\n        id: '@id',\n        entity: 'tokens'\n      },\n      isArray: true\n    },\n    deleteAccessToken: {\n      url: `${API_ENDPOINT_USERS}/:id/tokens/:tokenId`,\n      method: 'DELETE',\n      params: {\n        id: '@id',\n        entityId: '@tokenId'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///88211\n");

}),

1587:

(function() {

eval("angular.module('portainer.app').factory('Webhooks', ['$resource', 'API_ENDPOINT_WEBHOOKS', function WebhooksFactory($resource, API_ENDPOINT_WEBHOOKS) {\n  'use strict';\n\n  return $resource(API_ENDPOINT_WEBHOOKS + '/:id', {}, {\n    query: {\n      method: 'GET',\n      isArray: true\n    },\n    create: {\n      method: 'POST'\n    },\n    update: {\n      method: 'PUT',\n      params: {\n        id: '@id'\n      }\n    },\n    remove: {\n      method: 'DELETE',\n      params: {\n        id: '@id'\n      }\n    }\n  });\n}]);//# sourceURL=webpack-internal:///1587\n");

}),

67808:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ $allSettled; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/reduce */ 55743);\n/* harmony import */ var lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n *\n * @param {any[]} promises\n */\nasync function $allSettled(promises) {\n  const res = {\n    fulfilled: [],\n    rejected: []\n  };\n  const data = await Promise.allSettled(promises);\n  res.fulfilled = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(data, (acc, item) => {\n    if (item.status === 'fulfilled') {\n      acc.push(item.value);\n    }\n\n    return acc;\n  }, []);\n  res.rejected = lodash_es_reduce__WEBPACK_IMPORTED_MODULE_0___default()(data, (acc, item) => {\n    if (item.status === 'rejected') {\n      acc.push(item.reason);\n    }\n\n    return acc;\n  }, []);\n  return res;\n}//# sourceURL=webpack-internal:///67808\n");

}),

84522:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/clone */ 91195);\n/* harmony import */ var lodash_es_clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_clone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _models_access__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../models/access */ 93133);\n\n\n\n\nangular.module('portainer.app').factory('AccessService', ['$q', '$async', 'UserService', 'TeamService', function AccessServiceFactory($q, $async, UserService, TeamService) {\n  'use strict';\n\n  return {\n    accesses,\n    generateAccessPolicies\n  };\n\n  function _mapAccessData(accesses, authorizedPolicies, inheritedPolicies) {\n    var availableAccesses = [];\n    var authorizedAccesses = [];\n\n    for (var i = 0; i < accesses.length; i++) {\n      const access = accesses[i];\n      const authorized = authorizedPolicies && authorizedPolicies[access.Id];\n      const inherited = inheritedPolicies && inheritedPolicies[access.Id];\n\n      if (authorized && inherited) {\n        access.Override = true;\n        authorizedAccesses.push(access);\n      } else if (authorized && !inherited) {\n        authorizedAccesses.push(access);\n      } else if (!authorized && inherited) {\n        access.Inherited = true;\n        authorizedAccesses.push(access);\n        availableAccesses.push(access);\n      } else {\n        availableAccesses.push(access);\n      }\n    }\n\n    return {\n      available: availableAccesses,\n      authorized: authorizedAccesses\n    };\n  }\n\n  function getAccesses(authorizedUserPolicies, authorizedTeamPolicies, inheritedUserPolicies, inheritedTeamPolicies) {\n    var deferred = $q.defer();\n    $q.all({\n      users: UserService.users(false),\n      teams: TeamService.teams()\n    }).then(function success(data) {\n      var userAccesses = data.users.map(function (user) {\n        return new _models_access__WEBPACK_IMPORTED_MODULE_2__.UserAccessViewModel(user);\n      });\n      var teamAccesses = data.teams.map(function (team) {\n        return new _models_access__WEBPACK_IMPORTED_MODULE_2__.TeamAccessViewModel(team);\n      });\n\n      var userAccessData = _mapAccessData(userAccesses, authorizedUserPolicies, inheritedUserPolicies);\n\n      var teamAccessData = _mapAccessData(teamAccesses, authorizedTeamPolicies, inheritedTeamPolicies);\n\n      var accessData = {\n        availableUsersAndTeams: userAccessData.available.concat(teamAccessData.available),\n        authorizedUsersAndTeams: userAccessData.authorized.concat(teamAccessData.authorized)\n      };\n      deferred.resolve(accessData);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve users and teams',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  async function accessesAsync(entity, parent) {\n    if (!entity) {\n      throw new Error('Unable to retrieve accesses');\n    }\n\n    if (!entity.UserAccessPolicies) {\n      entity.UserAccessPolicies = {};\n    }\n\n    if (!entity.TeamAccessPolicies) {\n      entity.TeamAccessPolicies = {};\n    }\n\n    if (parent && !parent.UserAccessPolicies) {\n      parent.UserAccessPolicies = {};\n    }\n\n    if (parent && !parent.TeamAccessPolicies) {\n      parent.TeamAccessPolicies = {};\n    }\n\n    return await getAccesses(entity.UserAccessPolicies, entity.TeamAccessPolicies, parent ? parent.UserAccessPolicies : {}, parent ? parent.TeamAccessPolicies : {});\n  }\n\n  function accesses(entity, parent) {\n    return $async(accessesAsync, entity, parent);\n  }\n\n  function generateAccessPolicies(userAccessPolicies, teamAccessPolicies, selectedUserAccesses, selectedTeamAccesses, selectedRoleId) {\n    const newUserPolicies = lodash_es_clone__WEBPACK_IMPORTED_MODULE_1___default()(userAccessPolicies);\n\n    const newTeamPolicies = lodash_es_clone__WEBPACK_IMPORTED_MODULE_1___default()(teamAccessPolicies);\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(selectedUserAccesses, access => newUserPolicies[access.Id] = {\n      RoleId: selectedRoleId ? selectedRoleId : access.Role.Id\n    });\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_0___default()(selectedTeamAccesses, access => newTeamPolicies[access.Id] = {\n      RoleId: selectedRoleId ? selectedRoleId : access.Role.Id\n    });\n\n    const accessPolicies = {\n      userAccessPolicies: newUserPolicies,\n      teamAccessPolicies: newTeamPolicies\n    };\n    return accessPolicies;\n  }\n}]);//# sourceURL=webpack-internal:///84522\n");

}),

10273:

(function() {

eval("angular.module('portainer.app').factory('BackupService', ['$q', '$async', 'Backup', 'FileUploadService', function BackupServiceFactory($q, $async, Backup, FileUploadService) {\n  'use strict';\n\n  const service = {};\n\n  service.downloadBackup = function (payload) {\n    return Backup.download({}, payload).$promise;\n  };\n\n  service.uploadBackup = function (file, password) {\n    return FileUploadService.uploadBackup(file, password);\n  };\n\n  service.getS3Settings = function () {\n    var deferred = $q.defer();\n    Backup.getS3Settings().$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve backup S3 settings',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.saveS3Settings = function (payload) {\n    var deferred = $q.defer();\n    Backup.saveS3Settings({}, payload).$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to save backup S3 settings',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.exportBackup = function (payload) {\n    var deferred = $q.defer();\n    Backup.exportS3Backup({}, payload).$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to export backup',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.restoreFromS3 = function (payload) {\n    var deferred = $q.defer();\n    Backup.restoreS3Backup({}, payload).$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to restore backup from S3',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///10273\n");

}),

85903:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\nCustomTemplateServiceFactory.$inject = [\"$sanitize\", \"CustomTemplates\", \"FileUploadService\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('CustomTemplateService', CustomTemplateServiceFactory);\n/* @ngInject */\n\nfunction CustomTemplateServiceFactory($sanitize, CustomTemplates, FileUploadService) {\n  var service = {};\n\n  service.customTemplate = function customTemplate(id) {\n    return CustomTemplates.get({\n      id\n    }).$promise;\n  };\n\n  service.customTemplates = async function customTemplates(type) {\n    const templates = await CustomTemplates.query({\n      type\n    }).$promise;\n    templates.forEach(template => {\n      if (template.Note) {\n        template.Note = $('<p>').html($sanitize(template.Note)).find('img').remove().end().html();\n      }\n    });\n    return templates;\n  };\n\n  service.remove = function remove(id) {\n    return CustomTemplates.remove({\n      id\n    }).$promise;\n  };\n\n  service.customTemplateFile = async function customTemplateFile(id) {\n    try {\n      const {\n        FileContent\n      } = await CustomTemplates.file({\n        id\n      }).$promise;\n      return FileContent;\n    } catch (err) {\n      throw {\n        msg: 'Unable to retrieve customTemplate content',\n        err\n      };\n    }\n  };\n\n  service.updateCustomTemplate = async function updateCustomTemplate(id, customTemplate) {\n    return CustomTemplates.update({\n      id\n    }, customTemplate).$promise;\n  };\n\n  service.createCustomTemplateFromFileContent = async function createCustomTemplateFromFileContent(payload) {\n    try {\n      return await CustomTemplates.create({\n        method: 'string'\n      }, payload).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the customTemplate',\n        err\n      };\n    }\n  };\n\n  service.createCustomTemplateFromFileUpload = async function createCustomTemplateFromFileUpload(payload) {\n    try {\n      const {\n        data\n      } = await FileUploadService.createCustomTemplate(payload);\n      return data;\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the customTemplate',\n        err\n      };\n    }\n  };\n\n  service.createCustomTemplateFromGitRepository = async function createCustomTemplateFromGitRepository(payload) {\n    try {\n      return await CustomTemplates.create({\n        method: 'repository'\n      }, payload).$promise;\n    } catch (err) {\n      throw {\n        msg: 'Unable to create the customTemplate',\n        err\n      };\n    }\n  };\n\n  return service;\n}//# sourceURL=webpack-internal:///85903\n");

}),

91520:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\nDockerHubService.$inject = [\"Endpoints\", \"AgentDockerhub\"];\n\n\nangular.module('portainer.app').factory('DockerHubService', DockerHubService);\n/* @ngInject */\n\nfunction DockerHubService(Endpoints, AgentDockerhub) {\n  return {\n    checkRateLimits\n  };\n\n  function checkRateLimits(endpoint, registryId) {\n    if (Portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isLocalEndpoint(endpoint)) {\n      return Endpoints.dockerhubLimits({\n        id: endpoint.Id,\n        registryId\n      }).$promise;\n    }\n\n    switch (endpoint.Type) {\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnDockerEnvironment:\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment:\n        return AgentDockerhub.limits({\n          endpointId: endpoint.Id,\n          endpointType: 'docker',\n          registryId\n        }).$promise;\n\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.AgentOnKubernetesEnvironment:\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment:\n        return AgentDockerhub.limits({\n          endpointId: endpoint.Id,\n          endpointType: 'kubernetes',\n          registryId\n        }).$promise;\n    }\n  }\n}//# sourceURL=webpack-internal:///91520\n");

}),

53249:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n\nangular.module('portainer.app').factory('EndpointService', ['$q', 'Endpoints', 'FileUploadService', function EndpointServiceFactory($q, Endpoints, FileUploadService) {\n  'use strict';\n\n  var service = {\n    updateSecuritySettings,\n    registries,\n    updateRegistryAccess\n  };\n\n  service.endpoint = function (endpointID) {\n    return Endpoints.get({\n      id: endpointID\n    }).$promise;\n  };\n\n  service.snapshotEndpoints = function () {\n    return Endpoints.snapshots({}, {}).$promise;\n  };\n\n  service.snapshotEndpoint = function (endpointID) {\n    return Endpoints.snapshot({\n      id: endpointID\n    }, {}).$promise;\n  };\n\n  service.updateAccess = function (id, userAccessPolicies, teamAccessPolicies) {\n    return Endpoints.updateAccess({\n      id: id\n    }, {\n      UserAccessPolicies: userAccessPolicies,\n      TeamAccessPolicies: teamAccessPolicies\n    }).$promise;\n  };\n\n  service.disassociateEndpoint = function (endpointID) {\n    return Endpoints.disassociate({\n      id: endpointID\n    }).$promise;\n  };\n\n  service.updateEndpoint = function (id, payload) {\n    var deferred = $q.defer();\n    FileUploadService.uploadTLSFilesForEndpoint(id, payload.TLSCACert, payload.TLSCert, payload.TLSKey).then(function success() {\n      deferred.notify({\n        upload: false\n      });\n      return Endpoints.update({\n        id: id\n      }, payload).$promise;\n    }).then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.notify({\n        upload: false\n      });\n      deferred.reject({\n        msg: 'Unable to update environment',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.deleteEndpoint = function (endpointID) {\n    return Endpoints.remove({\n      id: endpointID\n    }).$promise;\n  };\n\n  service.createLocalEndpoint = function (name = 'local', URL = '', PublicURL = '', groupID = 1, tagIds = []) {\n    var deferred = $q.defer();\n    var endpointURL = URL;\n\n    if (endpointURL !== '') {\n      if (endpointURL.indexOf('//./pipe/') == 0) {\n        // Windows named pipe\n        endpointURL = 'npipe://' + URL;\n      } else {\n        endpointURL = 'unix://' + URL;\n      }\n    }\n\n    FileUploadService.createEndpoint(name, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointCreationTypes.LocalDockerEnvironment, endpointURL, PublicURL, groupID, tagIds, false).then(function success(response) {\n      deferred.resolve(response.data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create environment',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createRemoteEndpoint = function (name, creationType, URL, PublicURL, groupID, tagIds, TLS, TLSSkipVerify, TLSSkipClientVerify, TLSCAFile, TLSCertFile, TLSKeyFile, checkinInterval, isEdgeDevice) {\n    var deferred = $q.defer();\n    var endpointURL = URL;\n\n    if (creationType !== Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointCreationTypes.EdgeAgentEnvironment) {\n      endpointURL = 'tcp://' + URL;\n    }\n\n    FileUploadService.createEndpoint(name, creationType, endpointURL, PublicURL, groupID, tagIds, TLS, TLSSkipVerify, TLSSkipClientVerify, TLSCAFile, TLSCertFile, TLSKeyFile, checkinInterval, isEdgeDevice).then(function success(response) {\n      deferred.resolve(response.data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create environment',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createLocalKubernetesEndpoint = function (name = 'local', tagIds = []) {\n    var deferred = $q.defer();\n    FileUploadService.createEndpoint(name, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointCreationTypes.LocalKubernetesEnvironment, '', '', 1, tagIds, true, true, true).then(function success(response) {\n      deferred.resolve(response.data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create environment',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createAzureEndpoint = function (name, applicationId, tenantId, authenticationKey, groupId, tagIds) {\n    var deferred = $q.defer();\n    FileUploadService.createAzureEndpoint(name, applicationId, tenantId, authenticationKey, groupId, tagIds).then(function success(response) {\n      deferred.resolve(response.data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to connect to Azure',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.trust = function (id) {\n    Endpoints.updateEndpoint({\n      id\n    }, {\n      UserTrusted: true\n    }).$promise;\n  };\n\n  function updateRegistryAccess(id, registryId, endpointAccesses) {\n    return Endpoints.updateRegistryAccess({\n      registryId,\n      id\n    }, endpointAccesses).$promise;\n  }\n\n  function registries(id, namespace) {\n    return Endpoints.registries({\n      namespace,\n      id\n    }).$promise;\n  }\n\n  return service;\n\n  function updateSecuritySettings(id, securitySettings) {\n    return Endpoints.updateSecuritySettings({\n      id\n    }, securitySettings).$promise;\n  }\n}]);//# sourceURL=webpack-internal:///53249\n");

}),

50828:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_group__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/group */ 79607);\n\nangular.module('portainer.app').factory('GroupService', ['$q', 'EndpointGroups', function GroupService($q, EndpointGroups) {\n  'use strict';\n\n  var service = {};\n\n  service.group = function (groupId) {\n    var deferred = $q.defer();\n    EndpointGroups.get({\n      id: groupId\n    }).$promise.then(function success(data) {\n      var group = new _models_group__WEBPACK_IMPORTED_MODULE_0__.EndpointGroupModel(data);\n      deferred.resolve(group);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve group',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.groups = function () {\n    return EndpointGroups.query({}).$promise;\n  };\n\n  service.createGroup = function (model, endpoints) {\n    var payload = new _models_group__WEBPACK_IMPORTED_MODULE_0__.EndpointGroupCreateRequest(model, endpoints);\n    return EndpointGroups.create(payload).$promise;\n  };\n\n  service.updateGroup = function (model, endpoints) {\n    var payload = new _models_group__WEBPACK_IMPORTED_MODULE_0__.EndpointGroupUpdateRequest(model, endpoints);\n    return EndpointGroups.update(payload).$promise;\n  };\n\n  service.updateAccess = function (groupId, userAccessPolicies, teamAccessPolicies) {\n    return EndpointGroups.updateAccess({\n      id: groupId\n    }, {\n      UserAccessPolicies: userAccessPolicies,\n      TeamAccessPolicies: teamAccessPolicies\n    }).$promise;\n  };\n\n  service.addEndpoint = function (groupId, endpoint) {\n    return EndpointGroups.addEndpoint({\n      id: groupId,\n      action: 'endpoints/' + endpoint.Id\n    }, endpoint).$promise;\n  };\n\n  service.removeEndpoint = function (groupId, endpointId) {\n    return EndpointGroups.removeEndpoint({\n      id: groupId,\n      action: 'endpoints/' + endpointId\n    }).$promise;\n  };\n\n  service.deleteGroup = function (groupId) {\n    return EndpointGroups.remove({\n      id: groupId\n    }).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///50828\n");

}),

94094:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/startsWith */ 13507);\n/* harmony import */ var lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/toLower */ 94946);\n/* harmony import */ var lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/replace */ 30465);\n/* harmony import */ var lodash_es_replace__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_replace__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Docker/models/porImageRegistry */ 76939);\n/* harmony import */ var Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Portainer/models/registryTypes */ 56414);\n/* harmony import */ var Portainer_models_registry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Portainer/models/registry */ 33180);\n/* harmony import */ var Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Portainer/models/dockerhub */ 74962);\n\n\n\n\n\n\n\n\n\nangular.module('portainer.app').factory('RegistryService', ['$q', '$async', 'EndpointService', 'Registries', 'ImageHelper', 'FileUploadService', function RegistryServiceFactory($q, $async, EndpointService, Registries, ImageHelper, FileUploadService) {\n  return {\n    registries,\n    registry,\n    encodedCredentials,\n    deleteRegistry,\n    updateRegistry,\n    configureRegistry,\n    createRegistry,\n    createGitlabRegistries,\n    retrievePorRegistryModelFromRepository,\n    retrievePorRegistryModelFromRepositoryWithRegistries,\n    loadRegistriesForDropdown\n  };\n\n  function registries() {\n    var deferred = $q.defer();\n    Registries.query().$promise.then(function success(data) {\n      var registries = data.map(function (item) {\n        return new Portainer_models_registry__WEBPACK_IMPORTED_MODULE_7__.RegistryViewModel(item);\n      });\n      deferred.resolve(registries);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve registries',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  function registry(id, endpointId) {\n    var deferred = $q.defer();\n    Registries.get({\n      id,\n      endpointId\n    }).$promise.then(function success(data) {\n      var registry = new Portainer_models_registry__WEBPACK_IMPORTED_MODULE_7__.RegistryViewModel(data);\n      deferred.resolve(registry);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve registry details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  function encodedCredentials(registry) {\n    var credentials = {\n      registryId: registry.Id\n    };\n    return btoa(JSON.stringify(credentials));\n  }\n\n  function deleteRegistry(id) {\n    return Registries.remove({\n      id: id\n    }).$promise;\n  }\n\n  function updateRegistry(registry) {\n    registry.URL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_4___default()(registry.URL, /^https?\\:\\/\\//i, '');\n    registry.URL = lodash_es_replace__WEBPACK_IMPORTED_MODULE_4___default()(registry.URL, /\\/$/, '');\n    return Registries.update({\n      id: registry.Id\n    }, registry).$promise;\n  }\n\n  function configureRegistry(id, registryManagementConfigurationModel) {\n    return FileUploadService.configureRegistry(id, registryManagementConfigurationModel);\n  }\n\n  function createRegistry(model) {\n    var payload = new Portainer_models_registry__WEBPACK_IMPORTED_MODULE_7__.RegistryCreateRequest(model);\n    return Registries.create(payload).$promise;\n  }\n\n  function createGitlabRegistries(model, projects) {\n    const promises = [];\n\n    lodash_es_forEach__WEBPACK_IMPORTED_MODULE_3___default()(projects, p => {\n      const m = model;\n      m.Name = p.PathWithNamespace;\n      m.Gitlab.ProjectPath = lodash_es_toLower__WEBPACK_IMPORTED_MODULE_2___default()(p.PathWithNamespace);\n      m.Gitlab.ProjectId = p.Id;\n      m.Password = m.Token;\n      const payload = new Portainer_models_registry__WEBPACK_IMPORTED_MODULE_7__.RegistryCreateRequest(m);\n      promises.push(Registries.create(payload).$promise);\n    });\n\n    return $q.all(promises);\n  }\n\n  function getURL(reg) {\n    let url = reg.URL;\n\n    if (reg.Type === Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_6__.RegistryTypes.GITLAB) {\n      url = reg.URL + '/' + reg.Gitlab.ProjectPath;\n    } else if (reg.Type === Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_6__.RegistryTypes.QUAY) {\n      const name = reg.Quay.UseOrganisation ? reg.Quay.OrganisationName : reg.Username;\n      url = reg.URL + '/' + name;\n    }\n\n    return url;\n  } // findBestMatchRegistry finds out the best match registry for repository\n  // matching precedence:\n  // 1. registryId matched\n  // 2. both domain name and username matched (for dockerhub only)\n  // 3. only URL matched\n  // 4. pick up the first dockerhub registry\n\n\n  function findBestMatchRegistry(repository, registries, registryId) {\n    let match2, match3, match4;\n\n    for (const registry of registries) {\n      if (registry.Id == registryId) {\n        return registry;\n      }\n\n      if (registry.Type === Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_6__.RegistryTypes.DOCKERHUB) {\n        // try to match repository examples:\n        //   <USERNAME>/nginx:latest\n        //   docker.io/<USERNAME>/nginx:latest\n        if (repository.startsWith(registry.Username + '/') || repository.startsWith(getURL(registry) + '/' + registry.Username + '/')) {\n          match2 = registry;\n        } // try to match repository examples:\n        //   portainer/portainer-ee:latest\n        //   <NON-USERNAME>/portainer-ee:latest\n\n\n        match4 = match4 || registry;\n      }\n\n      if (lodash_es_includes__WEBPACK_IMPORTED_MODULE_1___default()(repository, getURL(registry))) {\n        match3 = registry;\n      }\n    }\n\n    return match2 || match3 || match4;\n  }\n\n  function retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries, registryId) {\n    const model = new Docker_models_porImageRegistry__WEBPACK_IMPORTED_MODULE_5__.PorImageRegistryModel();\n    const registry = findBestMatchRegistry(repository, registries, registryId);\n\n    if (registry) {\n      const url = getURL(registry);\n      let lastIndex = repository.lastIndexOf(url);\n      lastIndex = lastIndex === -1 ? 0 : lastIndex + url.length;\n      let image = repository.substring(lastIndex);\n\n      if (lodash_es_startsWith__WEBPACK_IMPORTED_MODULE_0___default()(image, '/')) {\n        image = image.substring(1);\n      }\n\n      model.Registry = registry;\n      model.Image = image;\n    } else {\n      if (ImageHelper.imageContainsURL(repository)) {\n        model.UseRegistry = false;\n      }\n\n      model.Registry = new Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__.DockerHubViewModel();\n      model.Image = repository;\n    }\n\n    return model;\n  }\n\n  function retrievePorRegistryModelFromRepository(repository, endpointId, registryId, namespace) {\n    return $async(async () => {\n      try {\n        const regs = await EndpointService.registries(endpointId, namespace);\n        return retrievePorRegistryModelFromRepositoryWithRegistries(repository, regs, registryId);\n      } catch (err) {\n        throw {\n          msg: 'Unable to retrieve the registry associated to the repository',\n          err: err\n        };\n      }\n    });\n  }\n\n  function loadRegistriesForDropdown(endpointId, namespace) {\n    return $async(async () => {\n      try {\n        const registries = await EndpointService.registries(endpointId, namespace); // hide default(anonymous) dockerhub registry if user has an authenticated one\n\n        if (!registries.some(registry => registry.Type === Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_6__.RegistryTypes.DOCKERHUB)) {\n          registries.push(new Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_8__.DockerHubViewModel());\n        }\n\n        return registries;\n      } catch (err) {\n        throw {\n          msg: 'Unable to retrieve the registries',\n          err: err\n        };\n      }\n    });\n  }\n}]);//# sourceURL=webpack-internal:///94094\n");

}),

17293:

(function() {

eval("angular.module('portainer.app').factory('ResourceControlService', ['$q', 'ResourceControl', 'UserService', 'TeamService', 'ResourceControlHelper', function ResourceControlServiceFactory($q, ResourceControl, UserService, TeamService, ResourceControlHelper) {\n  'use strict';\n\n  const service = {};\n  service.duplicateResourceControl = duplicateResourceControl;\n  service.applyResourceControl = applyResourceControl;\n  service.retrieveOwnershipDetails = retrieveOwnershipDetails;\n  /**\n   * PRIVATE SECTION\n   */\n\n  /**\n   * Update a ResourceControl\n   * @param {String} rcID ID of involved resource\n   * @param {ResourceControlOwnershipParameters} ownershipParameters Transcient type from view data to payload\n   */\n\n  function updateResourceControl(rcID, ownershipParameters) {\n    const payload = {\n      AdministratorsOnly: ownershipParameters.AdministratorsOnly,\n      Public: ownershipParameters.Public,\n      Users: ownershipParameters.Users,\n      Teams: ownershipParameters.Teams\n    };\n    return ResourceControl.update({\n      id: rcID\n    }, payload).$promise;\n  }\n  /**\n   * END PRIVATE SECTION\n   */\n\n  /**\n   * PUBLIC SECTION\n   */\n\n  /**\n   * Apply a ResourceControl after Resource creation\n   * @param {int} userId ID of User performing the action\n   * @param {AccessControlFormData} accessControlData ResourceControl to apply\n   * @param {ResourceControlViewModel} resourceControl ResourceControl to update\n   * @param {[]int} subResources SubResources managed by the ResourceControl\n   */\n\n\n  function applyResourceControl(userId, accessControlData, resourceControl, subResources = []) {\n    const ownershipParameters = ResourceControlHelper.RCFormDataToOwnershipParameters(userId, accessControlData, subResources);\n    return updateResourceControl(resourceControl.Id, ownershipParameters);\n  }\n  /**\n   * Duplicate an existing ResourceControl (default to AdministratorsOnly if undefined)\n   * @param {int} userId ID of User performing the action\n   * @param {ResourceControlViewModel} oldResourceControl ResourceControl to duplicate\n   * @param {ResourceControlViewModel} newResourceControl ResourceControl to apply duplication to\n   */\n\n\n  function duplicateResourceControl(userId, oldResourceControl, newResourceControl) {\n    const ownershipParameters = ResourceControlHelper.RCViewModelToOwnershipParameters(userId, oldResourceControl);\n    return updateResourceControl(newResourceControl.Id, ownershipParameters);\n  }\n  /**\n   * Retrieve users and team details for ResourceControlViewModel\n   * @param {ResourceControlViewModel} resourceControl ResourceControl view model\n   */\n\n\n  function retrieveOwnershipDetails(resourceControl) {\n    var deferred = $q.defer();\n\n    if (!resourceControl) {\n      deferred.resolve({\n        authorizedUsers: [],\n        authorizedTeams: []\n      });\n      return deferred.promise;\n    }\n\n    $q.all({\n      users: resourceControl.UserAccesses.length > 0 ? UserService.users(false) : [],\n      teams: resourceControl.TeamAccesses.length > 0 ? TeamService.teams() : []\n    }).then(function success(data) {\n      var authorizedUsers = ResourceControlHelper.retrieveAuthorizedUsers(resourceControl, data.users);\n      var authorizedTeams = ResourceControlHelper.retrieveAuthorizedTeams(resourceControl, data.teams);\n      deferred.resolve({\n        authorizedUsers: authorizedUsers,\n        authorizedTeams: authorizedTeams\n      });\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve user and team information',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n  /**\n   * END PUBLIC SECTION\n   */\n\n\n  return service;\n}]);//# sourceURL=webpack-internal:///17293\n");

}),

91532:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/settings */ 55287);\n\nangular.module('portainer.app').factory('SettingsService', ['$q', 'Settings', function SettingsServiceFactory($q, Settings) {\n  'use strict';\n\n  var service = {};\n\n  service.settings = function () {\n    var deferred = $q.defer();\n    Settings.get().$promise.then(function success(data) {\n      var settings = new _models_settings__WEBPACK_IMPORTED_MODULE_0__.SettingsViewModel(data);\n      deferred.resolve(settings);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve application settings',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.update = function (settings) {\n    return Settings.update({}, settings).$promise;\n  };\n\n  service.publicSettings = function () {\n    var deferred = $q.defer();\n    Settings.publicSettings().$promise.then(function success(data) {\n      var settings = new _models_settings__WEBPACK_IMPORTED_MODULE_0__.PublicSettingsViewModel(data);\n      deferred.resolve(settings);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve application settings',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.checkLDAPConnectivity = function (settings) {\n    return Settings.checkLDAPConnectivity({}, settings).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///91532\n");

}),

39243:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\nSSLServiceFactory.$inject = [\"SSL\"];\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').service('SSLService', SSLServiceFactory);\n/* @ngInject */\n\nfunction SSLServiceFactory(SSL) {\n  return {\n    upload,\n    get\n  };\n\n  function get() {\n    return SSL.get().$promise;\n  }\n\n  function upload(httpEnabled, cert, key) {\n    return SSL.upload({\n      httpEnabled,\n      cert,\n      key\n    }).$promise;\n  }\n}//# sourceURL=webpack-internal:///39243\n");

}),

54332:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_unionWith__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/unionWith */ 8637);\n/* harmony import */ var lodash_es_unionWith__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_unionWith__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Kubernetes/models/deploy */ 6253);\n/* harmony import */ var _models_stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../models/stack */ 49036);\n\n\n\nangular.module('portainer.app').factory('StackService', ['$q', '$async', 'Stack', 'FileUploadService', 'StackHelper', 'ServiceService', 'ContainerService', 'SwarmService', 'EndpointProvider', function StackServiceFactory($q, $async, Stack, FileUploadService, StackHelper, ServiceService, ContainerService, SwarmService, EndpointProvider) {\n  'use strict';\n\n  var service = {\n    updateGit,\n    updateKubeGit\n  };\n\n  service.stack = function (id) {\n    var deferred = $q.defer();\n    Stack.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var stack = new _models_stack__WEBPACK_IMPORTED_MODULE_2__.StackViewModel(data);\n      deferred.resolve(stack);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve stack details',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.getStackFile = function (id) {\n    var deferred = $q.defer();\n    Stack.getStackFile({\n      id: id\n    }).$promise.then(function success(data) {\n      deferred.resolve(data.StackFileContent);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve stack content',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.migrateSwarmStack = function (stack, targetEndpointId, newName) {\n    var deferred = $q.defer();\n    EndpointProvider.setEndpointID(targetEndpointId);\n    SwarmService.swarm().then(function success(data) {\n      var swarm = data;\n\n      if (swarm.Id === stack.SwarmId) {\n        deferred.reject({\n          msg: 'Target environment is located in the same Swarm cluster as the current environment',\n          err: null\n        });\n        return;\n      }\n\n      return Stack.migrate({\n        id: stack.Id,\n        endpointId: stack.EndpointId\n      }, {\n        EndpointID: targetEndpointId,\n        SwarmID: swarm.Id,\n        Name: newName\n      }).$promise;\n    }).then(function success() {\n      deferred.resolve();\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to migrate stack',\n        err: err\n      });\n    }).finally(function final() {\n      EndpointProvider.setEndpointID(stack.EndpointId);\n    });\n    return deferred.promise;\n  };\n\n  service.migrateComposeStack = function (stack, targetEndpointId, newName) {\n    var deferred = $q.defer();\n    EndpointProvider.setEndpointID(targetEndpointId);\n    Stack.migrate({\n      id: stack.Id,\n      endpointId: stack.EndpointId\n    }, {\n      EndpointID: targetEndpointId,\n      Name: newName\n    }).$promise.then(function success() {\n      deferred.resolve();\n    }).catch(function error(err) {\n      EndpointProvider.setEndpointID(stack.EndpointId);\n      deferred.reject({\n        msg: 'Unable to migrate stack',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.stacks = function (compose, swarm, endpointId, includeOrphanedStacks = false) {\n    var deferred = $q.defer();\n    var queries = [];\n\n    if (compose) {\n      queries.push(service.composeStacks(endpointId, true, {\n        EndpointID: endpointId,\n        IncludeOrphanedStacks: includeOrphanedStacks\n      }));\n    }\n\n    if (swarm) {\n      queries.push(service.swarmStacks(endpointId, true, {\n        IncludeOrphanedStacks: includeOrphanedStacks\n      }));\n    }\n\n    $q.all(queries).then(function success(data) {\n      var stacks = [];\n\n      if (data[0]) {\n        stacks = stacks.concat(data[0]);\n      }\n\n      if (data[1]) {\n        stacks = stacks.concat(data[1]);\n      }\n\n      deferred.resolve(stacks);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve stacks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.externalSwarmStacks = function () {\n    var deferred = $q.defer();\n    ServiceService.services().then(function success(services) {\n      deferred.resolve(StackHelper.getExternalStacksFromServices(services));\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve external stacks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.externalComposeStacks = function () {\n    var deferred = $q.defer();\n    ContainerService.containers(1).then(function success(containers) {\n      deferred.resolve(StackHelper.getExternalStacksFromContainers(containers));\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve external stacks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.unionStacks = function (stacks, externalStacks) {\n    stacks.forEach(stack => {\n      externalStacks.forEach(externalStack => {\n        if (stack.Orphaned && stack.Name == externalStack.Name) {\n          stack.OrphanedRunning = true;\n        }\n      });\n    });\n\n    const result = lodash_es_unionWith__WEBPACK_IMPORTED_MODULE_0___default()(stacks, externalStacks, function (a, b) {\n      return a.Name === b.Name;\n    });\n\n    return result;\n  };\n\n  service.composeStacks = function (endpointId, includeExternalStacks, filters) {\n    var deferred = $q.defer();\n    $q.all({\n      stacks: Stack.query({\n        filters: filters\n      }).$promise,\n      externalStacks: includeExternalStacks ? service.externalComposeStacks() : []\n    }).then(function success(data) {\n      var stacks = data.stacks.map(function (item) {\n        if (item.EndpointId == endpointId) {\n          return new _models_stack__WEBPACK_IMPORTED_MODULE_2__.StackViewModel(item);\n        } else {\n          return new _models_stack__WEBPACK_IMPORTED_MODULE_2__.OrphanedStackViewModel(item);\n        }\n      });\n      var externalStacks = data.externalStacks;\n      const result = service.unionStacks(stacks, externalStacks);\n      deferred.resolve(result);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve stacks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.swarmStacks = function (endpointId, includeExternalStacks, filters = {}) {\n    var deferred = $q.defer();\n    SwarmService.swarm().then(function success(data) {\n      var swarm = data;\n      filters = {\n        SwarmID: swarm.Id,\n        ...filters\n      };\n      return $q.all({\n        stacks: Stack.query({\n          filters: filters\n        }).$promise,\n        externalStacks: includeExternalStacks ? service.externalSwarmStacks() : []\n      });\n    }).then(function success(data) {\n      var stacks = data.stacks.map(function (item) {\n        if (item.EndpointId == endpointId) {\n          return new _models_stack__WEBPACK_IMPORTED_MODULE_2__.StackViewModel(item);\n        } else {\n          return new _models_stack__WEBPACK_IMPORTED_MODULE_2__.OrphanedStackViewModel(item);\n        }\n      });\n      var externalStacks = data.externalStacks;\n      const result = service.unionStacks(stacks, externalStacks);\n      deferred.resolve(result);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve stacks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.remove = function (stack, external, endpointId) {\n    var deferred = $q.defer();\n    Stack.remove({\n      id: stack.Id ? stack.Id : stack.Name,\n      external: external,\n      endpointId: endpointId\n    }).$promise.then(function success() {\n      deferred.resolve();\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to remove the stack',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.associate = function (stack, endpointId, orphanedRunning) {\n    var deferred = $q.defer();\n\n    if (stack.Type == 1) {\n      SwarmService.swarm().then(function success(data) {\n        const swarm = data;\n        return Stack.associate({\n          id: stack.Id,\n          endpointId: endpointId,\n          swarmId: swarm.Id,\n          orphanedRunning\n        }).$promise;\n      }).then(function success(data) {\n        deferred.resolve(data);\n      }).catch(function error(err) {\n        deferred.reject({\n          msg: 'Unable to associate the stack',\n          err: err\n        });\n      });\n    } else {\n      Stack.associate({\n        id: stack.Id,\n        endpointId: endpointId,\n        orphanedRunning\n      }).$promise.then(function success(data) {\n        deferred.resolve(data);\n      }).catch(function error(err) {\n        deferred.reject({\n          msg: 'Unable to associate the stack',\n          err: err\n        });\n      });\n    }\n\n    return deferred.promise;\n  };\n\n  service.updateStack = function (stack, stackFile, env, prune, pullImage) {\n    return Stack.update({\n      endpointId: stack.EndpointId\n    }, {\n      id: stack.Id,\n      StackFileContent: stackFile,\n      Env: env,\n      Prune: prune,\n      PullImage: pullImage\n    }).$promise;\n  };\n\n  service.updateKubeStack = function (stack, stackFile, gitConfig) {\n    let payload = {};\n\n    if (stackFile) {\n      payload = {\n        StackFileContent: stackFile\n      };\n    } else {\n      const autoUpdate = {};\n\n      if (gitConfig.AutoUpdate && gitConfig.AutoUpdate.RepositoryAutomaticUpdates) {\n        if (gitConfig.AutoUpdate.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL) {\n          autoUpdate.Interval = gitConfig.AutoUpdate.RepositoryFetchInterval;\n        } else if (gitConfig.AutoUpdate.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK) {\n          autoUpdate.Webhook = gitConfig.AutoUpdate.RepositoryWebhookURL.split('/').reverse()[0];\n        }\n      }\n\n      payload = {\n        AutoUpdate: autoUpdate,\n        RepositoryReferenceName: gitConfig.RefName,\n        RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n        RepositoryUsername: gitConfig.RepositoryUsername,\n        RepositoryPassword: gitConfig.RepositoryPassword\n      };\n    }\n\n    return Stack.update({\n      id: stack.Id,\n      endpointId: stack.EndpointId\n    }, payload).$promise;\n  };\n\n  service.createComposeStackFromFileUpload = function (name, stackFile, env, endpointId) {\n    return FileUploadService.createComposeStack(name, stackFile, env, endpointId);\n  };\n\n  service.createSwarmStackFromFileUpload = function (name, stackFile, env, endpointId) {\n    var deferred = $q.defer();\n    SwarmService.swarm().then(function success(data) {\n      var swarm = data;\n      return FileUploadService.createSwarmStack(name, swarm.Id, stackFile, env, endpointId);\n    }).then(function success(data) {\n      deferred.resolve(data.data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create the stack',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createComposeStackFromFileContent = function (name, stackFileContent, env, endpointId) {\n    var payload = {\n      Name: name,\n      StackFileContent: stackFileContent,\n      Env: env\n    };\n    return Stack.create({\n      method: 'string',\n      type: 2,\n      endpointId: endpointId\n    }, payload).$promise;\n  };\n\n  service.createSwarmStackFromFileContent = function (name, stackFileContent, env, endpointId) {\n    var deferred = $q.defer();\n    SwarmService.swarm().then(function success(swarm) {\n      var payload = {\n        Name: name,\n        SwarmID: swarm.Id,\n        StackFileContent: stackFileContent,\n        Env: env\n      };\n      return Stack.create({\n        method: 'string',\n        type: 1,\n        endpointId: endpointId\n      }, payload).$promise;\n    }).then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create the stack',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createComposeStackFromGitRepository = function (name, repositoryOptions, env, endpointId) {\n    var payload = {\n      Name: name,\n      RepositoryURL: repositoryOptions.RepositoryURL,\n      RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n      ComposeFile: repositoryOptions.ComposeFilePathInRepository,\n      AdditionalFiles: repositoryOptions.AdditionalFiles,\n      RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n      RepositoryUsername: repositoryOptions.RepositoryUsername,\n      RepositoryPassword: repositoryOptions.RepositoryPassword,\n      Env: env,\n      FromAppTemplate: repositoryOptions.FromAppTemplate\n    };\n\n    if (repositoryOptions.AutoUpdate) {\n      payload.AutoUpdate = repositoryOptions.AutoUpdate;\n    }\n\n    return Stack.create({\n      method: 'repository',\n      type: 2,\n      endpointId: endpointId\n    }, payload).$promise;\n  };\n\n  service.createSwarmStackFromGitRepository = function (name, repositoryOptions, env, endpointId) {\n    var deferred = $q.defer();\n    SwarmService.swarm().then(function success(data) {\n      var swarm = data;\n      var payload = {\n        Name: name,\n        SwarmID: swarm.Id,\n        RepositoryURL: repositoryOptions.RepositoryURL,\n        RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n        ComposeFile: repositoryOptions.ComposeFilePathInRepository,\n        AdditionalFiles: repositoryOptions.AdditionalFiles,\n        RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n        RepositoryUsername: repositoryOptions.RepositoryUsername,\n        RepositoryPassword: repositoryOptions.RepositoryPassword,\n        Env: env,\n        FromAppTemplate: repositoryOptions.FromAppTemplate\n      };\n\n      if (repositoryOptions.AutoUpdate) {\n        payload.AutoUpdate = repositoryOptions.AutoUpdate;\n      }\n\n      return Stack.create({\n        method: 'repository',\n        type: 1,\n        endpointId: endpointId\n      }, payload).$promise;\n    }).then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create the stack',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.duplicateStack = function duplicateStack(name, stackFileContent, env, endpointId, type) {\n    var action = type === 1 ? service.createSwarmStackFromFileContent : service.createComposeStackFromFileContent;\n    return action(name, stackFileContent, env, endpointId);\n  };\n\n  async function kubernetesDeployAsync(endpointId, method, payload) {\n    try {\n      await Stack.create({\n        endpointId: endpointId,\n        method: method,\n        type: 3\n      }, payload).$promise;\n    } catch (err) {\n      throw {\n        err: err\n      };\n    }\n  }\n\n  service.kubernetesDeploy = function (endpointId, method, payload) {\n    return $async(kubernetesDeployAsync, endpointId, method, payload);\n  };\n\n  service.start = start;\n\n  function start(id) {\n    return Stack.start({\n      id\n    }).$promise;\n  }\n\n  service.stop = stop;\n\n  function stop(id) {\n    return Stack.stop({\n      id\n    }).$promise;\n  }\n\n  function updateGit(id, endpointId, env, prune, gitConfig, pullImage) {\n    return Stack.updateGit({\n      endpointId,\n      id\n    }, {\n      env,\n      prune,\n      RepositoryReferenceName: gitConfig.RefName,\n      RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n      RepositoryUsername: gitConfig.RepositoryUsername,\n      RepositoryPassword: gitConfig.RepositoryPassword,\n      PullImage: pullImage\n    }).$promise;\n  }\n\n  function updateKubeGit(id, endpointId, namespace, gitConfig) {\n    return Stack.updateGit({\n      endpointId,\n      id\n    }, {\n      Namespace: namespace,\n      RepositoryReferenceName: gitConfig.RefName,\n      RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n      RepositoryUsername: gitConfig.RepositoryUsername,\n      RepositoryPassword: gitConfig.RepositoryPassword\n    }).$promise;\n  }\n\n  service.updateGitStackSettings = function (id, endpointId, env, gitConfig) {\n    // prepare auto update\n    const autoUpdate = {};\n\n    if (gitConfig.AutoUpdate.RepositoryAutomaticUpdates) {\n      if (gitConfig.AutoUpdate.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.INTERVAL) {\n        autoUpdate.Interval = gitConfig.AutoUpdate.RepositoryFetchInterval;\n      } else if (gitConfig.AutoUpdate.RepositoryMechanism === Kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_1__.RepositoryMechanismTypes.WEBHOOK) {\n        autoUpdate.Webhook = gitConfig.AutoUpdate.RepositoryWebhookURL.split('/').reverse()[0];\n      }\n    }\n\n    return Stack.updateGitStackSettings({\n      endpointId,\n      id\n    }, {\n      AutoUpdate: autoUpdate,\n      Env: env,\n      RepositoryReferenceName: gitConfig.RefName,\n      RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n      RepositoryUsername: gitConfig.RepositoryUsername,\n      RepositoryPassword: gitConfig.RepositoryPassword,\n      Prune: gitConfig.Option.Prune\n    }).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///54332\n");

}),

97128:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_status__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/status */ 95154);\n\nangular.module('portainer.app').factory('StatusService', ['$q', 'Status', function StatusServiceFactory($q, Status) {\n  'use strict';\n\n  var service = {};\n\n  service.status = function () {\n    var deferred = $q.defer();\n    Status.get().$promise.then(function success(data) {\n      var status = new _models_status__WEBPACK_IMPORTED_MODULE_0__.StatusViewModel(data);\n      deferred.resolve(status);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve application status',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.version = function () {\n    var deferred = $q.defer();\n    Status.version().$promise.then(function success(data) {\n      var status = new _models_status__WEBPACK_IMPORTED_MODULE_0__.StatusVersionViewModel(data);\n      deferred.resolve(status);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve application version info',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///97128\n");

}),

10754:

(function() {

eval("angular.module('portainer.app').factory('SupportService', ['$q', 'Support', function SupportServiceFactory($q, Support) {\n  'use strict';\n\n  var service = {};\n\n  service.supportProducts = function () {\n    var deferred = $q.defer();\n    Support.get().$promise.then(function success(data) {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve support options',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///10754\n");

}),

44904:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_tag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/tag */ 26410);\n\nangular.module('portainer.app').factory('TagService', ['$q', '$async', 'Tags', function TagServiceFactory($q, $async, Tags) {\n  'use strict';\n\n  var service = {};\n\n  service.tags = function () {\n    var deferred = $q.defer();\n    Tags.query().$promise.then(function success(data) {\n      var tags = data.map(function (item) {\n        return new _models_tag__WEBPACK_IMPORTED_MODULE_0__.TagViewModel(item);\n      });\n      deferred.resolve(tags);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve tags',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.tagNames = function () {\n    var deferred = $q.defer();\n    Tags.query().$promise.then(function success(data) {\n      var tags = data.map(function (item) {\n        return item.Name;\n      });\n      deferred.resolve(tags);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve tags',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  async function createTagAsync(name) {\n    var payload = {\n      Name: name\n    };\n\n    try {\n      const tag = await Tags.create({}, payload).$promise;\n      return new _models_tag__WEBPACK_IMPORTED_MODULE_0__.TagViewModel(tag);\n    } catch (err) {\n      throw {\n        msg: 'Unable to create tag',\n        err\n      };\n    }\n  }\n\n  function createTag(name) {\n    return $async(createTagAsync, name);\n  }\n\n  service.createTag = createTag;\n\n  service.deleteTag = function (id) {\n    return Tags.remove({\n      id: id\n    }).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///44904\n");

}),

87643:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_teamMembership__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/teamMembership */ 3010);\n\nangular.module('portainer.app').factory('TeamMembershipService', ['$q', 'TeamMemberships', function TeamMembershipFactory($q, TeamMemberships) {\n  'use strict';\n\n  var service = {};\n\n  service.memberships = function () {\n    var deferred = $q.defer();\n    TeamMemberships.query().$promise.then(function success(data) {\n      var memberships = data.map(function (item) {\n        return new _models_teamMembership__WEBPACK_IMPORTED_MODULE_0__.TeamMembershipModel(item);\n      });\n      deferred.resolve(memberships);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve team memberships',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createMembership = function (userId, teamId, role) {\n    var payload = {\n      UserID: userId,\n      TeamID: teamId,\n      Role: role\n    };\n    return TeamMemberships.create({}, payload).$promise;\n  };\n\n  service.deleteMembership = function (id) {\n    return TeamMemberships.remove({\n      id: id\n    }).$promise;\n  };\n\n  service.updateMembership = function (id, userId, teamId, role) {\n    var payload = {\n      UserID: userId,\n      TeamID: teamId,\n      Role: role\n    };\n    return TeamMemberships.update({\n      id: id\n    }, payload).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///87643\n");

}),

75495:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_team__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/team */ 58552);\n/* harmony import */ var _models_teamMembership__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../models/teamMembership */ 3010);\n\n\nangular.module('portainer.app').factory('TeamService', ['$q', 'Teams', function TeamServiceFactory($q, Teams) {\n  'use strict';\n\n  var service = {};\n\n  service.teams = function (environmentId) {\n    var deferred = $q.defer();\n    Teams.query({\n      environmentId: environmentId\n    }).$promise.then(function success(data) {\n      var teams = data.map(function (item) {\n        return new _models_team__WEBPACK_IMPORTED_MODULE_0__.TeamViewModel(item);\n      });\n      deferred.resolve(teams);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: '无法检索到团队',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.team = function (id) {\n    var deferred = $q.defer();\n    Teams.get({\n      id: id\n    }).$promise.then(function success(data) {\n      var team = new _models_team__WEBPACK_IMPORTED_MODULE_0__.TeamViewModel(data);\n      deferred.resolve(team);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: '无法检索到团队的详细信息',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createTeam = function (name, leaderIds) {\n    var deferred = $q.defer();\n    var payload = {\n      Name: name,\n      TeamLeaders: leaderIds\n    };\n    Teams.create({}, payload).$promise.then(function success() {\n      deferred.resolve();\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: '无法创建团队',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.deleteTeam = function (id) {\n    return Teams.remove({\n      id: id\n    }).$promise;\n  };\n\n  service.userMemberships = function (id) {\n    var deferred = $q.defer();\n    Teams.queryMemberships({\n      id: id\n    }).$promise.then(function success(data) {\n      var memberships = data.map(function (item) {\n        return new _models_teamMembership__WEBPACK_IMPORTED_MODULE_1__.TeamMembershipModel(item);\n      });\n      deferred.resolve(memberships);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: '无法检索团队的用户会员资格',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///75495\n");

}),

66656:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/models/dockerhub */ 74962);\n/* harmony import */ var _models_template__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../models/template */ 55439);\nTemplateServiceFactory.$inject = [\"$q\", \"Templates\", \"TemplateHelper\", \"ImageHelper\", \"ContainerHelper\", \"EndpointService\"];\n\n\nangular.module('portainer.app').factory('TemplateService', TemplateServiceFactory);\n/* @ngInject */\n\nfunction TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, ContainerHelper, EndpointService) {\n  var service = {\n    templates\n  };\n\n  function templates(endpointId) {\n    const deferred = $q.defer();\n    $q.all({\n      templates: Templates.query().$promise,\n      registries: EndpointService.registries(endpointId)\n    }).then(function success({\n      templates,\n      registries\n    }) {\n      const version = templates.version;\n      deferred.resolve(templates.templates.map(item => {\n        try {\n          const template = new _models_template__WEBPACK_IMPORTED_MODULE_1__.TemplateViewModel(item, version);\n          const registryURL = template.RegistryModel.Registry.URL;\n          const registry = registryURL ? registries.find(reg => reg.URL === registryURL) : new Portainer_models_dockerhub__WEBPACK_IMPORTED_MODULE_0__.DockerHubViewModel();\n          template.RegistryModel.Registry = registry;\n          return template;\n        } catch (err) {\n          deferred.reject({\n            msg: 'Unable to retrieve templates',\n            err: err\n          });\n        }\n      }));\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve templates',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  service.templateFile = templateFile;\n\n  function templateFile(repositoryUrl, composeFilePathInRepository) {\n    return Templates.file({\n      repositoryUrl,\n      composeFilePathInRepository\n    }).$promise;\n  }\n\n  service.createTemplateConfiguration = function (template, containerName, network) {\n    var imageConfiguration = ImageHelper.createImageConfigForContainer(template.RegistryModel);\n    var containerConfiguration = createContainerConfiguration(template, containerName, network);\n    containerConfiguration.Image = imageConfiguration.fromImage;\n    return containerConfiguration;\n  };\n\n  function createContainerConfiguration(template, containerName, network) {\n    var configuration = TemplateHelper.getDefaultContainerConfiguration();\n    configuration.HostConfig.NetworkMode = network.Name;\n    configuration.HostConfig.Privileged = template.Privileged;\n    configuration.HostConfig.RestartPolicy = {\n      Name: template.RestartPolicy\n    };\n    configuration.HostConfig.ExtraHosts = template.Hosts ? template.Hosts : [];\n    configuration.name = containerName;\n    configuration.Hostname = template.Hostname;\n    configuration.Env = TemplateHelper.EnvToStringArray(template.Env);\n    configuration.Cmd = ContainerHelper.commandStringToArray(template.Command);\n    var portConfiguration = TemplateHelper.portArrayToPortConfiguration(template.Ports);\n    configuration.HostConfig.PortBindings = portConfiguration.bindings;\n    configuration.ExposedPorts = portConfiguration.exposedPorts;\n    var consoleConfiguration = TemplateHelper.getConsoleConfiguration(template.Interactive);\n    configuration.OpenStdin = consoleConfiguration.openStdin;\n    configuration.Tty = consoleConfiguration.tty;\n    configuration.Labels = TemplateHelper.updateContainerConfigurationWithLabels(template.Labels);\n    return configuration;\n  }\n\n  service.updateContainerConfigurationWithVolumes = function (configuration, template, generatedVolumesPile) {\n    var volumes = template.Volumes;\n    TemplateHelper.createVolumeBindings(volumes, generatedVolumesPile);\n    volumes.forEach(function (volume) {\n      if (volume.binding) {\n        configuration.Volumes[volume.container] = {};\n        configuration.HostConfig.Binds.push(volume.binding);\n      }\n    });\n  };\n\n  return service;\n}//# sourceURL=webpack-internal:///66656\n");

}),

96664:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UserService\": function() { return /* binding */ UserService; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_models_user__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/models/user */ 90327);\n/* harmony import */ var _portainer_users_user_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/users/user.service */ 96263);\n/* harmony import */ var _models_teamMembership__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../models/teamMembership */ 3010);\n\nUserService.$inject = [\"$q\", \"Users\", \"TeamService\", \"TeamMembershipService\"];\n\n\n\n/* @ngInject */\n\nfunction UserService($q, Users, TeamService, TeamMembershipService) {\n  'use strict';\n\n  var service = {};\n\n  service.users = async function (includeAdministrators, environmentId) {\n    const users = await (0,_portainer_users_user_service__WEBPACK_IMPORTED_MODULE_2__.getUsers)(includeAdministrators, environmentId);\n    return users.map(u => new _portainer_models_user__WEBPACK_IMPORTED_MODULE_1__.UserViewModel(u));\n  };\n\n  service.user = async function (includeAdministrators) {\n    const user = await (0,_portainer_users_user_service__WEBPACK_IMPORTED_MODULE_2__.getUser)(includeAdministrators);\n    return new _portainer_models_user__WEBPACK_IMPORTED_MODULE_1__.UserViewModel(user);\n  };\n\n  service.createUser = function (username, password, role, teamIds) {\n    var deferred = $q.defer();\n    var payload = {\n      username: username,\n      password: password,\n      role: role\n    };\n    Users.create({}, payload).$promise.then(function success(data) {\n      var userId = data.Id;\n      var teamMembershipQueries = [];\n      angular.forEach(teamIds, function (teamId) {\n        teamMembershipQueries.push(TeamMembershipService.createMembership(userId, teamId, 2));\n      });\n      $q.all(teamMembershipQueries).then(function success() {\n        deferred.resolve();\n      });\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create user',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.deleteUser = function (id) {\n    return Users.remove({\n      id: id\n    }).$promise;\n  };\n\n  service.updateUser = function (id, {\n    password,\n    role,\n    username\n  }) {\n    return Users.update({\n      id\n    }, {\n      password,\n      role,\n      username\n    }).$promise;\n  };\n\n  service.updateUserPassword = function (id, currentPassword, newPassword) {\n    var payload = {\n      Password: currentPassword,\n      NewPassword: newPassword\n    };\n    return Users.updatePassword({\n      id: id\n    }, payload).$promise;\n  };\n\n  service.updateUserTheme = function (id, userTheme) {\n    return Users.updateTheme({\n      id\n    }, {\n      userTheme\n    }).$promise;\n  };\n\n  service.userMemberships = function (id) {\n    var deferred = $q.defer();\n    Users.queryMemberships({\n      id: id\n    }).$promise.then(function success(data) {\n      var memberships = data.map(function (item) {\n        return new _models_teamMembership__WEBPACK_IMPORTED_MODULE_3__.TeamMembershipModel(item);\n      });\n      deferred.resolve(memberships);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve user memberships',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.userLeadingTeams = function (id) {\n    var deferred = $q.defer();\n    $q.all({\n      teams: TeamService.teams(),\n      memberships: service.userMemberships(id)\n    }).then(function success(data) {\n      var memberships = data.memberships;\n      var teams = data.teams.filter(function (team) {\n        var membership = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(memberships, {\n          TeamId: team.Id\n        });\n\n        if (membership && membership.Role === 1) {\n          return team;\n        }\n      });\n      deferred.resolve(teams);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve user teams',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createAccessToken = function (id, description) {\n    const deferred = $q.defer();\n    const payload = {\n      description\n    };\n    Users.createAccessToken({\n      id\n    }, payload).$promise.then(data => {\n      deferred.resolve(data);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to create user',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.getAccessTokens = function (id) {\n    var deferred = $q.defer();\n    Users.getAccessTokens({\n      id: id\n    }).$promise.then(function success(data) {\n      var userTokens = data.map(function (item) {\n        return new _portainer_models_user__WEBPACK_IMPORTED_MODULE_1__.UserTokenModel(item);\n      });\n      deferred.resolve(userTokens);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve user tokens',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.deleteAccessToken = function (id, tokenId) {\n    return Users.deleteAccessToken({\n      id: id,\n      tokenId: tokenId\n    }).$promise;\n  };\n\n  service.initAdministrator = function (username, password) {\n    return Users.initAdminUser({\n      Username: username,\n      Password: password\n    }).$promise;\n  };\n\n  service.administratorExists = function () {\n    var deferred = $q.defer();\n    Users.checkAdminUser({}).$promise.then(function success() {\n      deferred.resolve(true);\n    }).catch(function error(err) {\n      if (err.status === 404) {\n        deferred.resolve(false);\n      }\n\n      deferred.reject({\n        msg: 'Unable to verify administrator account existence',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}//# sourceURL=webpack-internal:///96664\n");

}),

16856:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_webhook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/webhook */ 74708);\n\nangular.module('portainer.app').factory('WebhookService', ['$q', 'Webhooks', function WebhookServiceFactory($q, Webhooks) {\n  'use strict';\n\n  var service = {};\n\n  service.webhooks = function (serviceID, endpointID) {\n    var deferred = $q.defer();\n    var filters = {\n      ResourceID: serviceID,\n      EndpointID: endpointID\n    };\n    Webhooks.query({\n      filters: filters\n    }).$promise.then(function success(data) {\n      var webhooks = data.map(function (item) {\n        return new _models_webhook__WEBPACK_IMPORTED_MODULE_0__.WebhookViewModel(item);\n      });\n      deferred.resolve(webhooks);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve webhooks',\n        err: err\n      });\n    });\n    return deferred.promise;\n  };\n\n  service.createServiceWebhook = function (serviceID, endpointID, registryID) {\n    return Webhooks.create({\n      ResourceID: serviceID,\n      EndpointID: endpointID,\n      WebhookType: 1,\n      registryID\n    }).$promise;\n  };\n\n  service.updateServiceWebhook = function (id, registryID) {\n    return Webhooks.update({\n      id,\n      registryID\n    }).$promise;\n  };\n\n  service.deleteWebhook = function (id) {\n    return Webhooks.remove({\n      id: id\n    }).$promise;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///16856\n");

}),

52726:

(function() {

eval("/**\n * Look a the following PR for how to use the wrapper\n * and documentation about it\n * https://github.com/portainer/portainer/pull/2945\n */\nangular.module('portainer').factory('$async', ['$q', function ($q) {\n  return function (asyncFunc, ...args) {\n    const def = $q.defer();\n\n    const wrapper = function (params) {\n      const deferred = $q.defer();\n      asyncFunc(...params).then(deferred.resolve).catch(deferred.reject);\n      return deferred.promise;\n    };\n\n    wrapper(args).then(def.resolve).catch(def.reject);\n    return def.promise;\n  };\n}]);//# sourceURL=webpack-internal:///52726\n");

}),

38890:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _session_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./session-storage */ 85280);\n\nconst DEFAULT_USER = 'admin';\nconst DEFAULT_PASSWORD = 'K7yJPP5qNK4hf1QsRnfV';\nangular.module('portainer.app').factory('Authentication', ['$async', '$state', 'Auth', 'OAuth', 'jwtHelper', 'LocalStorage', 'StateManager', 'EndpointProvider', 'UserService', 'ThemeManager', function AuthenticationFactory($async, $state, Auth, OAuth, jwtHelper, LocalStorage, StateManager, EndpointProvider, UserService, ThemeManager) {\n  'use strict';\n\n  var service = {};\n  var user = {};\n  service.init = init;\n  service.OAuthLogin = OAuthLogin;\n  service.login = login;\n  service.logout = logout;\n  service.isAuthenticated = isAuthenticated;\n  service.getUserDetails = getUserDetails;\n  service.isAdmin = isAdmin;\n\n  async function initAsync() {\n    try {\n      const jwt = LocalStorage.getJWT();\n\n      if (!jwt || jwtHelper.isTokenExpired(jwt)) {\n        return tryAutoLoginExtension();\n      }\n\n      await setUser(jwt);\n      return true;\n    } catch (error) {\n      console.log('Unable to initialize authentication service', error);\n      return tryAutoLoginExtension();\n    }\n  }\n\n  async function logoutAsync(performApiLogout) {\n    if (performApiLogout) {\n      await Auth.logout().$promise;\n    }\n\n    (0,_session_storage__WEBPACK_IMPORTED_MODULE_0__.clear)();\n    StateManager.clean();\n    EndpointProvider.clean();\n    EndpointProvider.setCurrentEndpoint(null);\n    LocalStorage.cleanAuthData();\n    LocalStorage.storeLoginStateUUID('');\n    tryAutoLoginExtension();\n  }\n\n  function logout(performApiLogout) {\n    return $async(logoutAsync, performApiLogout);\n  }\n\n  function init() {\n    return $async(initAsync);\n  }\n\n  async function OAuthLoginAsync(code) {\n    const response = await OAuth.validate({\n      code: code\n    }).$promise;\n    const jwt = setJWTFromResponse(response);\n    await setUser(jwt);\n  }\n\n  function setJWTFromResponse(response) {\n    const jwt = response.jwt;\n    LocalStorage.storeJWT(jwt);\n    return response.jwt;\n  }\n\n  function OAuthLogin(code) {\n    return $async(OAuthLoginAsync, code);\n  }\n\n  async function loginAsync(username, password) {\n    const response = await Auth.login({\n      username: username,\n      password: password\n    }).$promise;\n    const jwt = setJWTFromResponse(response);\n    await setUser(jwt);\n  }\n\n  function login(username, password) {\n    return $async(loginAsync, username, password);\n  }\n\n  function isAuthenticated() {\n    var jwt = LocalStorage.getJWT();\n    return !!jwt && !jwtHelper.isTokenExpired(jwt);\n  }\n\n  function getUserDetails() {\n    return user;\n  }\n\n  async function setUserTheme() {\n    const data = await UserService.user(user.ID); // Initialize user theme base on UserTheme from database\n\n    const userTheme = data.UserTheme;\n\n    if (userTheme === 'auto' || !userTheme) {\n      ThemeManager.autoTheme();\n    } else {\n      ThemeManager.setTheme(userTheme);\n    }\n  }\n\n  async function setUser(jwt) {\n    var tokenPayload = jwtHelper.decodeToken(jwt);\n    user.username = tokenPayload.username;\n    user.ID = tokenPayload.id;\n    user.role = tokenPayload.role;\n    user.forceChangePassword = tokenPayload.forceChangePassword;\n    await setUserTheme();\n  }\n\n  function tryAutoLoginExtension() {\n    if (!window.ddExtension) {\n      return false;\n    }\n\n    return login(DEFAULT_USER, DEFAULT_PASSWORD);\n  }\n\n  function isAdmin() {\n    return !!user && user.role === 1;\n  }\n\n  return service;\n}]);//# sourceURL=webpack-internal:///38890\n");

}),

49519:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! chart.js */ 36301);\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chart_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var filesize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! filesize */ 7084);\n/* harmony import */ var filesize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(filesize__WEBPACK_IMPORTED_MODULE_1__);\n\n\nangular.module('portainer.app').factory('ChartService', [function ChartService() {\n  'use strict'; // Max. number of items to display on a chart\n\n  var CHART_LIMIT = 600;\n  var service = {};\n\n  function defaultChartOptions(pos, tooltipCallback, scalesCallback, isStacked) {\n    return {\n      animation: {\n        duration: 0\n      },\n      responsiveAnimationDuration: 0,\n      responsive: true,\n      tooltips: {\n        mode: 'index',\n        intersect: false,\n        position: pos,\n        callbacks: {\n          label: function (tooltipItem, data) {\n            var datasetLabel = data.datasets[tooltipItem.datasetIndex].label;\n            return tooltipCallback(datasetLabel, tooltipItem.yLabel);\n          }\n        }\n      },\n      layout: {\n        padding: {\n          left: 15\n        }\n      },\n      hover: {\n        animationDuration: 0\n      },\n      scales: {\n        yAxes: [{\n          stacked: isStacked,\n          ticks: {\n            beginAtZero: true,\n            callback: scalesCallback,\n            precision: 0\n          }\n        }]\n      }\n    };\n  }\n\n  function CreateChart(context, label, tooltipCallback, scalesCallback) {\n    return new (chart_js__WEBPACK_IMPORTED_MODULE_0___default())(context, {\n      type: 'line',\n      data: {\n        labels: [],\n        datasets: [{\n          label: label,\n          data: [],\n          fill: true,\n          backgroundColor: 'rgba(151,187,205,0.4)',\n          borderColor: 'rgba(151,187,205,0.6)',\n          pointBackgroundColor: 'rgba(151,187,205,1)',\n          pointBorderColor: 'rgba(151,187,205,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }]\n      },\n      options: defaultChartOptions('nearest', tooltipCallback, scalesCallback)\n    });\n  }\n\n  function CreateMemoryChart(context, tooltipCallback, scalesCallback) {\n    return new (chart_js__WEBPACK_IMPORTED_MODULE_0___default())(context, {\n      type: 'line',\n      data: {\n        labels: [],\n        datasets: [{\n          label: 'Memory',\n          data: [],\n          fill: true,\n          backgroundColor: 'rgba(151,187,205,0.4)',\n          borderColor: 'rgba(151,187,205,0.6)',\n          pointBackgroundColor: 'rgba(151,187,205,1)',\n          pointBorderColor: 'rgba(151,187,205,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }, {\n          label: 'Cache',\n          data: [],\n          fill: true,\n          backgroundColor: 'rgba(255,180,174,0.4)',\n          borderColor: 'rgba(255,180,174,0.6)',\n          pointBackgroundColor: 'rgba(255,180,174,1)',\n          pointBorderColor: 'rgba(255,180,174,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }]\n      },\n      options: defaultChartOptions('nearest', tooltipCallback, scalesCallback, true)\n    });\n  }\n\n  function CreateIOChart(context, tooltipCallback, scalesCallback) {\n    return new (chart_js__WEBPACK_IMPORTED_MODULE_0___default())(context, {\n      type: 'line',\n      data: {\n        labels: [],\n        datasets: [{\n          label: 'Read (Aggregate)',\n          data: [],\n          fill: true,\n          backgroundColor: 'rgba(151,187,205,0.4)',\n          borderColor: 'rgba(151,187,205,0.6)',\n          pointBackgroundColor: 'rgba(151,187,205,1)',\n          pointBorderColor: 'rgba(151,187,205,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }, {\n          label: 'Write (Aggregate)',\n          data: [],\n          fill: true,\n          backgroundColor: 'rgba(255,180,174,0.4)',\n          borderColor: 'rgba(255,180,174,0.6)',\n          pointBackgroundColor: 'rgba(255,180,174,1)',\n          pointBorderColor: 'rgba(255,180,174,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }]\n      },\n      options: defaultChartOptions('nearest', tooltipCallback, scalesCallback, true)\n    });\n  }\n\n  service.CreateCPUChart = function (context) {\n    return CreateChart(context, 'CPU', percentageBasedTooltipLabel, percentageBasedAxisLabel);\n  };\n\n  service.CreateIOChart = function (context) {\n    return CreateIOChart(context, byteBasedTooltipLabel, byteBasedAxisLabel);\n  };\n\n  service.CreateMemoryChart = function (context) {\n    return CreateMemoryChart(context, byteBasedTooltipLabel, byteBasedAxisLabel);\n  };\n\n  service.CreateNetworkChart = function (context) {\n    return new (chart_js__WEBPACK_IMPORTED_MODULE_0___default())(context, {\n      type: 'line',\n      data: {\n        labels: [],\n        datasets: [{\n          label: 'RX on eth0',\n          data: [],\n          fill: false,\n          backgroundColor: 'rgba(151,187,205,0.4)',\n          borderColor: 'rgba(151,187,205,0.6)',\n          pointBackgroundColor: 'rgba(151,187,205,1)',\n          pointBorderColor: 'rgba(151,187,205,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }, {\n          label: 'TX on eth0',\n          data: [],\n          fill: false,\n          backgroundColor: 'rgba(255,180,174,0.4)',\n          borderColor: 'rgba(255,180,174,0.6)',\n          pointBackgroundColor: 'rgba(255,180,174,1)',\n          pointBorderColor: 'rgba(255,180,174,1)',\n          pointRadius: 2,\n          borderWidth: 2\n        }]\n      },\n      options: defaultChartOptions('average', byteBasedTooltipLabel, byteBasedAxisLabel)\n    });\n  };\n\n  function LimitChartItems(chart, CHART_LIMIT) {\n    if (chart.data.datasets[0].data.length > CHART_LIMIT) {\n      chart.data.labels.pop();\n      chart.data.datasets[0].data.pop();\n      chart.data.datasets[1].data.pop();\n    }\n  }\n\n  function UpdateChart(label, value, chart) {\n    chart.data.labels.push(label);\n    chart.data.datasets[0].data.push(value);\n\n    if (chart.data.datasets[0].data.length > CHART_LIMIT) {\n      chart.data.labels.pop();\n      chart.data.datasets[0].data.pop();\n    }\n\n    chart.update(0);\n  }\n\n  service.UpdateMemoryChart = function UpdateChart(label, memoryValue, cacheValue, chart) {\n    chart.data.labels.push(label);\n    chart.data.datasets[0].data.push(memoryValue);\n\n    if (cacheValue) {\n      chart.data.datasets[1].data.push(cacheValue);\n    } else {\n      // cache values are not available for Windows\n      chart.data.datasets.splice(1, 1);\n    }\n\n    LimitChartItems(chart);\n    chart.update(0);\n  };\n\n  service.UpdateCPUChart = UpdateChart;\n\n  service.UpdateIOChart = function (label, read, write, chart) {\n    chart.data.labels.push(label);\n    chart.data.datasets[0].data.push(read);\n    chart.data.datasets[1].data.push(write);\n    LimitChartItems(chart);\n    chart.update(0);\n  };\n\n  service.UpdateNetworkChart = function (label, rx, tx, chart) {\n    chart.data.labels.push(label);\n    chart.data.datasets[0].data.push(rx);\n    chart.data.datasets[1].data.push(tx);\n    LimitChartItems(chart);\n    chart.update(0);\n  };\n\n  function byteBasedTooltipLabel(label, value) {\n    var processedValue = 0;\n\n    if (value > 5) {\n      processedValue = filesize__WEBPACK_IMPORTED_MODULE_1___default()(value, {\n        base: 10,\n        round: 1\n      });\n    } else {\n      processedValue = value.toFixed(1) + 'B';\n    }\n\n    return label + ': ' + processedValue;\n  }\n\n  function byteBasedAxisLabel(value) {\n    if (value > 5) {\n      return filesize__WEBPACK_IMPORTED_MODULE_1___default()(value, {\n        base: 10,\n        round: 1\n      });\n    }\n\n    return value.toFixed(1) + 'B';\n  }\n\n  function percentageBasedAxisLabel(value) {\n    if (value > 1) {\n      return Math.round(value) + '%';\n    }\n\n    return value.toFixed(1) + '%';\n  }\n\n  function percentageBasedTooltipLabel(label, value) {\n    var processedValue = 0;\n\n    if (value > 1) {\n      processedValue = Math.round(value);\n    } else {\n      processedValue = value.toFixed(1);\n    }\n\n    return label + ': ' + processedValue + '%';\n  }\n\n  return service;\n}]);//# sourceURL=webpack-internal:///49519\n");

}),

91112:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/assign */ 3602);\n/* harmony import */ var lodash_es_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_assign__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! codemirror */ 29084);\n/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(codemirror__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var codemirror_mode_yaml_yaml_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! codemirror/mode/yaml/yaml.js */ 65790);\n/* harmony import */ var codemirror_mode_yaml_yaml_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_yaml_yaml_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var codemirror_addon_lint_lint_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! codemirror/addon/lint/lint.js */ 76194);\n/* harmony import */ var codemirror_addon_lint_lint_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_lint_lint_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var codemirror_addon_lint_yaml_lint_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! codemirror/addon/lint/yaml-lint.js */ 82187);\n/* harmony import */ var codemirror_addon_lint_yaml_lint_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_lint_yaml_lint_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var codemirror_addon_display_placeholder_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! codemirror/addon/display/placeholder.js */ 75434);\n/* harmony import */ var codemirror_addon_display_placeholder_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_display_placeholder_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! codemirror/addon/search/search.js */ 94536);\n/* harmony import */ var codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! codemirror/addon/search/searchcursor.js */ 34977);\n/* harmony import */ var codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var codemirror_addon_search_jump_to_line_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! codemirror/addon/search/jump-to-line.js */ 35667);\n/* harmony import */ var codemirror_addon_search_jump_to_line_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_jump_to_line_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! codemirror/addon/dialog/dialog.js */ 4942);\n/* harmony import */ var codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _codeMirrorDialog_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./codeMirrorDialog.css */ 36466);\n\n\n\n\n\n\n\n\n\n\n\nangular.module('portainer.app').factory('CodeMirrorService', function CodeMirrorService() {\n  'use strict';\n\n  var service = {};\n  var codeMirrorGenericOptions = {\n    lineNumbers: true,\n    extraKeys: {\n      'Alt-F': 'findPersistent'\n    }\n  };\n  var codeMirrorYAMLOptions = {\n    mode: 'text/x-yaml',\n    gutters: ['CodeMirror-lint-markers'],\n    lint: true,\n    extraKeys: {\n      'Alt-F': 'findPersistent',\n      Tab: function (cm) {\n        var spaces = Array(cm.getOption('indentUnit') + 1).join(' ');\n        cm.replaceSelection(spaces);\n      }\n    }\n  };\n\n  service.applyCodeMirrorOnElement = function (element, yamlLint, readOnly) {\n    var options = angular.copy(codeMirrorGenericOptions);\n\n    if (yamlLint) {\n      lodash_es_assign__WEBPACK_IMPORTED_MODULE_0___default()(options, codeMirrorYAMLOptions);\n    }\n\n    if (readOnly) {\n      options.readOnly = true;\n    }\n\n    var cm = codemirror__WEBPACK_IMPORTED_MODULE_1___default().fromTextArea(element, options);\n    cm.setSize('100%', 500);\n    return cm;\n  };\n\n  return service;\n});//# sourceURL=webpack-internal:///91112\n");

}),

99679:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _session_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session-storage */ 85280);\nDatatableServiceFactory.$inject = [\"LocalStorage\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('DatatableService', DatatableServiceFactory);\nconst DATATABLE_PREFIX = 'datatable_';\nconst TEXT_FILTER_KEY_PREFIX = `${DATATABLE_PREFIX}text_filter_`;\n/* @ngInject */\n\nfunction DatatableServiceFactory(LocalStorage) {\n  return {\n    setDataTableSettings,\n    getDataTableSettings,\n    setDataTableTextFilters,\n    getDataTableTextFilters,\n    setDataTableFilters,\n    getDataTableFilters,\n    getDataTableOrder,\n    setDataTableOrder,\n    setDataTableExpandedItems,\n    setColumnVisibilitySettings,\n    getDataTableExpandedItems,\n    setDataTableSelectedItems,\n    getDataTableSelectedItems,\n    getColumnVisibilitySettings\n  };\n\n  function setDataTableSettings(key, settings) {\n    LocalStorage.storeDataTableSettings(key, settings);\n  }\n\n  function getDataTableSettings(key) {\n    return LocalStorage.getDataTableSettings(key);\n  }\n\n  function setDataTableTextFilters(key, filters) {\n    _session_storage__WEBPACK_IMPORTED_MODULE_1__.save(TEXT_FILTER_KEY_PREFIX + key, filters);\n  }\n\n  function getDataTableTextFilters(key) {\n    return _session_storage__WEBPACK_IMPORTED_MODULE_1__.get(TEXT_FILTER_KEY_PREFIX + key);\n  }\n\n  function setDataTableFilters(key, filters) {\n    LocalStorage.storeDataTableFilters(key, filters);\n  }\n\n  function getDataTableFilters(key) {\n    return LocalStorage.getDataTableFilters(key);\n  }\n\n  function getDataTableOrder(key) {\n    return LocalStorage.getDataTableOrder(key);\n  }\n\n  function setDataTableOrder(key, orderBy, reverse) {\n    var filter = {\n      orderBy: orderBy,\n      reverse: reverse\n    };\n    LocalStorage.storeDataTableOrder(key, filter);\n  }\n\n  function setDataTableExpandedItems(key, expandedItems) {\n    LocalStorage.storeDataTableExpandedItems(key, expandedItems);\n  }\n\n  function setColumnVisibilitySettings(key, columnVisibility) {\n    LocalStorage.storeColumnVisibilitySettings(key, columnVisibility);\n  }\n\n  function getDataTableExpandedItems(key) {\n    return LocalStorage.getDataTableExpandedItems(key);\n  }\n\n  function setDataTableSelectedItems(key, selectedItems) {\n    LocalStorage.storeDataTableSelectedItems(key, selectedItems);\n  }\n\n  function getDataTableSelectedItems(key) {\n    return LocalStorage.getDataTableSelectedItems(key);\n  }\n\n  function getColumnVisibilitySettings(key) {\n    return LocalStorage.getColumnVisibilitySettings(key);\n  }\n}//# sourceURL=webpack-internal:///99679\n");

}),

65187:

(function() {

eval("angular.module('portainer.app').factory('EndpointProvider',\n/* @ngInject */\n[\"LocalStorage\", \"$uiRouterGlobals\", function EndpointProviderFactory(LocalStorage, $uiRouterGlobals) {\n  const state = {\n    currentEndpoint: null\n  };\n  var service = {};\n  var endpoint = {};\n\n  service.initialize = function () {\n    var endpointID = LocalStorage.getEndpointID();\n    var endpointPublicURL = LocalStorage.getEndpointPublicURL();\n    var offlineMode = LocalStorage.getOfflineMode();\n\n    if (endpointID) {\n      endpoint.ID = endpointID;\n    }\n\n    if (endpointPublicURL) {\n      endpoint.PublicURL = endpointPublicURL;\n    }\n\n    if (offlineMode) {\n      endpoint.OfflineMode = offlineMode;\n    }\n  };\n\n  service.clean = function () {\n    LocalStorage.cleanEndpointData();\n    endpoint = {};\n  };\n\n  service.endpoint = function () {\n    return endpoint;\n  };\n\n  service.endpointID = function () {\n    if (endpoint.ID === undefined) {\n      endpoint.ID = LocalStorage.getEndpointID();\n    }\n\n    if (endpoint.ID === null || endpoint.ID === undefined) {\n      return service.getUrlEndpointID();\n    }\n\n    return endpoint.ID;\n  }; // TODO: technical debt\n  // Reference issue: JIRA CE-463\n  // Documentation (https://ui-router.github.io/ng1/docs/latest/modules/injectables.html) show the usage of either\n  // * $stateParams\n  // * $transition$\n  // * $uiRouterGlobals\n  // to retrieve the URL params\n  //\n  // * $stateParams: is deprecated and will cause a circular dependency injection error\n  // because EndpointProvider is used by EndpointStatusInterceptor which is injected inside $httpProvider\n  // >> [$injector:cdep] Circular dependency found: $uiRouter <- $stateParams <- EndpointProvider <- EndpointStatusInterceptor <- $http <- $uiRouter\n  // For more details, see https://stackoverflow.com/questions/20230691/injecting-state-ui-router-into-http-interceptor-causes-circular-dependency#20230786\n  //\n  // * $transition$: mentionned as the replacement of $stateParams (https://ui-router.github.io/guide/ng1/migrate-to-1_0#stateparams-deprecation)\n  // but is not injectable without tweaks inside a service\n  //\n  // * $uiRouterGlobal: per https://github.com/angular-ui/ui-router/issues/3237#issuecomment-271979688\n  // seems the recommanded way to retrieve params inside a service/factory\n  //\n  // We need this function to fallback on URL endpoint ID when no endpoint has been selected\n\n\n  service.getUrlEndpointID = () => {\n    return $uiRouterGlobals.params.id;\n  };\n\n  service.setEndpointID = function (id) {\n    endpoint.ID = id;\n    LocalStorage.storeEndpointID(id);\n  };\n\n  service.endpointPublicURL = function () {\n    if (endpoint.PublicURL === undefined) {\n      endpoint.PublicURL = LocalStorage.getEndpointPublicURL();\n    }\n\n    return endpoint.PublicURL;\n  };\n\n  service.setEndpointPublicURL = function (publicURL) {\n    endpoint.PublicURL = publicURL;\n    LocalStorage.storeEndpointPublicURL(publicURL);\n  };\n\n  service.endpoints = function () {\n    return LocalStorage.getEndpoints();\n  };\n\n  service.setEndpoints = function (data) {\n    LocalStorage.storeEndpoints(data);\n  };\n\n  service.offlineMode = function () {\n    return endpoint.OfflineMode;\n  };\n\n  service.setOfflineMode = function (isOffline) {\n    endpoint.OfflineMode = isOffline;\n    LocalStorage.storeOfflineMode(isOffline);\n  };\n\n  service.setOfflineModeFromStatus = function (status) {\n    var isOffline = status !== 1;\n    endpoint.OfflineMode = isOffline;\n    LocalStorage.storeOfflineMode(isOffline);\n  };\n\n  service.currentEndpoint = function () {\n    return state.currentEndpoint;\n  };\n\n  service.setCurrentEndpoint = function (endpoint) {\n    state.currentEndpoint = endpoint;\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///65187\n");

}),

21262:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n/* harmony import */ var _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../docker/rest/response/handlers */ 12944);\n\n\nangular.module('portainer.app').factory('FileUploadService', ['$q', 'Upload', 'EndpointProvider', function FileUploadFactory($q, Upload, EndpointProvider) {\n  'use strict';\n\n  var service = {};\n\n  function uploadFile(url, file) {\n    return Upload.upload({\n      url: url,\n      data: {\n        file: file\n      }\n    });\n  }\n\n  service.buildImage = function (names, file, path) {\n    var endpointID = EndpointProvider.endpointID();\n    return Upload.http({\n      url: 'api/endpoints/' + endpointID + '/docker/build',\n      headers: {\n        'Content-Type': file.type\n      },\n      data: file,\n      params: {\n        t: names,\n        dockerfile: path\n      },\n      ignoreLoadingBar: true,\n      transformResponse: function (data) {\n        return (0,_docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__.jsonObjectsToArrayHandler)(data);\n      }\n    });\n  };\n\n  service.buildImageFromFiles = function (names, files) {\n    var endpointID = EndpointProvider.endpointID();\n    return Upload.upload({\n      url: 'api/endpoints/' + endpointID + '/docker/build',\n      headers: {\n        'Content-Type': 'multipart/form-data'\n      },\n      data: {\n        file: files\n      },\n      params: {\n        t: names\n      },\n      transformResponse: function (data) {\n        return (0,_docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__.jsonObjectsToArrayHandler)(data);\n      }\n    });\n  };\n\n  service.loadImages = function (file) {\n    var endpointID = EndpointProvider.endpointID();\n    return Upload.http({\n      url: 'api/endpoints/' + endpointID + '/docker/images/load',\n      headers: {\n        'Content-Type': file.type\n      },\n      data: file,\n      ignoreLoadingBar: true,\n      transformResponse: _docker_rest_response_handlers__WEBPACK_IMPORTED_MODULE_1__.genericHandler\n    });\n  };\n\n  service.createSchedule = function (payload) {\n    return Upload.upload({\n      url: 'api/edge_jobs?method=file',\n      data: {\n        file: payload.File,\n        Name: payload.Name,\n        CronExpression: payload.CronExpression,\n        Image: payload.Image,\n        Endpoints: Upload.json(payload.Endpoints),\n        RetryCount: payload.RetryCount,\n        RetryInterval: payload.RetryInterval\n      }\n    });\n  };\n\n  service.uploadBackup = function (file, password) {\n    return Upload.upload({\n      url: 'api/restore',\n      data: {\n        file,\n        password\n      }\n    });\n  };\n\n  service.createSwarmStack = function (stackName, swarmId, file, env, endpointId) {\n    return Upload.upload({\n      url: 'api/stacks?method=file&type=1&endpointId=' + endpointId,\n      data: {\n        file: file,\n        Name: stackName,\n        SwarmID: swarmId,\n        Env: Upload.json(env)\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.createComposeStack = function (stackName, file, env, endpointId) {\n    return Upload.upload({\n      url: 'api/stacks?method=file&type=2&endpointId=' + endpointId,\n      data: {\n        file: file,\n        Name: stackName,\n        Env: Upload.json(env)\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.createEdgeStack = function createEdgeStack({\n    EdgeGroups,\n    ...payload\n  }, file) {\n    return Upload.upload({\n      url: 'api/edge_stacks?method=file',\n      data: {\n        file,\n        EdgeGroups: Upload.json(EdgeGroups),\n        ...payload\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.createCustomTemplate = function createCustomTemplate(data) {\n    return Upload.upload({\n      url: 'api/custom_templates?method=file',\n      data,\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.configureRegistry = function (registryId, registryManagementConfigurationModel) {\n    return Upload.upload({\n      url: 'api/registries/' + registryId + '/configure',\n      data: registryManagementConfigurationModel\n    });\n  };\n\n  service.createEndpoint = function (name, creationType, URL, PublicURL, groupID, tagIds, TLS, TLSSkipVerify, TLSSkipClientVerify, TLSCAFile, TLSCertFile, TLSKeyFile, checkinInterval, isEdgeDevice) {\n    return Upload.upload({\n      url: 'api/endpoints',\n      data: {\n        Name: name,\n        EndpointCreationType: creationType,\n        URL: URL,\n        PublicURL: PublicURL,\n        GroupID: groupID,\n        TagIds: Upload.json(tagIds),\n        TLS: TLS,\n        TLSSkipVerify: TLSSkipVerify,\n        TLSSkipClientVerify: TLSSkipClientVerify,\n        TLSCACertFile: TLSCAFile,\n        TLSCertFile: TLSCertFile,\n        TLSKeyFile: TLSKeyFile,\n        CheckinInterval: checkinInterval,\n        IsEdgeDevice: isEdgeDevice\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.createAzureEndpoint = function (name, applicationId, tenantId, authenticationKey, groupId, tagIds) {\n    return Upload.upload({\n      url: 'api/endpoints',\n      data: {\n        Name: name,\n        EndpointCreationType: Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_0__.PortainerEndpointCreationTypes.AzureEnvironment,\n        GroupID: groupId,\n        TagIds: Upload.json(tagIds),\n        AzureApplicationID: applicationId,\n        AzureTenantID: tenantId,\n        AzureAuthenticationKey: authenticationKey\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  service.uploadLDAPTLSFiles = function (TLSCAFile, TLSCertFile, TLSKeyFile) {\n    var queue = [];\n\n    if (TLSCAFile) {\n      queue.push(uploadFile('api/upload/tls/ca?folder=ldap', TLSCAFile));\n    }\n\n    if (TLSCertFile) {\n      queue.push(uploadFile('api/upload/tls/cert?folder=ldap', TLSCertFile));\n    }\n\n    if (TLSKeyFile) {\n      queue.push(uploadFile('api/upload/tls/key?folder=ldap', TLSKeyFile));\n    }\n\n    return $q.all(queue);\n  };\n\n  service.uploadTLSFilesForEndpoint = function (endpointID, TLSCAFile, TLSCertFile, TLSKeyFile) {\n    var queue = [];\n\n    if (TLSCAFile) {\n      queue.push(uploadFile('api/upload/tls/ca?folder=' + endpointID, TLSCAFile));\n    }\n\n    if (TLSCertFile) {\n      queue.push(uploadFile('api/upload/tls/cert?folder=' + endpointID, TLSCertFile));\n    }\n\n    if (TLSKeyFile) {\n      queue.push(uploadFile('api/upload/tls/key?folder=' + endpointID, TLSKeyFile));\n    }\n\n    return $q.all(queue);\n  };\n\n  service.uploadOwnershipVoucher = function (voucherFile) {\n    return Upload.upload({\n      url: 'api/fdo/register',\n      data: {\n        voucher: voucherFile\n      },\n      ignoreLoadingBar: true\n    });\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///21262\n");

}),

59197:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n\nangular.module('portainer.app').factory('FormValidator', [function FormValidatorFactory() {\n  'use strict';\n\n  var validator = {};\n\n  validator.validateAccessControl = function (accessControlData, isAdmin) {\n    if (!accessControlData.AccessControlEnabled) {\n      return '';\n    }\n\n    if (isAdmin && accessControlData.Ownership === _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.RESTRICTED && accessControlData.AuthorizedUsers.length === 0 && accessControlData.AuthorizedTeams.length === 0) {\n      return '你必须至少指定一个团队或用户。';\n    } else if (!isAdmin && accessControlData.Ownership === _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlOwnership.RESTRICTED && accessControlData.AuthorizedTeams.length === 0) {\n      return '你必须至少指定一个团队。';\n    }\n\n    return '';\n  };\n\n  return validator;\n}]);//# sourceURL=webpack-internal:///59197\n");

}),

11189:

(function() {

eval("angular.module('portainer.app').factory('LocalStorage', ['localStorageService', function LocalStorageFactory(localStorageService) {\n  return {\n    storeEndpointID: function (id) {\n      localStorageService.set('ENDPOINT_ID', id);\n    },\n    getEndpointID: function () {\n      return localStorageService.get('ENDPOINT_ID');\n    },\n    storeEndpointPublicURL: function (publicURL) {\n      localStorageService.set('ENDPOINT_PUBLIC_URL', publicURL);\n    },\n    getEndpointPublicURL: function () {\n      return localStorageService.get('ENDPOINT_PUBLIC_URL');\n    },\n    storeLoginStateUUID: function (uuid) {\n      localStorageService.set('LOGIN_STATE_UUID', uuid);\n    },\n    getLoginStateUUID: function () {\n      return localStorageService.get('LOGIN_STATE_UUID');\n    },\n    storeOfflineMode: function (isOffline) {\n      localStorageService.set('ENDPOINT_OFFLINE_MODE', isOffline);\n    },\n    getOfflineMode: function () {\n      return localStorageService.get('ENDPOINT_OFFLINE_MODE');\n    },\n    storeEndpoints: function (data) {\n      localStorageService.set('ENDPOINTS_DATA', data);\n    },\n    getEndpoints: function () {\n      return localStorageService.get('ENDPOINTS_DATA');\n    },\n    storeEndpointState: function (state) {\n      localStorageService.set('ENDPOINT_STATE', state);\n    },\n    getEndpointState: function () {\n      return localStorageService.get('ENDPOINT_STATE');\n    },\n    storeApplicationState: function (state) {\n      localStorageService.set('APPLICATION_STATE', state);\n    },\n    getApplicationState: function () {\n      return localStorageService.get('APPLICATION_STATE');\n    },\n    storeUIState: function (state) {\n      localStorageService.set('UI_STATE', state);\n    },\n    getUIState: function () {\n      return localStorageService.get('UI_STATE');\n    },\n    storeJWT: function (jwt) {\n      localStorageService.set('JWT', jwt);\n    },\n    getJWT: function () {\n      return localStorageService.get('JWT');\n    },\n    deleteJWT: function () {\n      localStorageService.remove('JWT');\n    },\n    storePaginationLimit: function (key, count) {\n      localStorageService.set('datatable_pagination_' + key, count);\n    },\n    getPaginationLimit: function (key) {\n      return localStorageService.get('datatable_pagination_' + key);\n    },\n    getDataTableOrder: function (key) {\n      return localStorageService.get('datatable_order_' + key);\n    },\n    storeDataTableOrder: function (key, data) {\n      localStorageService.set('datatable_order_' + key, data);\n    },\n    getDataTableTextFilters: function (key) {\n      return localStorageService.get('datatable_text_filter_' + key);\n    },\n    storeDataTableTextFilters: function (key, data) {\n      localStorageService.set('datatable_text_filter_' + key, data);\n    },\n    getDataTableFilters: function (key) {\n      return localStorageService.get('datatable_filters_' + key);\n    },\n    storeDataTableFilters: function (key, data) {\n      localStorageService.set('datatable_filters_' + key, data);\n    },\n    getDataTableSettings: function (key) {\n      return localStorageService.get('datatable_settings_' + key);\n    },\n    storeDataTableSettings: function (key, data) {\n      localStorageService.set('datatable_settings_' + key, data);\n    },\n    getDataTableExpandedItems: function (key) {\n      return localStorageService.get('datatable_expandeditems_' + key);\n    },\n    storeDataTableExpandedItems: function (key, data) {\n      localStorageService.set('datatable_expandeditems_' + key, data);\n    },\n    getDataTableSelectedItems: function (key) {\n      return localStorageService.get('datatable_selecteditems_' + key);\n    },\n    storeDataTableSelectedItems: function (key, data) {\n      localStorageService.set('datatable_selecteditems_' + key, data);\n    },\n    storeSwarmVisualizerSettings: function (key, data) {\n      localStorageService.set('swarmvisualizer_' + key, data);\n    },\n    getSwarmVisualizerSettings: function (key) {\n      return localStorageService.get('swarmvisualizer_' + key);\n    },\n    storeColumnVisibilitySettings: function (key, data) {\n      localStorageService.set('col_visibility_' + key, data);\n    },\n    getColumnVisibilitySettings: function (key) {\n      return localStorageService.get('col_visibility_' + key);\n    },\n    storeJobImage: function (data) {\n      localStorageService.set('job_image', data);\n    },\n    getJobImage: function () {\n      return localStorageService.get('job_image');\n    },\n    storeActiveTab: function (key, index) {\n      return localStorageService.set('active_tab_' + key, index);\n    },\n    getActiveTab: function (key) {\n      const activeTab = localStorageService.get('active_tab_' + key);\n      return activeTab === null ? 0 : activeTab;\n    },\n    storeLogoutReason: reason => localStorageService.set('logout_reason', reason),\n    getLogoutReason: () => localStorageService.get('logout_reason'),\n    cleanLogoutReason: () => localStorageService.remove('logout_reason'),\n    clean: function () {\n      localStorageService.clearAll();\n    },\n\n    cleanAuthData() {\n      localStorageService.remove('JWT', 'APPLICATION_STATE', 'LOGIN_STATE_UUID');\n    },\n\n    cleanEndpointData() {\n      localStorageService.remove('ENDPOINT_ID', 'ENDPOINT_PUBLIC_URL', 'ENDPOINT_OFFLINE_MODE', 'ENDPOINTS_DATA', 'ENDPOINT_STATE');\n    },\n\n    storeKubernetesSummaryToggle(value) {\n      localStorageService.set('kubernetes_summary_expanded', value);\n    },\n\n    getKubernetesSummaryToggle() {\n      return localStorageService.get('kubernetes_summary_expanded');\n    }\n\n  };\n}]);//# sourceURL=webpack-internal:///11189\n");

}),

16624:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _environments_environment_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../environments/environment.service */ 31848);\nNameValidatorFactory.$inject = [\"Notifications\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').factory('NameValidator', NameValidatorFactory);\n/* @ngInject */\n\nfunction NameValidatorFactory(Notifications) {\n  return {\n    validateEnvironmentName\n  };\n\n  async function validateEnvironmentName(name) {\n    try {\n      const endpoints = await (0,_environments_environment_service__WEBPACK_IMPORTED_MODULE_1__.getEnvironments)({\n        limit: 1,\n        name\n      });\n      return endpoints.value.length > 0;\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to retrieve environment details');\n    }\n  }\n}//# sourceURL=webpack-internal:///16624\n");

}),

40073:

(function() {

eval("angular.module('portainer.app').factory('PaginationService', ['LocalStorage', 'PAGINATION_MAX_ITEMS', function PaginationServiceFactory(LocalStorage, PAGINATION_MAX_ITEMS) {\n  'use strict';\n\n  var service = {};\n\n  service.getPaginationLimit = function (key) {\n    var paginationLimit = PAGINATION_MAX_ITEMS;\n    var storedLimit = LocalStorage.getPaginationLimit(key);\n\n    if (storedLimit !== null) {\n      paginationLimit = storedLimit;\n    }\n\n    return '' + paginationLimit;\n  };\n\n  service.setPaginationLimit = function (key, limit) {\n    LocalStorage.storePaginationLimit(key, limit);\n  };\n\n  return service;\n}]);//# sourceURL=webpack-internal:///40073\n");

}),

44920:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _models_gitlabRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../models/gitlabRegistry */ 62365);\n/* harmony import */ var _models_registryRepository__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/registryRepository */ 64088);\n\n\n\n\nangular.module('portainer.app').factory('RegistryGitlabService', ['$async', 'Gitlab', function RegistryGitlabServiceFactory($async, Gitlab) {\n  'use strict';\n\n  var service = {};\n  /**\n   * PROJECTS\n   */\n\n  async function _getProjectsPage(env, params, projects) {\n    const response = await Gitlab(env).projects(params).$promise;\n    projects = lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(projects, response.data);\n\n    if (response.next) {\n      params.page = response.next;\n      projects = await _getProjectsPage(env, params, projects);\n    }\n\n    return projects;\n  }\n\n  async function projectsAsync(url, token) {\n    try {\n      const data = await _getProjectsPage({\n        url: url,\n        token: token\n      }, {\n        page: 1\n      }, []);\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data, project => new _models_gitlabRegistry__WEBPACK_IMPORTED_MODULE_2__.RegistryGitlabProject(project));\n    } catch (error) {\n      throw {\n        msg: 'Unable to retrieve projects',\n        err: error\n      };\n    }\n  }\n  /**\n   * END PROJECTS\n   */\n\n  /**\n   * REPOSITORIES\n   */\n\n\n  async function _getRepositoriesPage(params, repositories) {\n    const response = await Gitlab().repositories(params).$promise;\n    repositories = lodash_es_concat__WEBPACK_IMPORTED_MODULE_1___default()(repositories, response.data);\n\n    if (response.next) {\n      params.page = response.next;\n      repositories = await _getRepositoriesPage(params, repositories);\n    }\n\n    return repositories;\n  }\n\n  async function repositoriesAsync(registry, endpointId) {\n    try {\n      const params = {\n        id: registry.Id,\n        endpointId: endpointId,\n        projectId: registry.Gitlab.ProjectId,\n        page: 1\n      };\n      const data = await _getRepositoriesPage(params, []);\n      return lodash_es_map__WEBPACK_IMPORTED_MODULE_0___default()(data, r => new _models_registryRepository__WEBPACK_IMPORTED_MODULE_3__.RegistryRepositoryGitlabViewModel(r));\n    } catch (error) {\n      throw {\n        msg: 'Unable to retrieve repositories',\n        err: error\n      };\n    }\n  }\n  /**\n   * END REPOSITORIES\n   */\n\n  /**\n   * SERVICE FUNCTIONS DECLARATION\n   */\n\n\n  function projects(url, token) {\n    return $async(projectsAsync, url, token);\n  }\n\n  function repositories(registry, endpointId) {\n    return $async(repositoriesAsync, registry, endpointId);\n  }\n\n  service.projects = projects;\n  service.repositories = repositories;\n  return service;\n}]);//# sourceURL=webpack-internal:///44920\n");

}),

56858:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/get */ 6632);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_0__);\n\nModalServiceFactory.$inject = [\"$q\", \"ModalService\", \"RegistryService\"];\nangular.module('portainer.app').factory('RegistryModalService', ModalServiceFactory);\n\nfunction ModalServiceFactory($q, ModalService, RegistryService) {\n  const service = {};\n\n  function registries2Options(registries) {\n    return registries.map(r => ({\n      text: r.Name,\n      value: String(r.Id)\n    }));\n  }\n\n  service.registryModal = async function (repository, registries) {\n    const deferred = $q.defer();\n    const options = registries2Options(registries);\n    const registryModel = RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries);\n    const defaultValue = String(lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(registryModel, 'Registry.Id', '0'));\n    ModalService.selectRegistry({\n      title: 'Which registry do you want to use?',\n      inputType: 'select',\n      inputOptions: options,\n      value: defaultValue,\n      callback: registryId => {\n        if (registryId) {\n          const registryModel = RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries, registryId);\n          deferred.resolve(registryModel);\n        } else {\n          deferred.resolve(null);\n        }\n      }\n    });\n    return deferred.promise;\n  };\n\n  return service;\n}//# sourceURL=webpack-internal:///56858\n");

}),

85280:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"clear\": function() { return /* binding */ clear; },\n/* harmony export */   \"save\": function() { return /* binding */ save; },\n/* harmony export */   \"get\": function() { return /* binding */ get; }\n/* harmony export */ });\n/**\n * clears the sessionStorage\n */\nfunction clear() {\n  sessionStorage.clear();\n}\n/**\n * stores `value` as string in `sessionStorage[key]`\n *\n * @param {string} key the key to store value at\n * @param {any} value the value to store - will be stringified using JSON.stringify\n *\n */\n\nfunction save(key, value) {\n  sessionStorage.setItem(key, JSON.stringify(value));\n}\n/**\n * get parses the value stored in sessionStorage[key], if it's not available returns undefined\n *\n * @param {string} key\n */\n\nfunction get(key) {\n  try {\n    const value = sessionStorage.getItem(key);\n    return JSON.parse(value);\n  } catch (e) {\n    return;\n  }\n}//# sourceURL=webpack-internal:///85280\n");

}),

37431:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\nStateManagerFactory.$inject = [\"$async\", \"$q\", \"SystemService\", \"InfoHelper\", \"LocalStorage\", \"SettingsService\", \"StatusService\", \"APPLICATION_CACHE_VALIDITY\", \"AgentPingService\", \"$analytics\", \"EndpointProvider\"];\n\nangular.module('portainer.app').factory('StateManager', StateManagerFactory);\n/* @ngInject */\n\nfunction StateManagerFactory($async, $q, SystemService, InfoHelper, LocalStorage, SettingsService, StatusService, APPLICATION_CACHE_VALIDITY, AgentPingService, $analytics, EndpointProvider) {\n  var manager = {};\n  var state = {\n    loading: true,\n    application: {},\n    endpoint: {},\n    UI: {\n      dismissedInfoPanels: {},\n      dismissedInfoHash: '',\n      timesPasswordChangeSkipped: {},\n      dismissedUpdateVersion: ''\n    }\n  };\n\n  manager.dismissInformationPanel = function (id) {\n    state.UI.dismissedInfoPanels[id] = true;\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.dismissImportantInformation = function (hash) {\n    state.UI.dismissedInfoHash = hash;\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.setRequiredPasswordLength = function (length) {\n    state.UI.requiredPasswordLength = length;\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.setPasswordChangeSkipped = function (userID) {\n    state.UI.instanceId = state.UI.instanceId || state.application.instanceId;\n    state.UI.timesPasswordChangeSkipped[userID] = state.UI.timesPasswordChangeSkipped[userID] + 1 || 1;\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.resetPasswordChangeSkips = function (userID) {\n    if (state.UI.timesPasswordChangeSkipped[userID]) state.UI.timesPasswordChangeSkipped[userID] = 0;\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.clearPasswordChangeSkips = function () {\n    state.UI.timesPasswordChangeSkipped = {};\n    LocalStorage.storeUIState(state.UI);\n  };\n\n  manager.getState = function () {\n    return state;\n  };\n\n  manager.clean = function () {\n    state.endpoint = {};\n    state.application = {};\n  };\n\n  manager.cleanEndpoint = function () {\n    state.endpoint = {};\n    EndpointProvider.clean();\n  };\n\n  manager.updateLogo = function (logoURL) {\n    state.application.logo = logoURL;\n    LocalStorage.storeApplicationState(state.application);\n  };\n\n  manager.updateTheme = function (theme) {\n    state.application.theme = theme;\n    LocalStorage.storeApplicationState(state.application);\n  };\n\n  manager.updateSnapshotInterval = function (interval) {\n    state.application.snapshotInterval = interval;\n    LocalStorage.storeApplicationState(state.application);\n  };\n\n  manager.updateEnableEdgeComputeFeatures = function updateEnableEdgeComputeFeatures(enableEdgeComputeFeatures) {\n    state.application.enableEdgeComputeFeatures = enableEdgeComputeFeatures;\n    LocalStorage.storeApplicationState(state.application);\n  };\n\n  manager.updateEnableTelemetry = function updateEnableTelemetry(enableTelemetry) {\n    state.application.enableTelemetry = enableTelemetry;\n    $analytics.setOptOut(!enableTelemetry);\n    LocalStorage.storeApplicationState(state.application);\n  };\n\n  function assignStateFromStatusAndSettings(status, settings) {\n    state.application.version = status.Version;\n    state.application.edition = status.Edition;\n    state.application.instanceId = status.InstanceID;\n    state.application.demoEnvironment = status.DemoEnvironment;\n    state.application.enableTelemetry = settings.EnableTelemetry;\n    state.application.logo = settings.LogoURL;\n    state.application.snapshotInterval = settings.SnapshotInterval;\n    state.application.enableEdgeComputeFeatures = settings.EnableEdgeComputeFeatures;\n    state.application.validity = moment__WEBPACK_IMPORTED_MODULE_0___default()().unix();\n  }\n\n  function loadApplicationState() {\n    var deferred = $q.defer();\n    $q.all({\n      settings: SettingsService.publicSettings(),\n      status: StatusService.status()\n    }).then(function success(data) {\n      var status = data.status;\n      var settings = data.settings;\n      assignStateFromStatusAndSettings(status, settings);\n      LocalStorage.storeApplicationState(state.application);\n      deferred.resolve(state);\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to retrieve server settings and status',\n        err: err\n      });\n    });\n    return deferred.promise;\n  }\n\n  manager.initialize = initialize;\n\n  async function initialize() {\n    return $async(async () => {\n      const endpointState = LocalStorage.getEndpointState();\n\n      if (endpointState) {\n        state.endpoint = endpointState;\n      }\n\n      const applicationState = LocalStorage.getApplicationState();\n\n      if (isAppStateValid(applicationState)) {\n        state.application = applicationState;\n      } else {\n        await loadApplicationState();\n      }\n\n      const UIState = LocalStorage.getUIState();\n\n      if (UIState) {\n        state.UI = UIState;\n\n        if (state.UI.instanceId && state.UI.instanceId !== state.application.instanceId) {\n          state.UI.instanceId = state.application.instanceId;\n          state.UI.timesPasswordChangeSkipped = {};\n          LocalStorage.storeUIState(state.UI);\n        }\n      }\n\n      state.loading = false;\n      $analytics.setPortainerStatus(state.application.instanceId, state.application.version);\n      $analytics.setOptOut(!state.application.enableTelemetry);\n      return state;\n    });\n  }\n\n  function isAppStateValid(appState) {\n    if (!appState || !appState.validity) {\n      return false;\n    }\n\n    const now = moment__WEBPACK_IMPORTED_MODULE_0___default()().unix();\n    const cacheValidity = now - appState.validity;\n    return cacheValidity < APPLICATION_CACHE_VALIDITY;\n  }\n\n  manager.updateEndpointState = function (endpoint) {\n    var deferred = $q.defer();\n\n    if (endpoint.Type === 3) {\n      state.endpoint.name = endpoint.Name;\n      state.endpoint.mode = {\n        provider: 'AZURE'\n      };\n      LocalStorage.storeEndpointState(state.endpoint);\n      deferred.resolve();\n      return deferred.promise;\n    } else if (endpoint.Type === 5 || endpoint.Type === 6 || endpoint.Type === 7) {\n      state.endpoint.name = endpoint.Name;\n      state.endpoint.mode = {\n        provider: 'KUBERNETES'\n      };\n      LocalStorage.storeEndpointState(state.endpoint);\n      deferred.resolve();\n      return deferred.promise;\n    }\n\n    const reload = endpoint.Status === 1 || !endpoint.Snaphosts || !endpoint.Snaphosts.length || !endpoint.Snapshots[0].SnapshotRaw;\n    $q.all({\n      version: reload ? SystemService.version() : $q.when(endpoint.Snapshots[0].SnapshotRaw.Version),\n      info: reload ? SystemService.info() : $q.when(endpoint.Snapshots[0].SnapshotRaw.Info)\n    }).then(function success(data) {\n      var endpointMode = InfoHelper.determineEndpointMode(data.info, endpoint.Type);\n      var endpointAPIVersion = parseFloat(data.version.ApiVersion);\n      state.endpoint.mode = endpointMode;\n      state.endpoint.name = endpoint.Name;\n      state.endpoint.type = endpoint.Type;\n      state.endpoint.apiVersion = endpointAPIVersion;\n\n      if (endpointMode.agentProxy && endpoint.Status === 1) {\n        return AgentPingService.ping().then(function onPingSuccess(data) {\n          state.endpoint.agentApiVersion = data.version;\n        });\n      }\n    }).then(function () {\n      LocalStorage.storeEndpointState(state.endpoint);\n      deferred.resolve();\n    }).catch(function error(err) {\n      deferred.reject({\n        msg: 'Unable to connect to the Docker environment',\n        err: err\n      });\n    }).finally(function final() {\n      state.loading = false;\n    });\n    return deferred.promise;\n  };\n\n  manager.getAgentApiVersion = function getAgentApiVersion() {\n    return state.endpoint.agentApiVersion;\n  };\n\n  return manager;\n}//# sourceURL=webpack-internal:///37431\n");

}),

98869:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ThemeManager\": function() { return /* binding */ ThemeManager; }\n/* harmony export */ });\nThemeManager.$inject = [\"StateManager\"];\nangular.module('portainer.app').service('ThemeManager', ThemeManager);\n/* @ngInject */\n\nfunction ThemeManager(StateManager) {\n  return {\n    setTheme,\n    autoTheme,\n    defaultTheme\n  };\n\n  function setTheme(theme) {\n    if (!theme) {\n      document.documentElement.removeAttribute('theme');\n    } else {\n      document.documentElement.setAttribute('theme', theme);\n      StateManager.updateTheme(theme);\n    }\n  }\n\n  function autoTheme() {\n    const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : '';\n    this.setTheme(systemTheme);\n  }\n\n  function defaultTheme() {\n    document.documentElement.removeAttribute('theme');\n  }\n}//# sourceURL=webpack-internal:///98869\n");

}),

52855:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"authenticationMethodTypesMap\": function() { return /* binding */ authenticationMethodTypesMap; },\n/* harmony export */   \"authenticationMethodTypesLabels\": function() { return /* binding */ authenticationMethodTypesLabels; }\n/* harmony export */ });\nconst authenticationMethodTypesMap = {\n  INTERNAL: 1,\n  LDAP: 2,\n  OAUTH: 3\n};\nconst authenticationMethodTypesLabels = {\n  [authenticationMethodTypesMap.INTERNAL]: 'Internal',\n  [authenticationMethodTypesMap.LDAP]: 'LDAP',\n  [authenticationMethodTypesMap.OAUTH]: 'OAuth'\n};//# sourceURL=webpack-internal:///52855\n");

}),

98376:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"authenticationActivityTypesMap\": function() { return /* binding */ authenticationActivityTypesMap; },\n/* harmony export */   \"authenticationActivityTypesLabels\": function() { return /* binding */ authenticationActivityTypesLabels; }\n/* harmony export */ });\nconst authenticationActivityTypesMap = {\n  AuthSuccess: 1,\n  AuthFailure: 2,\n  Logout: 3\n};\nconst authenticationActivityTypesLabels = {\n  [authenticationActivityTypesMap.AuthSuccess]: 'Authentication success',\n  [authenticationActivityTypesMap.AuthFailure]: 'Authentication failure',\n  [authenticationActivityTypesMap.Logout]: 'Logout'\n};//# sourceURL=webpack-internal:///98376\n");

}),

50552:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"autoUserProvisionToggle\": function() { return /* binding */ autoUserProvisionToggle; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./auto-user-provision-toggle.html */ 50551);\n\nconst autoUserProvisionToggle = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  transclude: {\n    description: 'fieldDescription'\n  },\n  bindings: {\n    ngModel: '='\n  }\n};//# sourceURL=webpack-internal:///50552\n");

}),

85847:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ldap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ldap */ 36320);\n/* harmony import */ var _auto_user_provision_toggle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auto-user-provision-toggle */ 50552);\n/* harmony import */ var _save_auth_settings_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save-auth-settings-button */ 93467);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.settings.authentication', [_ldap__WEBPACK_IMPORTED_MODULE_1__[\"default\"]]).component('saveAuthSettingsButton', _save_auth_settings_button__WEBPACK_IMPORTED_MODULE_3__.saveAuthSettingsButton).component('autoUserProvisionToggle', _auto_user_provision_toggle__WEBPACK_IMPORTED_MODULE_2__.autoUserProvisionToggle).name);//# sourceURL=webpack-internal:///85847\n");

}),

80612:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AdSettingsController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/compact */ 20810);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\n\n\nclass AdSettingsController {\n  /* @ngInject */\n  constructor(LDAPService) {\n    this.LDAPService = LDAPService;\n    this.domainSuffix = '';\n    this.limitedFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.HIDE_INTERNAL_AUTH;\n    this.onTlscaCertChange = this.onTlscaCertChange.bind(this);\n    this.searchUsers = this.searchUsers.bind(this);\n    this.searchGroups = this.searchGroups.bind(this);\n    this.parseDomainName = this.parseDomainName.bind(this);\n    this.onAccountChange = this.onAccountChange.bind(this);\n  }\n\n  parseDomainName(account) {\n    this.domainName = '';\n\n    if (!account || !account.includes('@')) {\n      return;\n    }\n\n    const [, domainName] = account.split('@');\n\n    if (!domainName) {\n      return;\n    }\n\n    const parts = lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default()(domainName.split('.'));\n\n    this.domainSuffix = parts.map(part => `dc=${part}`).join(',');\n  }\n\n  onAccountChange(account) {\n    this.parseDomainName(account);\n  }\n\n  searchUsers() {\n    return this.LDAPService.users(this.settings);\n  }\n\n  searchGroups() {\n    return this.LDAPService.groups(this.settings);\n  }\n\n  onTlscaCertChange(file) {\n    this.tlscaCert = file;\n  }\n\n  addLDAPUrl() {\n    this.settings.URLs.push('');\n  }\n\n  removeLDAPUrl(index) {\n    this.settings.URLs.splice(index, 1);\n  }\n\n  isSaveSettingButtonDisabled() {\n    return (0,_portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__.isLimitedToBE)(this.limitedFeatureId) || !this.isLdapFormValid();\n  }\n\n  $onInit() {\n    this.tlscaCert = this.settings.TLSCACert;\n    this.parseDomainName(this.settings.ReaderDN);\n  }\n\n}\nAdSettingsController.$inject = [\"LDAPService\"];//# sourceURL=webpack-internal:///80612\n");

}),

66509:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"adSettings\": function() { return /* binding */ adSettings; }\n/* harmony export */ });\n/* harmony import */ var _ad_settings_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ad-settings.controller */ 80612);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ad-settings.html */ 22555);\n\n\nconst adSettings = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ad_settings_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    tlscaCert: '=',\n    state: '=',\n    connectivityCheck: '<',\n    onSaveSettings: '<',\n    saveButtonState: '<',\n    isLdapFormValid: '&?'\n  }\n};//# sourceURL=webpack-internal:///66509\n");

}),

36320:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ad_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ad-settings */ 66509);\n/* harmony import */ var _ldap_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ldap-settings */ 39947);\n/* harmony import */ var _ldap_settings_custom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ldap-settings-custom */ 72928);\n/* harmony import */ var _ldap_settings_openldap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ldap-settings-openldap */ 25702);\n/* harmony import */ var _ldap_connectivity_check__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ldap-connectivity-check */ 18436);\n/* harmony import */ var _ldap_groups_datatable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ldap-groups-datatable */ 59086);\n/* harmony import */ var _ldap_group_search__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ldap-group-search */ 24791);\n/* harmony import */ var _ldap_group_search_item__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ldap-group-search-item */ 82592);\n/* harmony import */ var _ldap_user_search__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ldap-user-search */ 97299);\n/* harmony import */ var _ldap_user_search_item__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ldap-user-search-item */ 16811);\n/* harmony import */ var _ldap_settings_dn_builder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ldap-settings-dn-builder */ 60000);\n/* harmony import */ var _ldap_settings_group_dn_builder__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ldap-settings-group-dn-builder */ 36235);\n/* harmony import */ var _ldap_custom_group_search__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ldap-custom-group-search */ 8282);\n/* harmony import */ var _ldap_custom_admin_group__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ldap-custom-admin-group */ 88996);\n/* harmony import */ var _ldap_settings_security__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ldap-settings-security */ 31939);\n/* harmony import */ var _ldap_settings_test_login__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ldap-settings-test-login */ 75714);\n/* harmony import */ var _ldap_custom_user_search__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ldap-custom-user-search */ 1093);\n/* harmony import */ var _ldap_users_datatable__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ldap-users-datatable */ 84259);\n/* harmony import */ var _ldap_service__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ldap.service */ 46951);\n/* harmony import */ var _ldap_rest__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ldap.rest */ 39314);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.settings.authentication.ldap', []).service('LDAPService', _ldap_service__WEBPACK_IMPORTED_MODULE_19__.LDAPService).service('LDAP', _ldap_rest__WEBPACK_IMPORTED_MODULE_20__.LDAP).component('ldapConnectivityCheck', _ldap_connectivity_check__WEBPACK_IMPORTED_MODULE_5__.ldapConnectivityCheck).component('ldapGroupsDatatable', _ldap_groups_datatable__WEBPACK_IMPORTED_MODULE_6__.ldapGroupsDatatable).component('ldapSettings', _ldap_settings__WEBPACK_IMPORTED_MODULE_2__.ldapSettings).component('adSettings', _ad_settings__WEBPACK_IMPORTED_MODULE_1__.adSettings).component('ldapGroupSearch', _ldap_group_search__WEBPACK_IMPORTED_MODULE_7__.ldapGroupSearch).component('ldapGroupSearchItem', _ldap_group_search_item__WEBPACK_IMPORTED_MODULE_8__.ldapGroupSearchItem).component('ldapUserSearch', _ldap_user_search__WEBPACK_IMPORTED_MODULE_9__.ldapUserSearch).component('ldapUserSearchItem', _ldap_user_search_item__WEBPACK_IMPORTED_MODULE_10__.ldapUserSearchItem).component('ldapSettingsCustom', _ldap_settings_custom__WEBPACK_IMPORTED_MODULE_3__.ldapSettingsCustom).component('ldapSettingsDnBuilder', _ldap_settings_dn_builder__WEBPACK_IMPORTED_MODULE_11__.ldapSettingsDnBuilder).component('ldapSettingsGroupDnBuilder', _ldap_settings_group_dn_builder__WEBPACK_IMPORTED_MODULE_12__.ldapSettingsGroupDnBuilder).component('ldapCustomGroupSearch', _ldap_custom_group_search__WEBPACK_IMPORTED_MODULE_13__.ldapCustomGroupSearch).component('ldapCustomAdminGroup', _ldap_custom_admin_group__WEBPACK_IMPORTED_MODULE_14__.ldapCustomAdminGroup).component('ldapSettingsOpenLdap', _ldap_settings_openldap__WEBPACK_IMPORTED_MODULE_4__.ldapSettingsOpenLdap).component('ldapSettingsSecurity', _ldap_settings_security__WEBPACK_IMPORTED_MODULE_15__.ldapSettingsSecurity).component('ldapSettingsTestLogin', _ldap_settings_test_login__WEBPACK_IMPORTED_MODULE_16__.ldapSettingsTestLogin).component('ldapCustomUserSearch', _ldap_custom_user_search__WEBPACK_IMPORTED_MODULE_17__.ldapCustomUserSearch).component('ldapUsersDatatable', _ldap_users_datatable__WEBPACK_IMPORTED_MODULE_18__.ldapUsersDatatable).name);//# sourceURL=webpack-internal:///36320\n");

}),

18436:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapConnectivityCheck\": function() { return /* binding */ ldapConnectivityCheck; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-connectivity-check.html */ 10386);\n\nconst ldapConnectivityCheck = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    settings: '<',\n    state: '<',\n    connectivityCheck: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///18436\n");

}),

88996:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapCustomAdminGroup\": function() { return /* binding */ ldapCustomAdminGroup; }\n/* harmony export */ });\n/* harmony import */ var _ldap_custom_admin_group_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-custom-admin-group.css */ 40384);\n/* harmony import */ var _ldap_custom_admin_group_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ldap-custom-admin-group.controller */ 53864);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-custom-admin-group.html */ 57498);\n\n\n\nconst ldapCustomAdminGroup = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_custom_admin_group_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    settings: '=',\n    selectedAdminGroups: '=',\n    defaultAdminGroupSearchFilter: '<',\n    onSearchClick: '<',\n    limitedFeatureId: '<',\n    isLimitedFeatureSelfContained: '<'\n  }\n};//# sourceURL=webpack-internal:///88996\n");

}),

53864:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapCustomAdminGroupController; }\n/* harmony export */ });\nclass LdapCustomAdminGroupController {\n  /* @ngInject */\n  constructor($async, $scope, Notifications, LDAPService) {\n    Object.assign(this, {\n      $async,\n      $scope,\n      Notifications,\n      LDAPService\n    });\n    this.groups = null;\n    this.groupstest = null;\n    this.enableAssignAdminGroup = false;\n    this.onRemoveClick = this.onRemoveClick.bind(this);\n    this.onAddClick = this.onAddClick.bind(this);\n    this.search = this.search.bind(this);\n    this.onAdminGroupChange = this.onAdminGroupChange.bind(this);\n  }\n\n  onAddClick() {\n    this.settings.AdminGroupSearchSettings.push({\n      GroupBaseDN: '',\n      GroupAttribute: '',\n      GroupFilter: ''\n    });\n  }\n\n  onRemoveClick(index) {\n    this.settings.AdminGroupSearchSettings.splice(index, 1);\n  }\n\n  search() {\n    return this.$async(async () => {\n      try {\n        this.groups = null;\n        const groups = await this.onSearchClick();\n        this.groups = groups.map(group => ({\n          label: group.name,\n          value: group.name\n        }));\n        this.enableAssignAdminGroup = this.groups && this.groups.length > 0;\n      } catch (error) {\n        this.Notifications.error('失败', error, 'Failed to search groups');\n      }\n    });\n  }\n\n  onAdminGroupChange(value) {\n    return this.$scope.$evalAsync(() => {\n      this.selectedAdminGroups = value;\n    });\n  }\n\n  async $onInit() {\n    if (this.settings.AdminAutoPopulate && this.settings.AdminGroups && this.settings.AdminGroups.length > 0) {\n      await this.search();\n    }\n\n    if (this.groups && this.groups.length > 0) {\n      this.enableAssignAdminGroup = true;\n    }\n  }\n\n}\nLdapCustomAdminGroupController.$inject = [\"$async\", \"$scope\", \"Notifications\", \"LDAPService\"];//# sourceURL=webpack-internal:///53864\n");

}),

8282:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapCustomGroupSearch\": function() { return /* binding */ ldapCustomGroupSearch; }\n/* harmony export */ });\n/* harmony import */ var _ldap_custom_group_search_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-custom-group-search.controller */ 30950);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-custom-group-search.html */ 64042);\n\n\nconst ldapCustomGroupSearch = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_custom_group_search_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    onSearchClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///8282\n");

}),

30950:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapCustomGroupSearchController; }\n/* harmony export */ });\nclass LdapCustomGroupSearchController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    Object.assign(this, {\n      $async,\n      Notifications\n    });\n    this.groups = null;\n    this.showTable = false;\n    this.onRemoveClick = this.onRemoveClick.bind(this);\n    this.onAddClick = this.onAddClick.bind(this);\n    this.search = this.search.bind(this);\n  }\n\n  onAddClick() {\n    this.settings.push({\n      GroupBaseDN: '',\n      GroupAttribute: '',\n      GroupFilter: ''\n    });\n  }\n\n  onRemoveClick(index) {\n    this.settings.splice(index, 1);\n  }\n\n  search() {\n    return this.$async(async () => {\n      try {\n        this.groups = null;\n        this.showTable = true;\n        this.groups = await this.onSearchClick();\n      } catch (error) {\n        this.showTable = false;\n        this.Notifications.error('失败', error, 'Failed to search users');\n      }\n    });\n  }\n\n}\nLdapCustomGroupSearchController.$inject = [\"$async\", \"Notifications\"];//# sourceURL=webpack-internal:///30950\n");

}),

1093:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapCustomUserSearch\": function() { return /* binding */ ldapCustomUserSearch; }\n/* harmony export */ });\n/* harmony import */ var _ldap_custom_user_search_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-custom-user-search.controller */ 39525);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-custom-user-search.html */ 65048);\n\n\nconst ldapCustomUserSearch = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_custom_user_search_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    onSearchClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///1093\n");

}),

39525:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapCustomUserSearchController; }\n/* harmony export */ });\nclass LdapCustomUserSearchController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    Object.assign(this, {\n      $async,\n      Notifications\n    });\n    this.users = null;\n    this.onRemoveClick = this.onRemoveClick.bind(this);\n    this.onAddClick = this.onAddClick.bind(this);\n    this.search = this.search.bind(this);\n  }\n\n  onAddClick() {\n    this.settings.push({\n      BaseDN: '',\n      UserNameAttribute: '',\n      Filter: ''\n    });\n  }\n\n  onRemoveClick(index) {\n    this.settings.splice(index, 1);\n  }\n\n  search() {\n    return this.$async(async () => {\n      try {\n        this.users = null;\n        this.showTable = true;\n        this.users = await this.onSearchClick();\n      } catch (error) {\n        this.showTable = false;\n        this.Notifications.error('失败', error, 'Failed to search users');\n      }\n    });\n  }\n\n}\nLdapCustomUserSearchController.$inject = [\"$async\", \"Notifications\"];//# sourceURL=webpack-internal:///39525\n");

}),

82592:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapGroupSearchItem\": function() { return /* binding */ ldapGroupSearchItem; }\n/* harmony export */ });\n/* harmony import */ var _ldap_group_search_item_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-group-search-item.controller */ 55028);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-group-search-item.html */ 79557);\n\n\nconst ldapGroupSearchItem = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_group_search_item_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    config: '=',\n    index: '<',\n    domainSuffix: '@',\n    baseFilter: '@',\n    onRemoveClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///82592\n");

}),

55028:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsAdGroupSearchItemController; }\n/* harmony export */ });\nclass LdapSettingsAdGroupSearchItemController {\n  /* @ngInject */\n  constructor(Notifications) {\n    Object.assign(this, {\n      Notifications\n    });\n    this.groups = [];\n    this.onChangeBaseDN = this.onChangeBaseDN.bind(this);\n  }\n\n  onChangeBaseDN(baseDN) {\n    this.config.GroupBaseDN = baseDN;\n  }\n\n  addGroup() {\n    this.groups.push({\n      type: 'ou',\n      value: ''\n    });\n  }\n\n  removeGroup($index) {\n    this.groups.splice($index, 1);\n    this.onGroupsChange();\n  }\n\n  onGroupsChange() {\n    const groupsFilter = this.groups.map(({\n      type,\n      value\n    }) => `(${type}=${value})`).join('');\n    this.onFilterChange(groupsFilter ? `(&${this.baseFilter}(|${groupsFilter}))` : `${this.baseFilter}`);\n  }\n\n  onFilterChange(filter) {\n    this.config.GroupFilter = filter;\n  }\n\n  parseGroupFilter() {\n    const match = this.config.GroupFilter.match(/^\\(&\\(objectClass=(\\w+)\\)\\(\\|((\\(\\w+=.+\\))+)\\)\\)$/);\n\n    if (!match) {\n      return;\n    }\n\n    const [,, groupFilter = ''] = match;\n    this.groups = groupFilter.slice(1, -1).split(')(').map(str => str.split('=')).map(([type, value]) => ({\n      type,\n      value\n    }));\n  }\n\n  $onInit() {\n    this.parseGroupFilter();\n  }\n\n}\nLdapSettingsAdGroupSearchItemController.$inject = [\"Notifications\"];//# sourceURL=webpack-internal:///55028\n");

}),

24791:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapGroupSearch\": function() { return /* binding */ ldapGroupSearch; }\n/* harmony export */ });\n/* harmony import */ var _ldap_group_search_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-group-search.controller */ 92459);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-group-search.html */ 3057);\n\n\nconst ldapGroupSearch = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_group_search_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    domainSuffix: '@',\n    baseFilter: '@',\n    onSearchClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///24791\n");

}),

92459:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapGroupSearchController; }\n/* harmony export */ });\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/last */ 11600);\n/* harmony import */ var lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_last__WEBPACK_IMPORTED_MODULE_0__);\n\nclass LdapGroupSearchController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    Object.assign(this, {\n      $async,\n      Notifications\n    });\n    this.groups = null;\n    this.onRemoveClick = this.onRemoveClick.bind(this);\n    this.onAddClick = this.onAddClick.bind(this);\n    this.search = this.search.bind(this);\n  }\n\n  onAddClick() {\n    const lastSetting = lodash_es_last__WEBPACK_IMPORTED_MODULE_0___default()(this.settings);\n\n    this.settings.push({\n      GroupBaseDN: this.domainSuffix,\n      GroupAttribute: lastSetting.GroupAttribute,\n      GroupFilter: this.baseFilter\n    });\n  }\n\n  onRemoveClick(index) {\n    this.settings.splice(index, 1);\n  }\n\n  search() {\n    return this.$async(async () => {\n      try {\n        this.groups = null;\n        this.showTable = true;\n        this.groups = await this.onSearchClick();\n      } catch (error) {\n        this.showTable = false;\n        this.Notifications.error('失败', error, 'Failed to search users');\n      }\n    });\n  }\n\n}\nLdapGroupSearchController.$inject = [\"$async\", \"Notifications\"];//# sourceURL=webpack-internal:///92459\n");

}),

59086:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapGroupsDatatable\": function() { return /* binding */ ldapGroupsDatatable; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-groups-datatable.html */ 30629);\n\nconst ldapGroupsDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n};//# sourceURL=webpack-internal:///59086\n");

}),

72928:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsCustom\": function() { return /* binding */ ldapSettingsCustom; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_custom_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings-custom.css */ 21029);\n/* harmony import */ var _ldap_settings_custom_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ldap-settings-custom.controller */ 96551);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-custom.html */ 15933);\n\n\n\nconst ldapSettingsCustom = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_custom_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    settings: '=',\n    tlscaCert: '=',\n    state: '=',\n    onTlscaCertChange: '<',\n    connectivityCheck: '<',\n    onSearchUsersClick: '<',\n    onSearchGroupsClick: '<',\n    onSaveSettings: '<',\n    saveButtonState: '<',\n    saveButtonDisabled: '<'\n  }\n};//# sourceURL=webpack-internal:///72928\n");

}),

96551:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsCustomController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\nclass LdapSettingsCustomController {\n  constructor() {\n    this.limitedFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.EXTERNAL_AUTH_LDAP;\n  }\n\n  addLDAPUrl() {\n    this.settings.URLs.push('');\n  }\n\n  removeLDAPUrl(index) {\n    this.settings.URLs.splice(index, 1);\n  }\n\n}//# sourceURL=webpack-internal:///96551\n");

}),

60000:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsDnBuilder\": function() { return /* binding */ ldapSettingsDnBuilder; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_dn_builder_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings-dn-builder.controller */ 62680);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-dn-builder.html */ 34778);\n\n\nconst ldapSettingsDnBuilder = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_dn_builder_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    // ngModel: string (dc=,cn=,)\n    ngModel: '<',\n    // onChange(string) => void\n    onChange: '<',\n    // suffix: string (dc=,dc=,)\n    suffix: '@',\n    label: '@',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///60000\n");

}),

62680:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsBaseDnBuilderController; }\n/* harmony export */ });\nclass LdapSettingsBaseDnBuilderController {\n  /* @ngInject */\n  constructor() {\n    this.entries = [];\n  }\n\n  addEntry() {\n    this.entries.push({\n      type: 'ou',\n      value: ''\n    });\n  }\n\n  removeEntry($index) {\n    this.entries.splice($index, 1);\n    this.onEntriesChange();\n  }\n\n  moveUp($index) {\n    if ($index <= 0) {\n      return;\n    }\n\n    arrayMove(this.entries, $index, $index - 1);\n    this.onEntriesChange();\n  }\n\n  moveDown($index) {\n    if ($index >= this.entries.length - 1) {\n      return;\n    }\n\n    arrayMove(this.entries, $index, $index + 1);\n    this.onEntriesChange();\n  }\n\n  onEntriesChange() {\n    const dn = this.entries.filter(({\n      value\n    }) => value).map(({\n      type,\n      value\n    }) => `${type}=${value}`).concat(this.suffix).filter(value => value).join(',');\n    this.onChange(dn);\n  }\n\n  getOUValues(dn, domainSuffix = '') {\n    const regex = /(\\w+)=(\\w*),?/;\n    let ouValues = [];\n    let left = dn;\n    let match = left.match(regex);\n\n    while (match && left !== domainSuffix) {\n      const [, type, value] = match;\n      ouValues.push({\n        type,\n        value\n      });\n      left = left.replace(regex, '');\n      match = left.match(/(\\w+)=(\\w+),?/);\n    }\n\n    return ouValues;\n  }\n\n  parseBaseDN() {\n    this.entries = this.getOUValues(this.ngModel, this.suffix);\n  }\n\n  $onChanges({\n    suffix,\n    ngModel\n  }) {\n    if (!suffix && !ngModel || suffix && suffix.isFirstChange()) {\n      return;\n    }\n\n    this.onEntriesChange();\n  }\n\n  $onInit() {\n    this.parseBaseDN();\n  }\n\n}\nLdapSettingsBaseDnBuilderController.$inject = [];\n\nfunction arrayMove(array, fromIndex, toIndex) {\n  if (!checkValidIndex(array, fromIndex) || !checkValidIndex(array, toIndex)) {\n    throw new Error('index is out of bounds');\n  }\n\n  const [item] = array.splice(fromIndex, 1);\n  array.splice(toIndex, 0, item);\n\n  function checkValidIndex(array, index) {\n    return index >= 0 && index <= array.length;\n  }\n}//# sourceURL=webpack-internal:///62680\n");

}),

36235:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsGroupDnBuilder\": function() { return /* binding */ ldapSettingsGroupDnBuilder; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_group_dn_builder_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings-group-dn-builder.controller */ 91117);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-group-dn-builder.html */ 88006);\n\n\nconst ldapSettingsGroupDnBuilder = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_group_dn_builder_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    // ngModel: string (dc=,cn=,)\n    ngModel: '<',\n    // onChange(string) => void\n    onChange: '<',\n    // suffix: string (dc=,dc=,)\n    suffix: '@',\n    // index: int >= 0\n    index: '<',\n    onRemoveClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///36235\n");

}),

91117:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsGroupDnBuilderController; }\n/* harmony export */ });\nclass LdapSettingsGroupDnBuilderController {\n  /* @ngInject */\n  constructor() {\n    this.groupName = '';\n    this.entries = '';\n    this.onEntriesChange = this.onEntriesChange.bind(this);\n    this.onGroupNameChange = this.onGroupNameChange.bind(this);\n    this.onGroupChange = this.onGroupChange.bind(this);\n    this.removeGroup = this.removeGroup.bind(this);\n  }\n\n  onEntriesChange(entries) {\n    this.onGroupChange(this.groupName, entries);\n  }\n\n  onGroupNameChange() {\n    this.onGroupChange(this.groupName, this.entries);\n  }\n\n  onGroupChange(groupName, entries) {\n    if (!groupName) {\n      return;\n    }\n\n    const groupNameEntry = `cn=${groupName}`;\n    this.onChange(this.index, entries || this.suffix ? `${groupNameEntry},${entries || this.suffix}` : groupNameEntry);\n  }\n\n  removeGroup() {\n    this.onRemoveClick(this.index);\n  }\n\n  parseEntries(value, suffix) {\n    if (value === suffix) {\n      this.groupName = '';\n      this.entries = suffix;\n      return;\n    }\n\n    const [groupName, entries] = this.ngModel.split(/,(.+)/);\n    this.groupName = groupName.replace('cn=', '');\n    this.entries = entries || '';\n  }\n\n  $onChange({\n    ngModel,\n    suffix\n  }) {\n    if ((!suffix || suffix.isFirstChange()) && !ngModel) {\n      return;\n    }\n\n    this.parseEntries(ngModel.value, suffix.value);\n  }\n\n  $onInit() {\n    this.parseEntries(this.ngModel, this.suffix);\n  }\n\n}\nLdapSettingsGroupDnBuilderController.$inject = [];//# sourceURL=webpack-internal:///91117\n");

}),

25702:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsOpenLdap\": function() { return /* binding */ ldapSettingsOpenLdap; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_openldap_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings-openldap.controller */ 58962);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-openldap.html */ 69939);\n\n\nconst ldapSettingsOpenLdap = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_openldap_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    tlscaCert: '=',\n    state: '=',\n    connectivityCheck: '<',\n    onTlscaCertChange: '<',\n    onSearchUsersClick: '<',\n    onSearchGroupsClick: '<',\n    onSaveSettings: '<',\n    saveButtonState: '<',\n    saveButtonDisabled: '<'\n  }\n};//# sourceURL=webpack-internal:///25702\n");

}),

58962:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsOpenLDAPController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\nclass LdapSettingsOpenLDAPController {\n  /* @ngInject */\n  constructor() {\n    this.domainSuffix = '';\n    this.limitedFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.EXTERNAL_AUTH_LDAP;\n    this.findDomainSuffix = this.findDomainSuffix.bind(this);\n    this.parseDomainSuffix = this.parseDomainSuffix.bind(this);\n    this.onAccountChange = this.onAccountChange.bind(this);\n  }\n\n  findDomainSuffix() {\n    const serviceAccount = this.settings.ReaderDN;\n    let domainSuffix = this.parseDomainSuffix(serviceAccount);\n\n    if (!domainSuffix && this.settings.SearchSettings.length > 0) {\n      const searchSettings = this.settings.SearchSettings[0];\n      domainSuffix = this.parseDomainSuffix(searchSettings.BaseDN);\n    }\n\n    this.domainSuffix = domainSuffix;\n  }\n\n  parseDomainSuffix(string = '') {\n    const index = string.toLowerCase().indexOf('dc=');\n    return index !== -1 ? string.substring(index) : '';\n  }\n\n  onAccountChange(serviceAccount) {\n    this.domainSuffix = this.parseDomainSuffix(serviceAccount);\n  }\n\n  addLDAPUrl() {\n    this.settings.URLs.push('');\n  }\n\n  removeLDAPUrl(index) {\n    this.settings.URLs.splice(index, 1);\n  }\n\n  $onInit() {\n    this.findDomainSuffix();\n  }\n\n}\nLdapSettingsOpenLDAPController.$inject = [];//# sourceURL=webpack-internal:///58962\n");

}),

31939:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsSecurity\": function() { return /* binding */ ldapSettingsSecurity; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-security.html */ 39720);\n\nconst ldapSettingsSecurity = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    settings: '=',\n    tlscaCert: '<',\n    onTlscaCertChange: '<',\n    uploadInProgress: '<',\n    title: '@',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///31939\n");

}),

75714:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettingsTestLogin\": function() { return /* binding */ ldapSettingsTestLogin; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_test_login_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings-test-login.css */ 93570);\n/* harmony import */ var _ldap_settings_test_login_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ldap-settings-test-login.controller */ 90829);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings-test-login.html */ 25649);\n\n\n\nconst ldapSettingsTestLogin = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_test_login_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    settings: '=',\n    limitedFeatureId: '<',\n    showBeIndicatorIfNeeded: '<',\n    isLimitedFeatureSelfContained: '<'\n  }\n};//# sourceURL=webpack-internal:///75714\n");

}),

90829:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsTestLogin; }\n/* harmony export */ });\nconst TEST_STATUS = {\n  LOADING: 'LOADING',\n  SUCCESS: 'SUCCESS',\n  FAILURE: '失败'\n};\nclass LdapSettingsTestLogin {\n  /* @ngInject */\n  constructor($async, LDAPService, Notifications) {\n    Object.assign(this, {\n      $async,\n      LDAPService,\n      Notifications\n    });\n    this.TEST_STATUS = TEST_STATUS;\n    this.state = {\n      testStatus: ''\n    };\n  }\n\n  async testLogin(username, password) {\n    return this.$async(async () => {\n      this.state.testStatus = TEST_STATUS.LOADING;\n\n      try {\n        const response = await this.LDAPService.testLogin(this.settings, username, password);\n        this.state.testStatus = response.valid ? TEST_STATUS.SUCCESS : TEST_STATUS.FAILURE;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to test login');\n        this.state.testStatus = TEST_STATUS.FAILURE;\n      }\n    });\n  }\n\n}\nLdapSettingsTestLogin.$inject = [\"$async\", \"LDAPService\", \"Notifications\"];//# sourceURL=webpack-internal:///90829\n");

}),

54512:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildLdapSettingsModel\": function() { return /* binding */ buildLdapSettingsModel; },\n/* harmony export */   \"buildAdSettingsModel\": function() { return /* binding */ buildAdSettingsModel; },\n/* harmony export */   \"buildOpenLDAPSettingsModel\": function() { return /* binding */ buildOpenLDAPSettingsModel; }\n/* harmony export */ });\nfunction buildLdapSettingsModel() {\n  return {\n    AnonymousMode: true,\n    ReaderDN: '',\n    URLs: [''],\n    ServerType: 0,\n    TLSConfig: {\n      TLS: false,\n      TLSSkipVerify: false\n    },\n    StartTLS: false,\n    SearchSettings: [{\n      BaseDN: '',\n      Filter: '',\n      UserNameAttribute: ''\n    }],\n    GroupSearchSettings: [{\n      GroupBaseDN: '',\n      GroupFilter: '',\n      GroupAttribute: ''\n    }],\n    AdminGroupSearchSettings: [{\n      GroupBaseDN: '',\n      GroupFilter: '',\n      GroupAttribute: ''\n    }],\n    AutoCreateUsers: true\n  };\n}\nfunction buildAdSettingsModel() {\n  const settings = buildLdapSettingsModel();\n  settings.ServerType = 2;\n  settings.AnonymousMode = false;\n  settings.SearchSettings[0].UserNameAttribute = 'sAMAccountName';\n  settings.SearchSettings[0].Filter = '(objectClass=user)';\n  settings.GroupSearchSettings[0].GroupAttribute = 'member';\n  settings.GroupSearchSettings[0].GroupFilter = '(objectClass=group)';\n  return settings;\n}\nfunction buildOpenLDAPSettingsModel() {\n  const settings = buildLdapSettingsModel();\n  settings.ServerType = 1;\n  settings.AnonymousMode = false;\n  settings.SearchSettings[0].UserNameAttribute = 'uid';\n  settings.SearchSettings[0].Filter = '(objectClass=inetOrgPerson)';\n  settings.GroupSearchSettings[0].GroupAttribute = 'member';\n  settings.GroupSearchSettings[0].GroupFilter = '(objectClass=groupOfNames)';\n  return settings;\n}//# sourceURL=webpack-internal:///54512\n");

}),

39947:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapSettings\": function() { return /* binding */ ldapSettings; }\n/* harmony export */ });\n/* harmony import */ var _ldap_settings_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-settings.controller */ 37556);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-settings.html */ 75634);\n\n\nconst ldapSettings = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_settings_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    tlscaCert: '=',\n    state: '<',\n    connectivityCheck: '<',\n    onSaveSettings: '<',\n    saveButtonState: '<',\n    isLdapFormValid: '<'\n  }\n};//# sourceURL=webpack-internal:///39947\n");

}),

37556:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapSettingsController; }\n/* harmony export */ });\n/* harmony import */ var _portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/settings/authentication/ldap/ldap-settings.model */ 54512);\n/* harmony import */ var _ldap_options__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ldap-options */ 71143);\n\n\nconst SERVER_TYPES = {\n  CUSTOM: 0,\n  OPEN_LDAP: 1,\n  AD: 2\n};\nconst DEFAULT_GROUP_FILTER = '(objectClass=groupOfNames)';\nconst DEFAULT_USER_FILTER = '(objectClass=inetOrgPerson)';\nclass LdapSettingsController {\n  /* @ngInject */\n  constructor(LDAPService) {\n    Object.assign(this, {\n      LDAPService,\n      SERVER_TYPES\n    });\n    this.tlscaCert = null;\n    this.settingsDrafts = {};\n    this.boxSelectorOptions = _ldap_options__WEBPACK_IMPORTED_MODULE_1__.options;\n    this.onTlscaCertChange = this.onTlscaCertChange.bind(this);\n    this.searchUsers = this.searchUsers.bind(this);\n    this.searchGroups = this.searchGroups.bind(this);\n    this.onChangeServerType = this.onChangeServerType.bind(this);\n  }\n\n  onTlscaCertChange(file) {\n    this.tlscaCert = file;\n  }\n\n  $onInit() {\n    this.tlscaCert = this.settings.TLSConfig.TLSCACert;\n  }\n\n  onChangeServerType(serverType) {\n    this.settingsDrafts[this.settings.ServerType] = this.settings;\n\n    if (this.settingsDrafts[serverType]) {\n      this.settings = this.settingsDrafts[serverType];\n      return;\n    }\n\n    switch (serverType) {\n      case SERVER_TYPES.OPEN_LDAP:\n        this.settings = (0,_portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_0__.buildOpenLDAPSettingsModel)();\n        break;\n\n      case SERVER_TYPES.CUSTOM:\n        this.settings = (0,_portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_0__.buildLdapSettingsModel)();\n        break;\n    }\n  }\n\n  searchUsers() {\n    const settings = { ...this.settings,\n      SearchSettings: this.settings.SearchSettings.map(search => ({ ...search,\n        Filter: search.Filter || DEFAULT_USER_FILTER\n      }))\n    };\n    return this.LDAPService.users(settings);\n  }\n\n  searchGroups() {\n    const settings = { ...this.settings,\n      GroupSearchSettings: this.settings.GroupSearchSettings.map(search => ({ ...search,\n        GroupFilter: search.GroupFilter || DEFAULT_GROUP_FILTER\n      }))\n    };\n    return this.LDAPService.groups(settings);\n  }\n\n}\nLdapSettingsController.$inject = [\"LDAPService\"];//# sourceURL=webpack-internal:///37556\n");

}),

16811:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapUserSearchItem\": function() { return /* binding */ ldapUserSearchItem; }\n/* harmony export */ });\n/* harmony import */ var _ldap_user_search_item_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-user-search-item.controller */ 93669);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-user-search-item.html */ 25972);\n\n\nconst ldapUserSearchItem = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_user_search_item_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    config: '=',\n    index: '<',\n    showUsernameFormat: '<',\n    domainSuffix: '@',\n    baseFilter: '@',\n    onRemoveClick: '<',\n    limitedFeatureId: '<'\n  }\n};//# sourceURL=webpack-internal:///16811\n");

}),

93669:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapUserSearchItemController; }\n/* harmony export */ });\nclass LdapUserSearchItemController {\n  /* @ngInject */\n  constructor() {\n    this.groups = [];\n    this.onBaseDNChange = this.onBaseDNChange.bind(this);\n    this.onGroupChange = this.onGroupChange.bind(this);\n    this.onGroupsChange = this.onGroupsChange.bind(this);\n    this.removeGroup = this.removeGroup.bind(this);\n  }\n\n  onBaseDNChange(baseDN) {\n    this.config.BaseDN = baseDN;\n  }\n\n  onGroupChange(index, group) {\n    this.groups[index] = group;\n    this.onGroupsChange(this.groups);\n  }\n\n  onGroupsChange(groups) {\n    this.config.Filter = this.generateUserFilter(groups);\n  }\n\n  removeGroup(index) {\n    this.groups.splice(index, 1);\n    this.onGroupsChange(this.groups);\n  }\n\n  addGroup() {\n    this.groups.push(this.domainSuffix ? `cn=,${this.domainSuffix}` : 'cn=');\n  }\n\n  generateUserFilter(groups) {\n    const filteredGroups = groups.filter(group => group !== this.domainSuffix);\n\n    if (!filteredGroups.length) {\n      return this.baseFilter;\n    }\n\n    const groupsFilter = filteredGroups.map(group => `(memberOf=${group})`);\n    return `(&${this.baseFilter}${groupsFilter.length > 1 ? `(|${groupsFilter.join('')})` : groupsFilter[0]})`;\n  }\n\n  parseFilter() {\n    const filter = this.config.Filter;\n\n    if (filter === this.baseFilter) {\n      return;\n    }\n\n    if (!filter.includes('|')) {\n      const index = filter.indexOf('memberOf=');\n\n      if (index > -1) {\n        this.groups = [filter.slice(index + 9, -2)];\n      }\n\n      return;\n    }\n\n    const members = filter.slice(filter.indexOf('|') + 2, -3);\n    this.groups = members.split(')(').map(member => member.replace('memberOf=', ''));\n  }\n\n  $onInit() {\n    this.parseFilter();\n  }\n\n}\nLdapUserSearchItemController.$inject = [];//# sourceURL=webpack-internal:///93669\n");

}),

97299:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapUserSearch\": function() { return /* binding */ ldapUserSearch; }\n/* harmony export */ });\n/* harmony import */ var _ldap_user_search_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ldap-user-search.controller */ 34188);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-user-search.html */ 36452);\n\n\nconst ldapUserSearch = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ldap_user_search_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    settings: '=',\n    domainSuffix: '@',\n    showUsernameFormat: '<',\n    baseFilter: '@',\n    limitedFeatureId: '<',\n    onSearchClick: '<'\n  }\n};//# sourceURL=webpack-internal:///97299\n");

}),

34188:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LdapUserSearchController; }\n/* harmony export */ });\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/compact */ 20810);\n/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/last */ 11600);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_last__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass LdapUserSearchController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    Object.assign(this, {\n      $async,\n      Notifications\n    });\n    this.users = null;\n    this.showTable = false;\n    this.onRemoveClick = this.onRemoveClick.bind(this);\n    this.onAddClick = this.onAddClick.bind(this);\n    this.search = this.search.bind(this);\n  }\n\n  onAddClick() {\n    const lastSetting = lodash_last__WEBPACK_IMPORTED_MODULE_1___default()(this.settings);\n\n    this.settings.push({\n      BaseDN: this.domainSuffix,\n      UserNameAttribute: lastSetting.UserNameAttribute,\n      Filter: this.baseFilter\n    });\n  }\n\n  onRemoveClick(index) {\n    this.settings.splice(index, 1);\n  }\n\n  search() {\n    return this.$async(async () => {\n      try {\n        this.users = null;\n        this.showTable = true;\n        const users = await this.onSearchClick();\n        this.users = lodash_compact__WEBPACK_IMPORTED_MODULE_0___default()(users);\n      } catch (error) {\n        this.Notifications.error('失败', error, 'Failed to search users');\n        this.showTable = false;\n      }\n    });\n  }\n\n}\nLdapUserSearchController.$inject = [\"$async\", \"Notifications\"];//# sourceURL=webpack-internal:///34188\n");

}),

84259:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ldapUsersDatatable\": function() { return /* binding */ ldapUsersDatatable; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ldap-users-datatable.html */ 30235);\n\nconst ldapUsersDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'GenericDatatableController',\n  bindings: {\n    titleText: '@',\n    titleIcon: '@',\n    dataset: '<',\n    tableKey: '@',\n    orderBy: '@',\n    reverseOrder: '<'\n  }\n};//# sourceURL=webpack-internal:///84259\n");

}),

39314:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LDAP\": function() { return /* binding */ LDAP; }\n/* harmony export */ });\nLDAP.$inject = [\"$resource\"];\nconst API_ENDPOINT_LDAP = 'api/ldap';\n/* @ngInject */\n\nfunction LDAP($resource) {\n  return $resource(`${API_ENDPOINT_LDAP}/:action`, {}, {\n    check: {\n      method: 'POST',\n      params: {\n        action: 'check'\n      }\n    },\n    users: {\n      method: 'POST',\n      isArray: true,\n      params: {\n        action: 'users'\n      }\n    },\n    groups: {\n      method: 'POST',\n      isArray: true,\n      params: {\n        action: 'groups'\n      }\n    },\n    testLogin: {\n      method: 'POST',\n      params: {\n        action: 'test'\n      }\n    }\n  });\n}//# sourceURL=webpack-internal:///39314\n");

}),

46951:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LDAPService\": function() { return /* binding */ LDAPService; }\n/* harmony export */ });\nLDAPService.$inject = [\"LDAP\"];\n\n/* @ngInject */\nfunction LDAPService(LDAP) {\n  return {\n    users,\n    groups,\n    check,\n    testLogin\n  };\n\n  function users(ldapSettings) {\n    return LDAP.users({\n      ldapSettings\n    }).$promise;\n  }\n\n  async function groups(ldapSettings) {\n    const userGroups = await LDAP.groups({\n      ldapSettings\n    }).$promise;\n    return userGroups.map(({\n      Name,\n      Groups\n    }) => {\n      let name = Name;\n\n      if (Name.includes(',') && Name.includes('=')) {\n        const [cnName] = Name.split(',');\n        const split = cnName.split('=');\n        name = split[1];\n      }\n\n      return {\n        Groups,\n        Name: name\n      };\n    });\n  }\n\n  function check(ldapSettings) {\n    return LDAP.check({\n      ldapSettings\n    }).$promise;\n  }\n\n  function testLogin(ldapSettings, username, password) {\n    return LDAP.testLogin({\n      ldapSettings,\n      username,\n      password\n    }).$promise;\n  }\n}//# sourceURL=webpack-internal:///46951\n");

}),

93467:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"saveAuthSettingsButton\": function() { return /* binding */ saveAuthSettingsButton; }\n/* harmony export */ });\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./save-auth-settings-button.html */ 83133);\n\nconst saveAuthSettingsButton = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  bindings: {\n    onSaveSettings: '<',\n    saveButtonDisabled: '<',\n    saveButtonState: '<',\n    limitedFeatureId: '<',\n    limitedFeatureClass: '<',\n    className: '<'\n  }\n};//# sourceURL=webpack-internal:///93467\n");

}),

6972:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ssl_certificate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ssl-certificate */ 13655);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.settings.general', []).component('sslCertificateSettings', _ssl_certificate__WEBPACK_IMPORTED_MODULE_1__.sslCertificate).name);//# sourceURL=webpack-internal:///6972\n");

}),

13655:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"sslCertificate\": function() { return /* binding */ sslCertificate; }\n/* harmony export */ });\n/* harmony import */ var _ssl_certificate_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssl-certificate.controller.js */ 12617);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./ssl-certificate.html */ 83791);\n\n\nconst sslCertificate = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _ssl_certificate_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///13655\n");

}),

12617:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nclass SslCertificateController {\n  /* @ngInject */\n  constructor($async, $scope, $state, SSLService, Notifications) {\n    Object.assign(this, {\n      $async,\n      $scope,\n      $state,\n      SSLService,\n      Notifications\n    });\n    this.cert = null;\n    this.originalValues = {\n      forceHTTPS: false,\n      certFile: null,\n      keyFile: null\n    };\n    this.formValues = {\n      certFile: null,\n      keyFile: null,\n      forceHTTPS: false\n    };\n    this.state = {\n      actionInProgress: false,\n      reloadingPage: false\n    };\n    const pemPattern = '.pem';\n    this.certFilePattern = `${pemPattern},.crt,.cer,.cert`;\n    this.keyFilePattern = `${pemPattern},.key`;\n    this.save = this.save.bind(this);\n    this.onChangeForceHTTPS = this.onChangeForceHTTPS.bind(this);\n  }\n\n  isFormChanged() {\n    return Object.entries(this.originalValues).some(([key, value]) => value != this.formValues[key]);\n  }\n\n  onChangeForceHTTPS(checked) {\n    return this.$scope.$evalAsync(() => {\n      this.formValues.forceHTTPS = checked;\n    });\n  }\n\n  async save() {\n    return this.$async(async () => {\n      this.state.actionInProgress = true;\n\n      try {\n        const cert = this.formValues.certFile ? await this.formValues.certFile.text() : null;\n        const key = this.formValues.keyFile ? await this.formValues.keyFile.text() : null;\n        const httpEnabled = !this.formValues.forceHTTPS;\n        await this.SSLService.upload(httpEnabled, cert, key);\n        await new Promise(resolve => setTimeout(resolve, 2000));\n        location.reload();\n        this.state.reloadingPage = true;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed applying changes');\n      }\n\n      this.state.actionInProgress = false;\n    });\n  }\n\n  wasHTTPsChanged() {\n    return this.originalValues.forceHTTPS !== this.formValues.forceHTTPS;\n  }\n\n  async $onInit() {\n    return this.$async(async () => {\n      try {\n        const certInfo = await this.SSLService.get();\n        this.formValues.forceHTTPS = !certInfo.httpEnabled;\n        this.originalValues.forceHTTPS = this.formValues.forceHTTPS;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed loading certificate info');\n      }\n    });\n  }\n\n}\n\nSslCertificateController.$inject = [\"$async\", \"$scope\", \"$state\", \"SSLService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (SslCertificateController);//# sourceURL=webpack-internal:///12617\n");

}),

52744:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _authentication__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./authentication */ 85847);\n/* harmony import */ var _general__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./general */ 6972);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.settings', [_authentication__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _general__WEBPACK_IMPORTED_MODULE_2__[\"default\"]]).name);//# sourceURL=webpack-internal:///52744\n");

}),

48557:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ActivityLogsDatatableController; }\n/* harmony export */ });\nclass ActivityLogsDatatableController {\n  /* @ngInject */\n  constructor($controller, $scope, PaginationService) {\n    this.PaginationService = PaginationService;\n    this.tableKey = 'authLogs';\n    const $onInit = this.$onInit;\n    angular.extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n    this.changeSort = this.changeSort.bind(this);\n    this.handleChangeLimit = this.handleChangeLimit.bind(this);\n    this.$onInit = $onInit.bind(this);\n  }\n\n  changeSort(key) {\n    let desc = false;\n\n    if (key === this.sort.key) {\n      desc = !this.sort.desc;\n    }\n\n    this.onChangeSort({\n      key,\n      desc\n    });\n  }\n\n  handleChangeLimit(limit) {\n    this.PaginationService.setPaginationLimit(this.tableKey, limit);\n    this.onChangeLimit(limit);\n  }\n\n  $onInit() {\n    this.$onInitGeneric();\n    const limit = this.PaginationService.getPaginationLimit(this.tableKey);\n\n    if (limit) {\n      this.onChangeLimit(+limit);\n    }\n  }\n\n}\nActivityLogsDatatableController.$inject = [\"$controller\", \"$scope\", \"PaginationService\"];//# sourceURL=webpack-internal:///48557\n");

}),

32654:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"activityLogsDatatable\": function() { return /* binding */ activityLogsDatatable; }\n/* harmony export */ });\n/* harmony import */ var _activity_logs_datatable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./activity-logs-datatable.css */ 82794);\n/* harmony import */ var _activity_logs_datatable_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./activity-logs-datatable.controller.js */ 48557);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./activity-logs-datatable.html */ 79765);\n\n\n\nconst activityLogsDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _activity_logs_datatable_controller_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    logs: '<',\n    keyword: '<',\n    sort: '<',\n    limit: '<',\n    totalItems: '<',\n    currentPage: '<',\n    feature: '@',\n    onChangeContextFilter: '<',\n    onChangeKeyword: '<',\n    onChangeSort: '<',\n    onChangeLimit: '<',\n    onChangePage: '<'\n  }\n};//# sourceURL=webpack-internal:///32654\n");

}),

38427:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ActivityLogsViewController; }\n/* harmony export */ });\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\n\nclass ActivityLogsViewController {\n  /* @ngInject */\n  constructor($async, $scope, Notifications) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.Notifications = Notifications;\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.ACTIVITY_AUDIT;\n    this.state = {\n      keyword: '',\n      date: {\n        from: 0,\n        to: 0\n      },\n      sort: {\n        key: 'Timestamp',\n        desc: true\n      },\n      page: 1,\n      limit: 10,\n      totalItems: 0,\n      logs: null\n    };\n    this.today = moment__WEBPACK_IMPORTED_MODULE_0___default()().endOf('day');\n    this.minValidDate = moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(7, 'd').startOf('day');\n    this.onChangeDate = this.onChangeDate.bind(this);\n    this.onChangeKeyword = this.onChangeKeyword.bind(this);\n    this.onChangeSort = this.onChangeSort.bind(this);\n    this.loadLogs = this.loadLogs.bind(this);\n    this.onChangePage = this.onChangePage.bind(this);\n    this.onChangeLimit = this.onChangeLimit.bind(this);\n  }\n\n  onChangePage(page) {\n    this.state.page = page;\n    this.loadLogs();\n  }\n\n  onChangeLimit(limit) {\n    this.state.page = 1;\n    this.state.limit = limit;\n    this.loadLogs();\n  }\n\n  onChangeSort(sort) {\n    this.state.page = 1;\n    this.state.sort = sort;\n    this.loadLogs();\n  }\n\n  onChangeKeyword(keyword) {\n    return this.$scope.$evalAsync(() => {\n      this.state.page = 1;\n      this.state.keyword = keyword;\n      this.loadLogs();\n    });\n  }\n\n  onChangeDate({\n    startDate,\n    endDate\n  }) {\n    this.state.page = 1;\n    this.state.date = {\n      to: endDate,\n      from: startDate\n    };\n    this.loadLogs();\n  }\n\n  async loadLogs() {\n    return this.$async(async () => {\n      this.state.logs = null;\n\n      try {\n        const {\n          logs,\n          totalCount\n        } = {\n          logs: [{}, {}, {}, {}, {}],\n          totalCount: 5\n        };\n        this.state.logs = logs;\n        this.state.totalItems = totalCount;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed loading user activity logs');\n      }\n    });\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.loadLogs();\n    });\n  }\n\n}\nActivityLogsViewController.$inject = [\"$async\", \"$scope\", \"Notifications\"];//# sourceURL=webpack-internal:///38427\n");

}),

85331:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"activityLogsView\": function() { return /* binding */ activityLogsView; }\n/* harmony export */ });\n/* harmony import */ var _activity_logs_view_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./activity-logs-view.controller.js */ 38427);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./activity-logs-view.html */ 28459);\n\n\nconst activityLogsView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _activity_logs_view_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///85331\n");

}),

9800:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _activity_logs_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./activity-logs-view */ 85331);\n/* harmony import */ var _activity_logs_datatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./activity-logs-datatable */ 32654);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.user-activity.activity-logs-view', []).component('activityLogsDatatable', _activity_logs_datatable__WEBPACK_IMPORTED_MODULE_2__.activityLogsDatatable).component('activityLogsView', _activity_logs_view__WEBPACK_IMPORTED_MODULE_1__.activityLogsView).name);//# sourceURL=webpack-internal:///9800\n");

}),

91651:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_settings_authentication_auth_method_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/settings/authentication/auth-method-constants */ 52855);\n/* harmony import */ var _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/settings/authentication/auth-type-constants */ 98376);\n\n\n\nclass ActivityLogsDatatableController {\n  /* @ngInject */\n  constructor($controller, $scope, PaginationService) {\n    this.PaginationService = PaginationService;\n    this.tableKey = 'authLogs';\n    this.contextFilterLabels = Object.values(_portainer_settings_authentication_auth_method_constants__WEBPACK_IMPORTED_MODULE_0__.authenticationMethodTypesMap).map(value => ({\n      value,\n      label: _portainer_settings_authentication_auth_method_constants__WEBPACK_IMPORTED_MODULE_0__.authenticationMethodTypesLabels[value]\n    }));\n    this.typeFilterLabels = Object.values(_portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesMap).map(value => ({\n      value,\n      label: _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesLabels[value]\n    }));\n    const $onInit = this.$onInit;\n    angular.extend(this, $controller('GenericDatatableController', {\n      $scope\n    }));\n    this.$onInit = $onInit.bind(this);\n    this.changeSort = this.changeSort.bind(this);\n    this.handleChangeLimit = this.handleChangeLimit.bind(this);\n  }\n\n  changeSort(key) {\n    let desc = false;\n\n    if (key === this.sort.key) {\n      desc = !this.sort.desc;\n    }\n\n    this.onChangeSort({\n      key,\n      desc\n    });\n  }\n\n  contextType(context) {\n    if (!(context in _portainer_settings_authentication_auth_method_constants__WEBPACK_IMPORTED_MODULE_0__.authenticationMethodTypesLabels)) {\n      return '';\n    }\n\n    return _portainer_settings_authentication_auth_method_constants__WEBPACK_IMPORTED_MODULE_0__.authenticationMethodTypesLabels[context];\n  }\n\n  activityType(type) {\n    if (!(type in _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesLabels)) {\n      return '';\n    }\n\n    return _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesLabels[type];\n  }\n\n  isAuthSuccess(type) {\n    return type === _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesMap.AuthSuccess;\n  }\n\n  isAuthFailure(type) {\n    return type === _portainer_settings_authentication_auth_type_constants__WEBPACK_IMPORTED_MODULE_1__.authenticationActivityTypesMap.AuthFailure;\n  }\n\n  handleChangeLimit(limit) {\n    this.PaginationService.setPaginationLimit(this.tableKey, limit);\n    this.onChangeLimit(limit);\n  }\n\n  $onInit() {\n    this.$onInitGeneric();\n    const limit = this.PaginationService.getPaginationLimit(this.tableKey);\n\n    if (limit) {\n      this.handleChangeLimit(+limit);\n    }\n  }\n\n}\n\nActivityLogsDatatableController.$inject = [\"$controller\", \"$scope\", \"PaginationService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (ActivityLogsDatatableController);//# sourceURL=webpack-internal:///91651\n");

}),

66823:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"authLogsDatatable\": function() { return /* binding */ authLogsDatatable; }\n/* harmony export */ });\n/* harmony import */ var _auth_logs_datatable_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./auth-logs-datatable.controller */ 91651);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./auth-logs-datatable.html */ 28572);\n\n\nconst authLogsDatatable = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _auth_logs_datatable_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    logs: '<',\n    keyword: '<',\n    sort: '<',\n    limit: '<',\n    totalItems: '<',\n    currentPage: '<',\n    contextFilter: '<',\n    typeFilter: '<',\n    feature: '@',\n    onChangeContextFilter: '<',\n    onChangeTypeFilter: '<',\n    onChangeKeyword: '<',\n    onChangeSort: '<',\n    onChangeLimit: '<',\n    onChangePage: '<'\n  }\n};//# sourceURL=webpack-internal:///66823\n");

}),

93873:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AuthLogsViewController; }\n/* harmony export */ });\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\n\nclass AuthLogsViewController {\n  /* @ngInject */\n  constructor($async, Notifications) {\n    this.$async = $async;\n    this.Notifications = Notifications;\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.ACTIVITY_AUDIT;\n    this.state = {\n      keyword: 'f',\n      date: {\n        from: 0,\n        to: 0\n      },\n      sort: {\n        key: 'Timestamp',\n        desc: true\n      },\n      contextFilter: [1, 2, 3],\n      typeFilter: [1, 2, 3],\n      page: 1,\n      limit: 10,\n      totalItems: 0,\n      logs: null\n    };\n    this.today = moment__WEBPACK_IMPORTED_MODULE_0___default()().endOf('day');\n    this.minValidDate = moment__WEBPACK_IMPORTED_MODULE_0___default()().subtract(7, 'd').startOf('day');\n    this.onChangeDate = this.onChangeDate.bind(this);\n    this.onChangeKeyword = this.onChangeKeyword.bind(this);\n    this.onChangeSort = this.onChangeSort.bind(this);\n    this.onChangeContextFilter = this.onChangeContextFilter.bind(this);\n    this.onChangeTypeFilter = this.onChangeTypeFilter.bind(this);\n    this.loadLogs = this.loadLogs.bind(this);\n    this.onChangePage = this.onChangePage.bind(this);\n    this.onChangeLimit = this.onChangeLimit.bind(this);\n  }\n\n  onChangePage(page) {\n    this.state.page = page;\n    this.loadLogs();\n  }\n\n  onChangeLimit(limit) {\n    this.state.page = 1;\n    this.state.limit = limit;\n    this.loadLogs();\n  }\n\n  onChangeSort(sort) {\n    this.state.page = 1;\n    this.state.sort = sort;\n    this.loadLogs();\n  }\n\n  onChangeContextFilter(filterKey, filterState) {\n    this.state.contextFilter = filterState;\n    this.loadLogs();\n  }\n\n  onChangeTypeFilter(filterKey, filterState) {\n    this.state.typeFilter = filterState;\n    this.loadLogs();\n  }\n\n  onChangeKeyword(keyword) {\n    return this.$scope.$evalAsync(() => {\n      this.state.page = 1;\n      this.state.keyword = keyword;\n      this.loadLogs();\n    });\n  }\n\n  onChangeDate({\n    startDate,\n    endDate\n  }) {\n    this.state.page = 1;\n    this.state.date = {\n      to: endDate,\n      from: startDate\n    };\n    this.loadLogs();\n  }\n\n  async loadLogs() {\n    return this.$async(async () => {\n      this.state.logs = null;\n\n      try {\n        const {\n          logs,\n          totalCount\n        } = {\n          logs: [{}, {}, {}, {}, {}],\n          totalCount: 5\n        };\n        this.state.logs = decorateLogs(logs);\n        this.state.totalItems = totalCount;\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Failed loading auth activity logs');\n      }\n    });\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.loadLogs();\n    });\n  }\n\n}\nAuthLogsViewController.$inject = [\"$async\", \"Notifications\"];\n\nfunction decorateLogs(logs) {\n  return logs;\n}//# sourceURL=webpack-internal:///93873\n");

}),

8364:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"authLogsView\": function() { return /* binding */ authLogsView; }\n/* harmony export */ });\n/* harmony import */ var _auth_logs_view_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./auth-logs-view.controller.js */ 93873);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./auth-logs-view.html */ 22261);\n\n\nconst authLogsView = {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _auth_logs_view_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};//# sourceURL=webpack-internal:///8364\n");

}),

45303:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _auth_logs_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auth-logs-view */ 8364);\n/* harmony import */ var _auth_logs_datatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auth-logs-datatable */ 66823);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.user-activity.auth-logs-view', []).component('authLogsView', _auth_logs_view__WEBPACK_IMPORTED_MODULE_1__.authLogsView).component('authLogsDatatable', _auth_logs_datatable__WEBPACK_IMPORTED_MODULE_2__.authLogsDatatable).name);//# sourceURL=webpack-internal:///45303\n");

}),

45347:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_portainer_notifications_NotificationsView__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/notifications/NotificationsView */ 92081);\n/* harmony import */ var _auth_logs_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auth-logs-view */ 45303);\n/* harmony import */ var _activity_logs_view__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./activity-logs-view */ 9800);\nconfig.$inject = [\"$stateRegistryProvider\"];\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (angular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app.user-activity', [_auth_logs_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _activity_logs_view__WEBPACK_IMPORTED_MODULE_3__[\"default\"]]).component('notifications', _react_portainer_notifications_NotificationsView__WEBPACK_IMPORTED_MODULE_1__.NotificationsViewAngular).config(config).name);\n/* @ngInject */\n\nfunction config($stateRegistryProvider) {\n  $stateRegistryProvider.register({\n    name: 'portainer.authLogs',\n    url: '/auth-logs',\n    views: {\n      'content@': {\n        component: 'authLogsView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.activityLogs',\n    url: '/activity-logs',\n    views: {\n      'content@': {\n        component: 'activityLogsView'\n      }\n    }\n  });\n  $stateRegistryProvider.register({\n    name: 'portainer.notifications',\n    url: '/notifications',\n    views: {\n      'content@': {\n        component: 'notifications'\n      }\n    },\n    params: {\n      id: ''\n    }\n  });\n}//# sourceURL=webpack-internal:///45347\n");

}),

68325:

(function() {

eval("angular.module('portainer.app').controller('AccountController', ['$scope', '$state', 'Authentication', 'UserService', 'Notifications', 'SettingsService', 'StateManager', 'ThemeManager', 'ModalService', function ($scope, $state, Authentication, UserService, Notifications, SettingsService, StateManager, ThemeManager, ModalService) {\n  $scope.formValues = {\n    currentPassword: '',\n    newPassword: '',\n    confirmPassword: '',\n    userTheme: ''\n  };\n\n  $scope.updatePassword = async function () {\n    const confirmed = await ModalService.confirmChangePassword();\n\n    if (confirmed) {\n      try {\n        await UserService.updateUserPassword($scope.userID, $scope.formValues.currentPassword, $scope.formValues.newPassword);\n        Notifications.success('Success', 'Password successfully updated');\n        StateManager.resetPasswordChangeSkips($scope.userID.toString());\n        $scope.forceChangePassword = false;\n        $state.go('portainer.logout');\n      } catch (err) {\n        Notifications.error('失败', err, err.msg);\n      }\n    }\n  };\n\n  $scope.skipPasswordChange = async function () {\n    try {\n      if ($scope.userCanSkip()) {\n        StateManager.setPasswordChangeSkipped($scope.userID.toString());\n        $scope.forceChangePassword = false;\n        $state.go('portainer.home');\n      }\n    } catch (err) {\n      Notifications.error('失败', err, err.msg);\n    }\n  };\n\n  $scope.userCanSkip = function () {\n    return $scope.timesPasswordChangeSkipped < 2;\n  };\n\n  this.uiCanExit = newTransition => {\n    if (newTransition) {\n      if ($scope.userRole === 1 && newTransition.to().name === 'portainer.settings.authentication') {\n        return true;\n      }\n\n      if (newTransition.to().name === 'portainer.logout') {\n        return true;\n      }\n    }\n\n    if ($scope.forceChangePassword) {\n      ModalService.confirmForceChangePassword();\n    }\n\n    return !$scope.forceChangePassword;\n  };\n\n  $scope.uiCanExit = () => {\n    return this.uiCanExit();\n  };\n\n  $scope.removeAction = selectedTokens => {\n    const msg = '您是否想删除所选的访问令牌？任何使用这些令牌的脚本或应用程序将不再能够调用Portainer API。';\n    ModalService.confirmDeletion(msg, function (confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      let actionCount = selectedTokens.length;\n      selectedTokens.forEach(token => {\n        UserService.deleteAccessToken($scope.userID, token.id).then(() => {\n          Notifications.success('Success', '令牌成功移除');\n          var index = $scope.tokens.indexOf(token);\n          $scope.tokens.splice(index, 1);\n        }).catch(err => {\n          Notifications.error('失败', err, '无法删除令牌');\n        }).finally(() => {\n          --actionCount;\n\n          if (actionCount === 0) {\n            $state.reload();\n          }\n        });\n      });\n    });\n  }; // Update DOM for theme attribute & LocalStorage\n\n\n  $scope.setTheme = function (theme) {\n    ThemeManager.setTheme(theme);\n    StateManager.updateTheme(theme);\n  }; // Rest API Call to update theme with userID in DB\n\n\n  $scope.updateTheme = function () {\n    UserService.updateUserTheme($scope.userID, $scope.formValues.userTheme).then(function success() {\n      Notifications.success('Success', '用户主题成功更新');\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, err.msg);\n    });\n  };\n\n  async function initView() {\n    const state = StateManager.getState();\n    const userDetails = Authentication.getUserDetails();\n    $scope.userID = userDetails.ID;\n    $scope.userRole = Authentication.getUserDetails().role;\n    $scope.forceChangePassword = userDetails.forceChangePassword;\n    $scope.isInitialAdmin = userDetails.ID === 1;\n\n    if (state.application.demoEnvironment.enabled) {\n      $scope.isDemoUser = state.application.demoEnvironment.users.includes($scope.userID);\n    }\n\n    const data = await UserService.user($scope.userID);\n    $scope.formValues.userTheme = data.UserTheme;\n    SettingsService.publicSettings().then(function success(data) {\n      $scope.AuthenticationMethod = data.AuthenticationMethod;\n\n      if (state.UI.requiredPasswordLength && state.UI.requiredPasswordLength !== data.RequiredPasswordLength) {\n        StateManager.clearPasswordChangeSkips();\n      }\n\n      $scope.timesPasswordChangeSkipped = state.UI.timesPasswordChangeSkipped && state.UI.timesPasswordChangeSkipped[$scope.userID.toString()] ? state.UI.timesPasswordChangeSkipped[$scope.userID.toString()] : 0;\n      $scope.requiredPasswordLength = data.RequiredPasswordLength;\n      StateManager.setRequiredPasswordLength(data.RequiredPasswordLength);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索应用程序设置');\n    });\n    UserService.getAccessTokens($scope.userID).then(function success(data) {\n      $scope.tokens = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到用户令牌');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///68325\n");

}),

5012:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CreateUserAccessTokenController; }\n/* harmony export */ });\nclass CreateUserAccessTokenController {\n  /* @ngInject */\n  constructor($async, $analytics, Authentication, UserService, Notifications) {\n    this.$async = $async;\n    this.$analytics = $analytics;\n    this.Authentication = Authentication;\n    this.UserService = UserService;\n    this.Notifications = Notifications;\n    this.onSubmit = this.onSubmit.bind(this);\n    this.onError = this.onError.bind(this);\n  }\n\n  async onSubmit(description) {\n    const accessToken = await this.UserService.createAccessToken(this.state.userId, description); // Dispatch analytics event upon success accessToken generation\n\n    this.$analytics.eventTrack('portainer-account-access-token-create', {\n      category: 'portainer'\n    });\n    return accessToken;\n  }\n\n  onError(heading, error, message) {\n    this.Notifications.error(heading, error, message);\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      const userId = this.Authentication.getUserDetails().ID;\n      this.state = {\n        userId\n      };\n    });\n  }\n\n}\nCreateUserAccessTokenController.$inject = [\"$async\", \"$analytics\", \"Authentication\", \"UserService\", \"Notifications\"];//# sourceURL=webpack-internal:///5012\n");

}),

33219:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _create_user_access_token_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-user-access-token.controller */ 5012);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./create-user-access-token.html */ 48675);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('createUserAccessToken', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _create_user_access_token_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///33219\n");

}),

87374:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\n\nclass AuthenticationController {\n  /* @ngInject */\n  constructor($async, $analytics, $scope, $state, $stateParams, $window, Authentication, UserService, StateManager, Notifications, SettingsService, URLHelper, LocalStorage, StatusService) {\n    this.$async = $async;\n    this.$analytics = $analytics;\n    this.$scope = $scope;\n    this.$state = $state;\n    this.$stateParams = $stateParams;\n    this.$window = $window;\n    this.Authentication = Authentication;\n    this.UserService = UserService;\n    this.StateManager = StateManager;\n    this.Notifications = Notifications;\n    this.SettingsService = SettingsService;\n    this.URLHelper = URLHelper;\n    this.LocalStorage = LocalStorage;\n    this.StatusService = StatusService;\n    this.logo = this.StateManager.getState().application.logo;\n    this.formValues = {\n      Username: '',\n      Password: ''\n    };\n    this.state = {\n      passwordInputType: 'password',\n      showOAuthLogin: false,\n      showStandardLogin: false,\n      AuthenticationError: '',\n      loginInProgress: true,\n      OAuthProvider: ''\n    };\n    this.checkForEndpointsAsync = this.checkForEndpointsAsync.bind(this);\n    this.postLoginSteps = this.postLoginSteps.bind(this);\n    this.oAuthLoginAsync = this.oAuthLoginAsync.bind(this);\n    this.internalLoginAsync = this.internalLoginAsync.bind(this);\n    this.authenticateUserAsync = this.authenticateUserAsync.bind(this);\n    this.manageOauthCodeReturn = this.manageOauthCodeReturn.bind(this);\n    this.authEnabledFlowAsync = this.authEnabledFlowAsync.bind(this);\n    this.onInit = this.onInit.bind(this);\n  }\n  /**\n   * UTILS FUNCTIONS SECTION\n   */\n\n\n  toggleShowPassword() {\n    this.state.passwordInputType = this.state.passwordInputType === 'text' ? 'password' : 'text';\n  } // set the password input type to password, so that browser autofills don't treat the input as text\n\n\n  setPasswordInputType(inputType) {\n    this.state.passwordInputType = inputType;\n    document.getElementById('password').setAttribute('type', inputType);\n  }\n\n  logout(error) {\n    this.Authentication.logout();\n    this.state.loginInProgress = false;\n    this.generateOAuthLoginURI();\n    this.LocalStorage.storeLogoutReason(error);\n    this.$window.location.reload();\n  }\n\n  error(err, message) {\n    this.state.AuthenticationError = message;\n\n    if (!err) {\n      err = {};\n    }\n\n    this.Notifications.error('失败', err, message);\n    this.state.loginInProgress = false;\n  }\n\n  determineOauthProvider(LoginURI) {\n    if (LoginURI.indexOf('login.microsoftonline.com') !== -1) {\n      return 'Microsoft';\n    } else if (LoginURI.indexOf('accounts.google.com') !== -1) {\n      return 'Google';\n    } else if (LoginURI.indexOf('github.com') !== -1) {\n      return 'Github';\n    }\n\n    return 'OAuth';\n  }\n\n  generateState() {\n    const uuid = uuid_v4__WEBPACK_IMPORTED_MODULE_1___default()();\n    this.LocalStorage.storeLoginStateUUID(uuid);\n    return '&state=' + uuid;\n  }\n\n  generateOAuthLoginURI() {\n    this.OAuthLoginURI = this.state.OAuthLoginURI + this.generateState();\n  }\n\n  hasValidState(state) {\n    const savedUUID = this.LocalStorage.getLoginStateUUID();\n    return savedUUID && state && savedUUID === state;\n  }\n  /**\n   * END UTILS FUNCTIONS SECTION\n   */\n\n  /**\n   * POST LOGIN STEPS SECTION\n   */\n\n\n  async checkForEndpointsAsync() {\n    try {\n      const isAdmin = this.Authentication.isAdmin();\n      const endpoints = await (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__.getEnvironments)({\n        limit: 1\n      });\n\n      if (this.Authentication.getUserDetails().forceChangePassword) {\n        return this.$state.go('portainer.account');\n      }\n\n      if (endpoints.value.length === 0 && isAdmin) {\n        return this.$state.go('portainer.wizard');\n      } else {\n        return this.$state.go('portainer.home');\n      }\n    } catch (err) {\n      this.error(err, '无法检索环境');\n    }\n  }\n\n  async postLoginSteps() {\n    await this.StateManager.initialize();\n    const isAdmin = this.Authentication.isAdmin();\n    this.$analytics.setUserRole(isAdmin ? 'admin' : 'standard-user');\n    await this.checkForEndpointsAsync();\n  }\n  /**\n   * END POST LOGIN STEPS SECTION\n   */\n\n  /**\n   * LOGIN METHODS SECTION\n   */\n\n\n  async oAuthLoginAsync(code) {\n    try {\n      await this.Authentication.OAuthLogin(code);\n      this.URLHelper.cleanParameters();\n    } catch (err) {\n      this.error(err, '无法通过OAuth登录');\n    }\n  }\n\n  async internalLoginAsync(username, password) {\n    await this.Authentication.login(username, password);\n    await this.postLoginSteps();\n  }\n  /**\n   * END LOGIN METHODS SECTION\n   */\n\n  /**\n   * AUTHENTICATE USER SECTION\n   */\n\n\n  async authenticateUserAsync() {\n    try {\n      var username = this.formValues.Username;\n      var password = this.formValues.Password;\n      this.state.loginInProgress = true;\n      await this.internalLoginAsync(username, password);\n    } catch (err) {\n      this.error(err, '无法登录');\n    }\n  }\n\n  authenticateUser() {\n    this.setPasswordInputType('password');\n    return this.$async(this.authenticateUserAsync);\n  }\n  /**\n   * END AUTHENTICATE USER SECTION\n   */\n\n  /**\n   * ON INIT SECTION\n   */\n\n\n  async manageOauthCodeReturn(code, state) {\n    if (this.hasValidState(state)) {\n      await this.oAuthLoginAsync(code);\n    } else {\n      this.error(null, 'OAuth状态无效，请重试。');\n    }\n  }\n\n  async authEnabledFlowAsync() {\n    try {\n      const exists = await this.UserService.administratorExists();\n\n      if (!exists) {\n        this.$state.go('portainer.init.admin');\n      }\n    } catch (err) {\n      this.error(err, '无法验证管理员帐户是否存在');\n    }\n  }\n\n  toggleStandardLogin() {\n    this.state.showStandardLogin = !this.state.showStandardLogin;\n  }\n\n  async onInit() {\n    try {\n      const settings = await this.SettingsService.publicSettings();\n      this.state.showOAuthLogin = settings.AuthenticationMethod === 3;\n      this.state.showStandardLogin = !this.state.showOAuthLogin;\n      this.state.OAuthLoginURI = settings.OAuthLoginURI;\n      this.state.OAuthProvider = this.determineOauthProvider(settings.OAuthLoginURI);\n      const code = this.URLHelper.getParameter('code');\n      const state = this.URLHelper.getParameter('state');\n\n      if (code && state) {\n        await this.manageOauthCodeReturn(code, state);\n        this.generateOAuthLoginURI();\n        return;\n      }\n\n      if (!this.logo) {\n        await this.StateManager.initialize();\n        this.logo = this.StateManager.getState().application.logo;\n      }\n\n      this.generateOAuthLoginURI();\n\n      if (this.$stateParams.logout || this.$stateParams.error) {\n        this.logout(this.$stateParams.error);\n        return;\n      }\n\n      const error = this.LocalStorage.getLogoutReason();\n\n      if (error) {\n        this.state.AuthenticationError = error;\n        this.LocalStorage.cleanLogoutReason();\n      }\n\n      if (this.Authentication.isAuthenticated()) {\n        await this.postLoginSteps();\n      }\n\n      this.state.loginInProgress = false;\n      await this.authEnabledFlowAsync();\n    } catch (err) {\n      this.Notifications.error('失败', err, '无法检索公共设置');\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n  /**\n   * END ON INIT SECTION\n   */\n\n\n}\n\nAuthenticationController.$inject = [\"$async\", \"$analytics\", \"$scope\", \"$state\", \"$stateParams\", \"$window\", \"Authentication\", \"UserService\", \"StateManager\", \"Notifications\", \"SettingsService\", \"URLHelper\", \"LocalStorage\", \"StatusService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (AuthenticationController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('AuthenticationController', AuthenticationController);//# sourceURL=webpack-internal:///87374\n");

}),

46581:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/some */ 99432);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_some__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/constants */ 71541);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\n\n\n\n\n\nclass CreateCustomTemplateViewController {\n  /* @ngInject */\n  constructor($async, $state, $window, Authentication, ModalService, CustomTemplateService, FormValidator, Notifications, ResourceControlService, StackService, StateManager) {\n    Object.assign(this, {\n      $async,\n      $state,\n      $window,\n      Authentication,\n      ModalService,\n      CustomTemplateService,\n      FormValidator,\n      Notifications,\n      ResourceControlService,\n      StackService,\n      StateManager\n    });\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__.isBE;\n    this.formValues = {\n      Title: '',\n      FileContent: '',\n      File: null,\n      RepositoryURL: '',\n      RepositoryReferenceName: '',\n      RepositoryAuthentication: false,\n      RepositoryUsername: '',\n      RepositoryPassword: '',\n      ComposeFilePathInRepository: 'docker-compose.yml',\n      Description: '',\n      Note: '',\n      Logo: '',\n      Platform: 1,\n      Type: 1,\n      AccessControlData: new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__.AccessControlFormData(),\n      Variables: []\n    };\n    this.state = {\n      Method: 'editor',\n      formValidationError: '',\n      actionInProgress: false,\n      fromStack: false,\n      loading: true,\n      isEditorDirty: false,\n      templateNameRegex: _constants__WEBPACK_IMPORTED_MODULE_2__.TEMPLATE_NAME_VALIDATION_REGEX,\n      isTemplateValid: true\n    };\n    this.templates = [];\n    this.createCustomTemplate = this.createCustomTemplate.bind(this);\n    this.createCustomTemplateAsync = this.createCustomTemplateAsync.bind(this);\n    this.validateForm = this.validateForm.bind(this);\n    this.createCustomTemplateByMethod = this.createCustomTemplateByMethod.bind(this);\n    this.createCustomTemplateFromFileContent = this.createCustomTemplateFromFileContent.bind(this);\n    this.createCustomTemplateFromFileUpload = this.createCustomTemplateFromFileUpload.bind(this);\n    this.createCustomTemplateFromGitRepository = this.createCustomTemplateFromGitRepository.bind(this);\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.onChangeMethod = this.onChangeMethod.bind(this);\n    this.onVariablesChange = this.onVariablesChange.bind(this);\n    this.handleChange = this.handleChange.bind(this);\n  }\n\n  onVariablesChange(value) {\n    this.handleChange({\n      Variables: value\n    });\n  }\n\n  handleChange(values) {\n    return this.$async(async () => {\n      this.formValues = { ...this.formValues,\n        ...values\n      };\n    });\n  }\n\n  createCustomTemplate() {\n    return this.$async(this.createCustomTemplateAsync);\n  }\n\n  onChangeMethod() {\n    this.formValues.FileContent = '';\n    this.formValues.Variables = [];\n    this.selectedTemplate = null;\n  }\n\n  async createCustomTemplateAsync() {\n    let method = this.state.Method;\n\n    if (method === 'template') {\n      method = 'editor';\n    }\n\n    if (!this.validateForm(method)) {\n      return;\n    }\n\n    this.state.actionInProgress = true;\n\n    try {\n      const customTemplate = await this.createCustomTemplateByMethod(method);\n      const accessControlData = this.formValues.AccessControlData;\n      const userDetails = this.Authentication.getUserDetails();\n      const userId = userDetails.ID;\n      await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl);\n      this.Notifications.success('Success', 'Custom template successfully created');\n      this.state.isEditorDirty = false;\n      this.$state.go('docker.templates.custom');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'A template with the same name already exists');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  validateForm(method) {\n    this.state.formValidationError = '';\n\n    if (method === 'editor' && this.formValues.FileContent === '') {\n      this.state.formValidationError = 'Template file content must not be empty';\n      return false;\n    }\n\n    const title = this.formValues.Title;\n\n    const isNotUnique = lodash_some__WEBPACK_IMPORTED_MODULE_0___default()(this.templates, template => template.Title === title);\n\n    if (isNotUnique) {\n      this.state.formValidationError = 'A template with the same name already exists';\n      return false;\n    }\n\n    const isAdmin = this.Authentication.isAdmin();\n    const accessControlData = this.formValues.AccessControlData;\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  createCustomTemplateByMethod(method) {\n    switch (method) {\n      case 'editor':\n        return this.createCustomTemplateFromFileContent();\n\n      case 'upload':\n        return this.createCustomTemplateFromFileUpload();\n\n      case 'repository':\n        return this.createCustomTemplateFromGitRepository();\n    }\n  }\n\n  createCustomTemplateFromFileContent() {\n    return this.CustomTemplateService.createCustomTemplateFromFileContent(this.formValues);\n  }\n\n  createCustomTemplateFromFileUpload() {\n    return this.CustomTemplateService.createCustomTemplateFromFileUpload(this.formValues);\n  }\n\n  createCustomTemplateFromGitRepository() {\n    return this.CustomTemplateService.createCustomTemplateFromGitRepository(this.formValues);\n  }\n\n  editorUpdate(value) {\n    this.formValues.FileContent = value;\n    this.state.isEditorDirty = true;\n    this.parseTemplate(value);\n  }\n\n  parseTemplate(templateStr) {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const variables = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.getTemplateVariables)(templateStr);\n    const isValid = !!variables;\n    this.state.isTemplateValid = isValid;\n\n    if (isValid) {\n      this.onVariablesChange((0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.intersectVariables)(this.formValues.Variables, variables));\n    }\n  }\n\n  async $onInit() {\n    const applicationState = this.StateManager.getState();\n    this.state.endpointMode = applicationState.endpoint.mode;\n    let stackType = 0;\n\n    if (this.state.endpointMode.provider === 'DOCKER_STANDALONE') {\n      stackType = 2;\n    } else if (this.state.endpointMode.provider === 'DOCKER_SWARM_MODE') {\n      stackType = 1;\n    }\n\n    this.formValues.Type = stackType;\n    const {\n      fileContent,\n      type\n    } = this.$state.params;\n    this.formValues.FileContent = fileContent;\n\n    if (type) {\n      this.formValues.Type = +type;\n    }\n\n    try {\n      this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n    } catch (err) {\n      this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n    }\n\n    this.state.loading = false;\n\n    this.$window.onbeforeunload = () => {\n      if (this.state.Method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n  async uiCanExit() {\n    if (this.state.Method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n}\n\nCreateCustomTemplateViewController.$inject = [\"$async\", \"$state\", \"$window\", \"Authentication\", \"ModalService\", \"CustomTemplateService\", \"FormValidator\", \"Notifications\", \"ResourceControlService\", \"StackService\", \"StateManager\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CreateCustomTemplateViewController);//# sourceURL=webpack-internal:///46581\n");

}),

31268:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createCustomTemplateViewController_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createCustomTemplateViewController.js */ 46581);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createCustomTemplateView.html */ 53068);\n\n\nangular.module('portainer.app').component('createCustomTemplateView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _createCustomTemplateViewController_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});//# sourceURL=webpack-internal:///31268\n");

}),

77999:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/constants */ 71541);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\n\n\n\n\n\n\nclass CustomTemplatesViewController {\n  /* @ngInject */\n  constructor($anchorScroll, $async, $rootScope, $state, Authentication, CustomTemplateService, FormValidator, ModalService, NetworkService, Notifications, ResourceControlService, StackService, StateManager) {\n    this.$anchorScroll = $anchorScroll;\n    this.$async = $async;\n    this.$rootScope = $rootScope;\n    this.$state = $state;\n    this.Authentication = Authentication;\n    this.CustomTemplateService = CustomTemplateService;\n    this.FormValidator = FormValidator;\n    this.ModalService = ModalService;\n    this.NetworkService = NetworkService;\n    this.Notifications = Notifications;\n    this.ResourceControlService = ResourceControlService;\n    this.StateManager = StateManager;\n    this.StackService = StackService;\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_5__.isBE;\n    this.DOCKER_STANDALONE = 'DOCKER_STANDALONE';\n    this.DOCKER_SWARM_MODE = 'DOCKER_SWARM_MODE';\n    this.state = {\n      selectedTemplate: null,\n      showAdvancedOptions: false,\n      formValidationError: '',\n      actionInProgress: false,\n      isEditorVisible: false,\n      deployable: false,\n      templateNameRegex: _constants__WEBPACK_IMPORTED_MODULE_3__.TEMPLATE_NAME_VALIDATION_REGEX,\n      templateContent: ''\n    };\n    this.currentUser = {\n      isAdmin: false,\n      id: null\n    };\n    this.formValues = {\n      network: '',\n      name: '',\n      fileContent: '',\n      AccessControlData: new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__.AccessControlFormData(),\n      variables: []\n    };\n    this.getTemplates = this.getTemplates.bind(this);\n    this.getTemplatesAsync = this.getTemplatesAsync.bind(this);\n    this.removeTemplates = this.removeTemplates.bind(this);\n    this.removeTemplatesAsync = this.removeTemplatesAsync.bind(this);\n    this.validateForm = this.validateForm.bind(this);\n    this.createStack = this.createStack.bind(this);\n    this.createStackAsync = this.createStackAsync.bind(this);\n    this.selectTemplate = this.selectTemplate.bind(this);\n    this.selectTemplateAsync = this.selectTemplateAsync.bind(this);\n    this.unselectTemplate = this.unselectTemplate.bind(this);\n    this.unselectTemplateAsync = this.unselectTemplateAsync.bind(this);\n    this.getNetworks = this.getNetworks.bind(this);\n    this.getNetworksAsync = this.getNetworksAsync.bind(this);\n    this.confirmDelete = this.confirmDelete.bind(this);\n    this.confirmDeleteAsync = this.confirmDeleteAsync.bind(this);\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.isEditAllowed = this.isEditAllowed.bind(this);\n    this.onChangeFormValues = this.onChangeFormValues.bind(this);\n    this.onChangeTemplateVariables = this.onChangeTemplateVariables.bind(this);\n  }\n\n  isEditAllowed(template) {\n    return this.currentUser.isAdmin || this.currentUser.id === template.CreatedByUserId;\n  }\n\n  getTemplates() {\n    return this.$async(this.getTemplatesAsync);\n  }\n\n  async getTemplatesAsync() {\n    try {\n      this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n    } catch (err) {\n      this.Notifications.error('Failed loading templates', err, 'Unable to load custom templates');\n    }\n  }\n\n  removeTemplates(templates) {\n    return this.$async(this.removeTemplatesAsync, templates);\n  }\n\n  async removeTemplatesAsync(templates) {\n    for (let template of templates) {\n      try {\n        await this.CustomTemplateService.remove(template.id);\n        this.Notifications.success('Success', 'Removed template successfully');\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default()(this.templates, template);\n      } catch (err) {\n        this.Notifications.error('Failed removing template', err, 'Unable to remove custom template');\n      }\n    }\n  }\n\n  onChangeTemplateVariables(variables) {\n    this.onChangeFormValues({\n      variables\n    });\n    this.renderTemplate();\n  }\n\n  renderTemplate() {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const fileContent = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_4__.renderTemplate)(this.state.templateContent, this.formValues.variables, this.state.selectedTemplate.Variables);\n    this.onChangeFormValues({\n      fileContent\n    });\n  }\n\n  onChangeFormValues(values) {\n    this.formValues = { ...this.formValues,\n      ...values\n    };\n  }\n\n  validateForm(accessControlData, isAdmin) {\n    this.state.formValidationError = '';\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  createStack() {\n    return this.$async(this.createStackAsync);\n  }\n\n  async createStackAsync() {\n    const userId = this.currentUser.id;\n    const accessControlData = this.formValues.AccessControlData;\n\n    if (!this.validateForm(accessControlData, this.currentUser.isAdmin)) {\n      return;\n    }\n\n    const stackName = this.formValues.name;\n    const endpointId = this.endpoint.Id;\n    this.state.actionInProgress = true;\n\n    try {\n      const file = this.formValues.fileContent;\n      const createAction = this.state.selectedTemplate.Type === 1 ? this.StackService.createSwarmStackFromFileContent : this.StackService.createComposeStackFromFileContent;\n      const {\n        ResourceControl: resourceControl\n      } = await createAction(stackName, file, [], endpointId);\n      await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n      this.Notifications.success('Success', 'Stack successfully deployed');\n      this.$state.go('docker.stacks');\n    } catch (err) {\n      this.Notifications.error('Deployment error', err, 'Failed to deploy stack');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  unselectTemplate(template) {\n    // wrapping unselect with async to make a digest cycle run between unselect to select\n    return this.$async(this.unselectTemplateAsync, template);\n  }\n\n  async unselectTemplateAsync(template) {\n    template.Selected = false;\n    this.state.selectedTemplate = null;\n    this.formValues = {\n      network: '',\n      name: '',\n      fileContent: '',\n      AccessControlData: new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__.AccessControlFormData(),\n      variables: []\n    };\n  }\n\n  selectTemplate(template) {\n    return this.$async(this.selectTemplateAsync, template);\n  }\n\n  async selectTemplateAsync(template) {\n    if (this.state.selectedTemplate) {\n      await this.unselectTemplate(this.state.selectedTemplate);\n    }\n\n    template.Selected = true;\n    this.formValues.network = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.availableNetworks, function (o) {\n      return o.Name === 'bridge';\n    });\n    this.formValues.name = template.Title ? template.Title : '';\n    this.state.selectedTemplate = template;\n    this.$anchorScroll('view-top');\n    const applicationState = this.StateManager.getState();\n    this.state.deployable = this.isDeployable(applicationState.endpoint, template.Type);\n    const file = await this.CustomTemplateService.customTemplateFile(template.Id);\n    this.state.templateContent = file;\n    this.formValues.fileContent = file;\n\n    if (template.Variables && template.Variables.length > 0) {\n      const variables = Object.fromEntries(template.Variables.map(variable => [variable.name, '']));\n      this.onChangeTemplateVariables(variables);\n    }\n  }\n\n  getNetworks(provider, apiVersion) {\n    return this.$async(this.getNetworksAsync, provider, apiVersion);\n  }\n\n  async getNetworksAsync(provider, apiVersion) {\n    try {\n      const networks = await this.NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25);\n      this.availableNetworks = networks;\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Failed to load networks.');\n    }\n  }\n\n  confirmDelete(templateId) {\n    return this.$async(this.confirmDeleteAsync, templateId);\n  }\n\n  async confirmDeleteAsync(templateId) {\n    const confirmed = await this.ModalService.confirmDeletionAsync('Are you sure that you want to delete this template?');\n\n    if (!confirmed) {\n      return;\n    }\n\n    try {\n      var template = lodash_es_find__WEBPACK_IMPORTED_MODULE_0___default()(this.templates, {\n        Id: templateId\n      });\n\n      await this.CustomTemplateService.remove(templateId);\n      this.Notifications.success('Template successfully deleted', template && template.Title);\n\n      lodash_es_remove__WEBPACK_IMPORTED_MODULE_1___default()(this.templates, {\n        Id: templateId\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Failed to delete template');\n    }\n  }\n\n  editorUpdate(value) {\n    this.formValues.fileContent = value;\n  }\n\n  isDeployable(endpoint, templateType) {\n    let deployable = false;\n\n    switch (templateType) {\n      case 1:\n        deployable = endpoint.mode.provider === this.DOCKER_SWARM_MODE;\n        break;\n\n      case 2:\n        deployable = endpoint.mode.provider === this.DOCKER_STANDALONE;\n        break;\n    }\n\n    return deployable;\n  }\n\n  $onInit() {\n    const applicationState = this.StateManager.getState();\n    const {\n      endpoint: {\n        mode: endpointMode\n      },\n      apiVersion\n    } = applicationState;\n    this.getTemplates();\n    this.getNetworks(endpointMode.provider, apiVersion);\n    this.currentUser.isAdmin = this.Authentication.isAdmin();\n    const user = this.Authentication.getUserDetails();\n    this.currentUser.id = user.ID;\n  }\n\n}\n\nCustomTemplatesViewController.$inject = [\"$anchorScroll\", \"$async\", \"$rootScope\", \"$state\", \"Authentication\", \"CustomTemplateService\", \"FormValidator\", \"ModalService\", \"NetworkService\", \"Notifications\", \"ResourceControlService\", \"StackService\", \"StateManager\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CustomTemplatesViewController);//# sourceURL=webpack-internal:///77999\n");

}),

17598:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _customTemplatesViewController_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./customTemplatesViewController.js */ 77999);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./customTemplatesView.html */ 4662);\n\n\nangular.module('portainer.app').component('customTemplatesView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _customTemplatesViewController_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///17598\n");

}),

31097:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/some */ 99432);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_some__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/react/portainer/access-control/models/ResourceControlViewModel */ 80178);\n/* harmony import */ var Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n\n\n\n\n\n\nclass EditCustomTemplateViewController {\n  /* @ngInject */\n  constructor($async, $state, $window, ModalService, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      $window,\n      ModalService,\n      Authentication,\n      CustomTemplateService,\n      FormValidator,\n      Notifications,\n      ResourceControlService\n    });\n    this.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__.isBE;\n    this.formValues = null;\n    this.state = {\n      formValidationError: '',\n      isEditorDirty: false,\n      isTemplateValid: true\n    };\n    this.templates = [];\n    this.getTemplate = this.getTemplate.bind(this);\n    this.getTemplateAsync = this.getTemplateAsync.bind(this);\n    this.submitAction = this.submitAction.bind(this);\n    this.submitActionAsync = this.submitActionAsync.bind(this);\n    this.editorUpdate = this.editorUpdate.bind(this);\n    this.onVariablesChange = this.onVariablesChange.bind(this);\n    this.handleChange = this.handleChange.bind(this);\n  }\n\n  getTemplate() {\n    return this.$async(this.getTemplateAsync);\n  }\n\n  async getTemplateAsync() {\n    try {\n      const [template, file] = await Promise.all([this.CustomTemplateService.customTemplate(this.$state.params.id), this.CustomTemplateService.customTemplateFile(this.$state.params.id)]);\n      template.FileContent = file;\n      template.Variables = template.Variables || [];\n      this.formValues = template;\n      this.parseTemplate(template.FileContent);\n      this.oldFileContent = this.formValues.FileContent;\n\n      if (template.ResourceControl) {\n        this.formValues.ResourceControl = new _react_portainer_access_control_models_ResourceControlViewModel__WEBPACK_IMPORTED_MODULE_1__.ResourceControlViewModel(template.ResourceControl);\n      }\n\n      this.formValues.AccessControlData = new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__.AccessControlFormData();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve custom template data');\n    }\n  }\n\n  onVariablesChange(value) {\n    this.handleChange({\n      Variables: value\n    });\n  }\n\n  handleChange(values) {\n    return this.$async(async () => {\n      this.formValues = { ...this.formValues,\n        ...values\n      };\n    });\n  }\n\n  validateForm() {\n    this.state.formValidationError = '';\n\n    if (!this.formValues.FileContent) {\n      this.state.formValidationError = 'Template file content must not be empty';\n      return false;\n    }\n\n    const title = this.formValues.Title;\n    const id = this.$state.params.id;\n\n    const isNotUnique = lodash_some__WEBPACK_IMPORTED_MODULE_0___default()(this.templates, template => template.Title === title && template.Id != id);\n\n    if (isNotUnique) {\n      this.state.formValidationError = `A template with the name ${title} already exists`;\n      return false;\n    }\n\n    const isAdmin = this.Authentication.isAdmin();\n    const accessControlData = this.formValues.AccessControlData;\n    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      this.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  submitAction() {\n    return this.$async(this.submitActionAsync);\n  }\n\n  async submitActionAsync() {\n    if (!this.validateForm()) {\n      return;\n    }\n\n    this.actionInProgress = true;\n\n    try {\n      await this.CustomTemplateService.updateCustomTemplate(this.formValues.Id, this.formValues);\n      const userDetails = this.Authentication.getUserDetails();\n      const userId = userDetails.ID;\n      await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl);\n      this.Notifications.success('Success', 'Custom template successfully updated');\n      this.state.isEditorDirty = false;\n      this.$state.go('docker.templates.custom');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to update custom template');\n    } finally {\n      this.actionInProgress = false;\n    }\n  }\n\n  editorUpdate(value) {\n    if (this.formValues.FileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== value.replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n      this.formValues.FileContent = value;\n      this.parseTemplate(value);\n      this.state.isEditorDirty = true;\n    }\n  }\n\n  parseTemplate(templateStr) {\n    if (!this.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const variables = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.getTemplateVariables)(templateStr);\n    const isValid = !!variables;\n    this.state.isTemplateValid = isValid;\n\n    if (isValid) {\n      this.onVariablesChange((0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_3__.intersectVariables)(this.formValues.Variables, variables));\n    }\n  }\n\n  async uiCanExit() {\n    if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n      return this.ModalService.confirmWebEditorDiscard();\n    }\n  }\n\n  async $onInit() {\n    this.getTemplate();\n\n    try {\n      this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n    } catch (err) {\n      this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n    }\n\n    this.$window.onbeforeunload = () => {\n      if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n        return '';\n      }\n    };\n  }\n\n  $onDestroy() {\n    this.state.isEditorDirty = false;\n  }\n\n}\n\nEditCustomTemplateViewController.$inject = [\"$async\", \"$state\", \"$window\", \"ModalService\", \"Authentication\", \"CustomTemplateService\", \"FormValidator\", \"Notifications\", \"ResourceControlService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (EditCustomTemplateViewController);//# sourceURL=webpack-internal:///31097\n");

}),

69659:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _editCustomTemplateViewController_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./editCustomTemplateViewController.js */ 31097);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./editCustomTemplateView.html */ 63928);\n\n\nangular.module('portainer.app').component('editCustomTemplateView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _editCustomTemplateViewController_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});//# sourceURL=webpack-internal:///69659\n");

}),

11937:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n/* harmony import */ var Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/hostmanagement/fdo/fdo.service */ 60122);\n\n\n\nangular.module('portainer.app').controller('ImportDeviceController', [\"$async\", \"$q\", \"$scope\", \"$state\", \"EndpointService\", \"GroupService\", \"TagService\", \"Notifications\", \"Authentication\", \"FileUploadService\", function ImportDeviceController($async, $q, $scope, $state, EndpointService, GroupService, TagService, Notifications, Authentication, FileUploadService) {\n  $scope.state = {\n    actionInProgress: false,\n    vouchersUploading: false,\n    vouchersUploaded: false,\n    deviceIDs: [],\n    allowCreateTag: Authentication.isAdmin()\n  };\n  $scope.formValues = {\n    DeviceName: '',\n    DeviceProfile: '',\n    GroupId: 1,\n    TagIds: [],\n    VoucherFiles: [],\n    PortainerURL: '',\n    Suffix: 1\n  };\n  $scope.profiles = [];\n\n  $scope.onChangeTags = function onChangeTags(value) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.TagIds = value;\n    });\n  };\n\n  $scope.onVoucherFilesChange = function () {\n    if ($scope.formValues.VoucherFiles.length < 1) {\n      return;\n    }\n\n    $scope.state.vouchersUploading = true;\n    let uploads = $scope.formValues.VoucherFiles.map(f => FileUploadService.uploadOwnershipVoucher(f));\n    $q.all(uploads).then(function success(responses) {\n      $scope.state.vouchersUploading = false;\n      $scope.state.vouchersUploaded = true;\n      $scope.state.deviceIDs = responses.map(r => r.data.guid);\n    }).catch(function error(err) {\n      $scope.state.vouchersUploading = false;\n\n      if ($scope.formValues.VoucherFiles.length === 1) {\n        Notifications.error('失败', err, 'Unable to upload the Ownership Voucher');\n      } else {\n        Notifications.error('失败', null, 'Unable to upload the Ownership Vouchers, please check the logs');\n      }\n    });\n  };\n\n  $scope.createEndpointAndConfigureDevice = function () {\n    return $async(async () => {\n      $scope.state.actionInProgress = true;\n      let suffix = $scope.formValues.Suffix;\n\n      for (const deviceID of $scope.state.deviceIDs) {\n        let deviceName = $scope.formValues.DeviceName + suffix;\n\n        try {\n          var endpoint = await EndpointService.createRemoteEndpoint(deviceName, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_1__.PortainerEndpointCreationTypes.EdgeAgentEnvironment, $scope.formValues.PortainerURL, '', $scope.formValues.GroupId, $scope.formValues.TagIds, false, false, false, null, null, null, null, true);\n        } catch (err) {\n          Notifications.error('失败', err, 'Unable to create the environment');\n          $scope.state.actionInProgress = false;\n          return;\n        }\n\n        suffix++;\n        const config = {\n          edgeID: endpoint.EdgeID || uuid_v4__WEBPACK_IMPORTED_MODULE_0___default()(),\n          edgeKey: endpoint.EdgeKey,\n          name: deviceName,\n          profile: $scope.formValues.DeviceProfile\n        };\n\n        try {\n          await (0,Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_2__.configureDevice)(deviceID, config);\n        } catch (err) {\n          Notifications.error('失败', err, 'Unable to import device');\n          return;\n        } finally {\n          $scope.state.actionInProgress = false;\n        }\n      }\n\n      Notifications.success('Success', 'Device(s) successfully imported');\n      $state.go('edge.devices');\n    });\n  };\n\n  async function initView() {\n    try {\n      $scope.profiles = await (0,Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_2__.getProfiles)();\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to load profiles');\n      return;\n    }\n\n    $q.all({\n      groups: GroupService.groups()\n    }).then(function success(data) {\n      $scope.groups = data.groups;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to load groups');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///11937\n");

}),

35696:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AddProfileController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/hostmanagement/fdo/fdo.service */ 60122);\nAddProfileController.$inject = [\"$scope\", \"$async\", \"$state\", \"$window\", \"ModalService\", \"Authentication\", \"Notifications\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('AddProfileController', AddProfileController);\nfunction AddProfileController($scope, $async, $state, $window, ModalService, Authentication, Notifications) {\n  $scope.formValues = {\n    name: '',\n    profileFileContent: ''\n  };\n  $scope.state = {\n    method: 'editor',\n    actionInProgress: false,\n    isEditorDirty: false\n  };\n\n  $window.onbeforeunload = () => {\n    if ($scope.state.method === 'editor' && $scope.formValues.profileFileContent && $scope.state.isEditorDirty) {\n      return '';\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    $scope.state.isEditorDirty = false;\n  });\n  $scope.onChangeFormValues = onChangeFormValues;\n\n  $scope.createProfileAsync = function () {\n    return $async(async () => {\n      const method = $scope.state.method;\n      const name = $scope.formValues.name;\n      const fileContent = $scope.formValues.profileFileContent;\n\n      if (method !== 'editor' && fileContent === '') {\n        $scope.state.formValidationError = 'Profile file content must not be empty';\n        return;\n      }\n\n      $scope.state.actionInProgress = true;\n\n      try {\n        await (0,Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__.createProfile)(name, method, fileContent);\n        Notifications.success('Success', 'Profile successfully created');\n        $scope.state.isEditorDirty = false;\n        $state.go('portainer.settings.edgeCompute');\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to create Profile');\n      } finally {\n        $scope.state.actionInProgress = false;\n      }\n    });\n  };\n\n  $scope.onChangeFileContent = function onChangeFileContent(value) {\n    $scope.formValues.profileFileContent = value;\n    $scope.state.isEditorDirty = true;\n  };\n\n  function onChangeFormValues(newValues) {\n    $scope.formValues = newValues;\n  }\n}//# sourceURL=webpack-internal:///35696\n");

}),

91067:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _addProfileController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addProfileController */ 35696);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./addProfile.html */ 64306);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('addProfileView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _addProfileController__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///91067\n");

}),

21199:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EditProfileController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/hostmanagement/fdo/fdo.service */ 60122);\nEditProfileController.$inject = [\"$scope\", \"$async\", \"$state\", \"$window\", \"ModalService\", \"Authentication\", \"Notifications\"];\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('EditProfileController', EditProfileController);\nfunction EditProfileController($scope, $async, $state, $window, ModalService, Authentication, Notifications) {\n  $scope.formValues = {\n    name: '',\n    profileFileContent: ''\n  };\n  $scope.state = {\n    profileID: $state.params.id,\n    method: 'editor',\n    actionInProgress: false,\n    isEditorDirty: false\n  };\n\n  $window.onbeforeunload = () => {\n    if ($scope.state.method === 'editor' && $scope.formValues.profileFileContent && $scope.state.isEditorDirty) {\n      return '';\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    $scope.state.isEditorDirty = false;\n  });\n  $scope.onChangeFormValues = onChangeFormValues;\n\n  $scope.updateProfileAsync = function () {\n    return $async(async () => {\n      const method = $scope.state.method;\n      const name = $scope.formValues.name;\n      const fileContent = $scope.formValues.profileFileContent;\n\n      if (method !== 'editor' && fileContent === '') {\n        $scope.state.formValidationError = 'Profile file content must not be empty';\n        return;\n      }\n\n      $scope.state.actionInProgress = true;\n\n      try {\n        await (0,Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__.updateProfile)($scope.state.profileID, name, fileContent);\n        Notifications.success('Success', 'Profile successfully updated');\n        $scope.state.isEditorDirty = false;\n        $state.go('portainer.settings.edgeCompute');\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to update Profile');\n      } finally {\n        $scope.state.actionInProgress = false;\n      }\n    });\n  };\n\n  $scope.onChangeFileContent = function onChangeFileContent(value) {\n    $scope.formValues.profileFileContent = value;\n    $scope.state.isEditorDirty = true;\n  };\n\n  function onChangeFormValues(newValues) {\n    $scope.formValues = newValues;\n  }\n\n  async function initView() {\n    return $async(async () => {\n      try {\n        const profile = await (0,Portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__.getProfile)($scope.state.profileID);\n        $scope.formValues = {\n          name: profile.name,\n          profileFileContent: profile.fileContent\n        };\n        $scope.state.isEditorDirty = false;\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to retrieve profile details');\n      }\n    });\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///21199\n");

}),

42041:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editProfileController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editProfileController */ 21199);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./editProfile.html */ 71149);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('editProfileView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _editProfileController__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///42041\n");

}),

36582:

(function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("const autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registries.html */ 56058);\n\nangular.module('portainer.app').component('endpointRegistriesView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: 'EndpointRegistriesController',\n  bindings: {\n    endpoint: '<'\n  }\n});//# sourceURL=webpack-internal:///36582\n");

}),

54886:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/registryTypes */ 56414);\n\n\n\nclass EndpointRegistriesController {\n  /* @ngInject */\n  constructor($async, Notifications, EndpointService, Authentication) {\n    this.$async = $async;\n    this.Notifications = Notifications;\n    this.EndpointService = EndpointService;\n    this.Authentication = Authentication;\n    this.canManageAccess = this.canManageAccess.bind(this);\n    this.canBrowse = this.canBrowse.bind(this);\n  }\n\n  canManageAccess(item) {\n    return item.Type !== Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ANONYMOUS && this.Authentication.isAdmin();\n  }\n\n  canBrowse(item) {\n    return !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()([Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ANONYMOUS, Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.DOCKERHUB, Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.QUAY], item.Type);\n  }\n\n  getRegistries() {\n    return this.$async(async () => {\n      try {\n        this.registries = await this.EndpointService.registries(this.endpointId);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registries');\n      }\n    });\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.state = {\n        viewReady: false\n      };\n\n      try {\n        this.endpointType = this.endpoint.Type;\n        this.endpointId = this.endpoint.Id;\n        await this.getRegistries();\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve registries');\n      } finally {\n        this.state.viewReady = true;\n      }\n    });\n  }\n\n}\n\nEndpointRegistriesController.$inject = [\"$async\", \"Notifications\", \"EndpointService\", \"Authentication\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (EndpointRegistriesController);\nangular.module('portainer.app').controller('EndpointRegistriesController', EndpointRegistriesController);//# sourceURL=webpack-internal:///54886\n");

}),

16962:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\n\n\nclass EndpointAccessController {\n  /* @ngInject */\n  constructor($state, $transition$, Notifications, EndpointService, GroupService, $async) {\n    this.$state = $state;\n    this.$transition$ = $transition$;\n    this.Notifications = Notifications;\n    this.EndpointService = EndpointService;\n    this.GroupService = GroupService;\n    this.$async = $async;\n    this.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.RBAC_ROLES;\n    this.updateAccess = this.updateAccess.bind(this);\n    this.updateAccessAsync = this.updateAccessAsync.bind(this);\n  }\n\n  async $onInit() {\n    this.state = {\n      actionInProgress: false\n    };\n\n    try {\n      this.endpoint = await this.EndpointService.endpoint(this.$transition$.params().id);\n      this.group = await this.GroupService.group(this.endpoint.GroupId);\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve environment information');\n    }\n  }\n\n  updateAccess() {\n    return this.$async(this.updateAccessAsync);\n  }\n\n  async updateAccessAsync() {\n    try {\n      this.state.actionInProgress = true;\n      await this.EndpointService.updateEndpoint(this.$transition$.params().id, this.endpoint);\n      this.Notifications.success('Success', 'Access successfully updated');\n      this.$state.reload(this.$state.current);\n    } catch (err) {\n      this.state.actionInProgress = false;\n      this.Notifications.error('失败', err, 'Unable to update accesses');\n    }\n  }\n\n}\n\nEndpointAccessController.$inject = [\"$state\", \"$transition$\", \"Notifications\", \"EndpointService\", \"GroupService\", \"$async\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (EndpointAccessController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('EndpointAccessController', EndpointAccessController);//# sourceURL=webpack-internal:///16962\n");

}),

80418:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/split */ 17465);\n/* harmony import */ var lodash_es_split__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_split__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/difference */ 65491);\n/* harmony import */ var lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_difference__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/concat */ 25445);\n/* harmony import */ var lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/uniq */ 46006);\n/* harmony import */ var lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/forEach */ 41952);\n/* harmony import */ var lodash_es_forEach__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_es_forEach__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es/compact */ 20810);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_es_compact__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/portainer/models/endpoint/models */ 13494);\n/* harmony import */ var _portainer_components_endpointSecurity_porEndpointSecurityModel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/portainer/components/endpointSecurity/porEndpointSecurityModel */ 25229);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Portainer/hostmanagement/open-amt/open-amt.service */ 76827);\n/* harmony import */ var _portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/portainer/services/modal.service/confirm */ 46980);\n/* harmony import */ var _portainer_environments_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/portainer/environments/utils */ 57941);\n/* harmony import */ var _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/react/edge/components/EdgeScriptForm/scripts */ 32858);\n/* harmony import */ var _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/react/portainer/environments/wizard/EnvironmentsCreationView/shared/Hardware/GpusList */ 16100);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\nEndpointController.$inject = [\"$async\", \"$scope\", \"$state\", \"$transition$\", \"$filter\", \"clipboard\", \"EndpointService\", \"GroupService\", \"Notifications\", \"Authentication\", \"SettingsService\", \"ModalService\"];\n\n\n\n\n\n\n\n\n\nangular.module('portainer.app').component('gpusList', _react_portainer_environments_wizard_EnvironmentsCreationView_shared_Hardware_GpusList__WEBPACK_IMPORTED_MODULE_15__.GpusListAngular).controller('EndpointController', EndpointController);\n/* @ngInject */\n\nfunction EndpointController($async, $scope, $state, $transition$, $filter, clipboard, EndpointService, GroupService, Notifications, Authentication, SettingsService, ModalService) {\n  $scope.onChangeCheckInInterval = onChangeCheckInInterval;\n  $scope.setFieldValue = setFieldValue;\n  $scope.onChangeTags = onChangeTags;\n  const isBE = \"CE\" === 'BE';\n  $scope.state = {\n    selectAll: false,\n\n    // displayTextFilter: false,\n    get selectedItemCount() {\n      return $scope.state.selectedItems.length || 0;\n    },\n\n    selectedItems: [],\n    uploadInProgress: false,\n    actionInProgress: false,\n    azureEndpoint: false,\n    kubernetesEndpoint: false,\n    agentEndpoint: false,\n    edgeEndpoint: false,\n    edgeAssociated: false,\n    allowCreate: Authentication.isAdmin(),\n    allowSelfSignedCerts: true,\n    showAMTInfo: false,\n    showNomad: isBE,\n    edgeScriptCommands: {\n      linux: lodash_es_compact__WEBPACK_IMPORTED_MODULE_6___default()([_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.k8sLinux, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.swarmLinux, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.standaloneLinux, isBE && _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.nomadLinux]),\n      win: [_react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.swarmWindows, _react_edge_components_EdgeScriptForm_scripts__WEBPACK_IMPORTED_MODULE_14__.commandsTabs.standaloneWindow]\n    }\n  };\n\n  $scope.selectAll = function () {\n    $scope.state.firstClickedItem = null;\n\n    for (var i = 0; i < $scope.state.filteredDataSet.length; i++) {\n      var item = $scope.state.filteredDataSet[i];\n\n      if (item.Checked !== $scope.state.selectAll) {\n        // if ($scope.allowSelection(item) && item.Checked !== $scope.state.selectAll) {\n        item.Checked = $scope.state.selectAll;\n        $scope.selectItem(item);\n      }\n    }\n  };\n\n  function isBetween(value, a, b) {\n    return value >= a && value <= b || value >= b && value <= a;\n  }\n\n  $scope.selectItem = function (item, event) {\n    // Handle range select using shift\n    if (event && event.originalEvent.shiftKey && $scope.state.firstClickedItem) {\n      const firstItemIndex = $scope.state.filteredDataSet.indexOf($scope.state.firstClickedItem);\n      const lastItemIndex = $scope.state.filteredDataSet.indexOf(item);\n\n      const itemsInRange = lodash_es_filter__WEBPACK_IMPORTED_MODULE_5___default()($scope.state.filteredDataSet, (item, index) => {\n        return isBetween(index, firstItemIndex, lastItemIndex);\n      });\n\n      const value = $scope.state.firstClickedItem.Checked;\n\n      lodash_es_forEach__WEBPACK_IMPORTED_MODULE_4___default()(itemsInRange, i => {\n        i.Checked = value;\n      });\n\n      $scope.state.firstClickedItem = item;\n    } else if (event) {\n      item.Checked = !item.Checked;\n      $scope.state.firstClickedItem = item;\n    }\n\n    $scope.state.selectedItems = lodash_es_uniq__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_concat__WEBPACK_IMPORTED_MODULE_2___default()($scope.state.selectedItems, $scope.state.filteredDataSet)).filter(i => i.Checked);\n\n    if (event && $scope.state.selectAll && $scope.state.selectedItems.length !== $scope.state.filteredDataSet.length) {\n      $scope.state.selectAll = false;\n    }\n  };\n\n  $scope.formValues = {\n    SecurityFormData: new _portainer_components_endpointSecurity_porEndpointSecurityModel__WEBPACK_IMPORTED_MODULE_9__.EndpointSecurityFormData()\n  };\n\n  $scope.copyEdgeAgentKey = function () {\n    clipboard.copyText($scope.endpoint.EdgeKey);\n    $('#copyNotificationEdgeKey').show().fadeOut(2500);\n  };\n\n  $scope.onToggleAllowSelfSignedCerts = function onToggleAllowSelfSignedCerts(checked) {\n    return $scope.$evalAsync(() => {\n      $scope.state.allowSelfSignedCerts = checked;\n    });\n  };\n\n  $scope.onDisassociateEndpoint = async function () {\n    ModalService.confirmDisassociate(confirmed => {\n      if (confirmed) {\n        disassociateEndpoint();\n      }\n    });\n  };\n\n  async function disassociateEndpoint() {\n    var endpoint = $scope.endpoint;\n\n    try {\n      $scope.state.actionInProgress = true;\n      await EndpointService.disassociateEndpoint(endpoint.Id);\n      Notifications.success('Environment disassociated', $scope.endpoint.Name);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to disassociate environment');\n    } finally {\n      $scope.state.actionInProgress = false;\n    }\n  }\n\n  function onChangeCheckInInterval(value) {\n    setFieldValue('EdgeCheckinInterval', value);\n  }\n\n  function onChangeTags(value) {\n    setFieldValue('TagIds', value);\n  }\n\n  function setFieldValue(name, value) {\n    return $scope.$evalAsync(() => {\n      $scope.endpoint = { ...$scope.endpoint,\n        [name]: value\n      };\n    });\n  }\n\n  $scope.onGpusChange = onGpusChange;\n\n  Array.prototype.indexOf = function (val) {\n    for (var i = 0; i < this.length; i++) {\n      if (this[i] == val) return i;\n    }\n\n    return -1;\n  };\n\n  Array.prototype.remove = function (val) {\n    var index = this.indexOf(val);\n\n    if (index > -1) {\n      this.splice(index, 1);\n    }\n  };\n\n  function onGpusChange(value) {\n    return $async(async () => {\n      $scope.endpoint.Gpus = value;\n    });\n  }\n\n  function verifyGpus() {\n    var i = ($scope.endpoint.Gpus || []).length;\n\n    while (i--) {\n      if ($scope.endpoint.Gpus[i].name === '' || $scope.endpoint.Gpus[i].name === null) {\n        $scope.endpoint.Gpus.splice(i, 1);\n      }\n    }\n  }\n\n  $scope.updateEndpoint = async function () {\n    var endpoint = $scope.endpoint;\n    var securityData = $scope.formValues.SecurityFormData;\n    var TLS = securityData.TLS;\n    var TLSMode = securityData.TLSMode;\n    var TLSSkipVerify = TLS && (TLSMode === 'tls_client_noca' || TLSMode === 'tls_only');\n    var TLSSkipClientVerify = TLS && (TLSMode === 'tls_ca' || TLSMode === 'tls_only');\n\n    if ((0,_portainer_environments_utils__WEBPACK_IMPORTED_MODULE_13__.isEdgeEnvironment)(endpoint.Type) && lodash_es_difference__WEBPACK_IMPORTED_MODULE_1___default()($scope.initialTagIds, endpoint.TagIds).length > 0) {\n      let confirmed = await (0,_portainer_services_modal_service_confirm__WEBPACK_IMPORTED_MODULE_12__.confirmDestructiveAsync)({\n        title: '确认操作',\n        message: '当使用动态分组时，从这个环境中删除标签将删除相应的边缘堆栈。',\n        buttons: {\n          cancel: {\n            label: '取消',\n            className: 'btn-default'\n          },\n          confirm: {\n            label: '确认',\n            className: 'btn-primary'\n          }\n        }\n      });\n\n      if (!confirmed) {\n        return;\n      }\n    }\n\n    verifyGpus();\n    var payload = {\n      Name: endpoint.Name,\n      PublicURL: endpoint.PublicURL,\n      Gpus: endpoint.Gpus,\n      GroupID: endpoint.GroupId,\n      TagIds: endpoint.TagIds,\n      TLS: TLS,\n      TLSSkipVerify: TLSSkipVerify,\n      TLSSkipClientVerify: TLSSkipClientVerify,\n      TLSCACert: TLSSkipVerify || securityData.TLSCACert === endpoint.TLSConfig.TLSCACert ? null : securityData.TLSCACert,\n      TLSCert: TLSSkipClientVerify || securityData.TLSCert === endpoint.TLSConfig.TLSCert ? null : securityData.TLSCert,\n      TLSKey: TLSSkipClientVerify || securityData.TLSKey === endpoint.TLSConfig.TLSKey ? null : securityData.TLSKey,\n      AzureApplicationID: endpoint.AzureCredentials.ApplicationID,\n      AzureTenantID: endpoint.AzureCredentials.TenantID,\n      AzureAuthenticationKey: endpoint.AzureCredentials.AuthenticationKey,\n      EdgeCheckinInterval: endpoint.EdgeCheckinInterval\n    };\n\n    if ($scope.endpointType !== 'local' && endpoint.Type !== _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AzureEnvironment && endpoint.Type !== _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.KubernetesLocalEnvironment && endpoint.Type !== _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AgentOnKubernetesEnvironment) {\n      payload.URL = 'tcp://' + endpoint.URL;\n    }\n\n    if (endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AgentOnKubernetesEnvironment) {\n      payload.URL = endpoint.URL;\n    }\n\n    if (endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.KubernetesLocalEnvironment) {\n      payload.URL = 'https://' + endpoint.URL;\n    }\n\n    $scope.state.actionInProgress = true;\n    EndpointService.updateEndpoint(endpoint.Id, payload).then(function success() {\n      Notifications.success('Environment updated', $scope.endpoint.Name);\n      $state.go('portainer.endpoints', {}, {\n        reload: true\n      });\n    }, function error(err) {\n      Notifications.error('失败', err, 'Unable to update environment');\n      $scope.state.actionInProgress = false;\n    }, function update(evt) {\n      if (evt.upload) {\n        $scope.state.uploadInProgress = evt.upload;\n      }\n    });\n  };\n\n  function decodeEdgeKey(key) {\n    let keyInformation = {};\n\n    if (key === '') {\n      return keyInformation;\n    }\n\n    let decodedKey = lodash_es_split__WEBPACK_IMPORTED_MODULE_0___default()(atob(key), '|');\n\n    keyInformation.instanceURL = decodedKey[0];\n    keyInformation.tunnelServerAddr = decodedKey[1];\n    return keyInformation;\n  }\n\n  function configureState() {\n    if ($scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.KubernetesLocalEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AgentOnKubernetesEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n      $scope.state.kubernetesEndpoint = true;\n    }\n\n    if ($scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n      $scope.state.edgeEndpoint = true;\n    }\n\n    if ($scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AzureEnvironment) {\n      $scope.state.azureEndpoint = true;\n    }\n\n    if ($scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AgentOnDockerEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.AgentOnKubernetesEnvironment || $scope.endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n      $scope.state.agentEndpoint = true;\n    }\n  }\n\n  async function initView() {\n    return $async(async () => {\n      try {\n        const [endpoint, groups, settings] = await Promise.all([EndpointService.endpoint($transition$.params().id), GroupService.groups(), SettingsService.settings()]);\n\n        if (endpoint.URL.indexOf('unix://') === 0 || endpoint.URL.indexOf('npipe://') === 0) {\n          $scope.endpointType = 'local';\n        } else {\n          $scope.endpointType = 'remote';\n        }\n\n        endpoint.URL = $filter('stripprotocol')(endpoint.URL);\n\n        if (endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnDockerEnvironment || endpoint.Type === _portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_8__.PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n          $scope.edgeKeyDetails = decodeEdgeKey(endpoint.EdgeKey);\n          $scope.state.edgeAssociated = !!endpoint.EdgeID;\n          endpoint.EdgeID = endpoint.EdgeID || uuid_v4__WEBPACK_IMPORTED_MODULE_7___default()();\n        }\n\n        $scope.endpoint = endpoint;\n        $scope.initialTagIds = endpoint.TagIds.slice();\n        $scope.groups = groups;\n        configureState();\n\n        if (_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_10__[\"default\"].isDockerEndpoint(endpoint) && $scope.state.edgeAssociated) {\n          $scope.state.showAMTInfo = settings && settings.openAMTConfiguration && settings.openAMTConfiguration.enabled;\n        }\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to retrieve environment details');\n      }\n\n      if ($scope.state.showAMTInfo) {\n        try {\n          $scope.endpoint.ManagementInfo = {};\n          const amtInfo = await (0,Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_11__.getAMTInfo)($state.params.id);\n\n          try {\n            $scope.endpoint.ManagementInfo = JSON.parse(amtInfo.RawOutput);\n          } catch (err) {\n            clearAMTManagementInfo(amtInfo.RawOutput);\n          }\n        } catch (err) {\n          clearAMTManagementInfo('Unable to retrieve AMT environment details');\n        }\n      }\n    });\n  }\n\n  function clearAMTManagementInfo(versionValue) {\n    $scope.endpoint.ManagementInfo['AMT'] = versionValue;\n    $scope.endpoint.ManagementInfo['UUID'] = '-';\n    $scope.endpoint.ManagementInfo['Control Mode'] = '-';\n    $scope.endpoint.ManagementInfo['Build Number'] = '-';\n    $scope.endpoint.ManagementInfo['DNS Suffix'] = '-';\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///80418\n");

}),

19538:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _endpointsController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./endpointsController */ 81881);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./endpoints.html */ 77697);\n\n\nangular.module('portainer.app').component('endpointsView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _endpointsController__WEBPACK_IMPORTED_MODULE_0__.EndpointsController\n});//# sourceURL=webpack-internal:///19538\n");

}),

81881:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EndpointsController\": function() { return /* binding */ EndpointsController; }\n/* harmony export */ });\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\n\n\nclass EndpointsController {\n  /* @ngInject */\n  constructor($state, $async, EndpointService, GroupService, ModalService, Notifications, EndpointProvider, StateManager) {\n    Object.assign(this, {\n      $state,\n      $async,\n      EndpointService,\n      GroupService,\n      ModalService,\n      Notifications,\n      EndpointProvider,\n      StateManager\n    });\n    this.state = {\n      loadingMessage: ''\n    };\n    this.setLoadingMessage = this.setLoadingMessage.bind(this);\n    this.getPaginatedEndpoints = this.getPaginatedEndpoints.bind(this);\n    this.removeAction = this.removeAction.bind(this);\n  }\n\n  setLoadingMessage(message) {\n    this.state.loadingMessage = message;\n  }\n\n  removeAction(endpoints) {\n    this.ModalService.confirmDeletion('这个动作将删除与您的环境相关的所有配置。继续吗？', confirmed => {\n      if (!confirmed) {\n        return;\n      }\n\n      return this.$async(async () => {\n        try {\n          await Promise.all(endpoints.map(({\n            Id\n          }) => this.EndpointService.deleteEndpoint(Id)));\n          this.Notifications.success('Environments successfully removed', lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(endpoints, 'Name').join(', '));\n        } catch (err) {\n          this.Notifications.error('失败', err, 'Unable to remove environment');\n        }\n\n        const id = this.EndpointProvider.endpointID(); // If the current endpoint was deleted, then clean endpoint store\n\n        if (endpoints.some(e => e.Id === id)) {\n          this.StateManager.cleanEndpoint(); // trigger sidebar rerender\n\n          this.applicationState.endpoint = {};\n        }\n\n        this.$state.reload();\n      });\n    });\n  }\n\n  getPaginatedEndpoints(start, limit, search) {\n    return this.$async(async () => {\n      try {\n        const [{\n          value: endpoints,\n          totalCount\n        }, groups] = await Promise.all([(0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_2__.getEnvironments)({\n          start,\n          limit,\n          query: {\n            search,\n            excludeSnapshots: true\n          }\n        }), this.GroupService.groups()]);\n        _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].mapGroupNameToEndpoint(endpoints, groups);\n        return {\n          endpoints,\n          totalCount\n        };\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve environment information');\n      }\n    });\n  }\n\n}\nEndpointsController.$inject = [\"$state\", \"$async\", \"EndpointService\", \"GroupService\", \"ModalService\", \"Notifications\", \"EndpointProvider\", \"StateManager\"];//# sourceURL=webpack-internal:///81881\n");

}),

13853:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAgentShortVersion\": function() { return /* binding */ getAgentShortVersion; }\n/* harmony export */ });\nfunction getAgentShortVersion(agentVersion) {\n  const numbers = agentVersion.split('.');\n  return numbers[0] + '-' + numbers[1];\n}//# sourceURL=webpack-internal:///13853\n");

}),

58118:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/hostmanagement/open-amt/open-amt.service */ 76827);\n\n\n\nclass EndpointKVMController {\n  /* @ngInject */\n  constructor($state, $scope, $async, $transition$, EndpointService, Notifications) {\n    this.$state = $state;\n    this.$scope = $scope;\n    this.$async = $async;\n    this.$transition$ = $transition$;\n    this.Notifications = Notifications;\n    this.EndpointService = EndpointService;\n    this.$state.maximized = false;\n    this.$state.endpointId = $transition$.params().id;\n    this.$state.deviceId = $transition$.params().deviceId;\n    this.$state.deviceName = $transition$.params().deviceName;\n\n    $scope.maximize = function () {\n      this.$state.maximized = true;\n    };\n\n    $scope.minimize = function () {\n      this.$state.maximized = false;\n    };\n  }\n\n  async $onInit() {\n    this.$async(async () => {\n      try {\n        this.$state.endpoint = await this.EndpointService.endpoint(this.$state.endpointId);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve environment information');\n      }\n\n      try {\n        const features = {\n          ider: true,\n          kvm: true,\n          sol: true,\n          redirection: true,\n          userConsent: 'none'\n        };\n        const mpsAuthorization = await (0,Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_1__.enableDeviceFeatures)(this.$state.endpointId, this.$state.deviceId, features);\n        this.$state.mpsServer = mpsAuthorization.Server;\n        this.$state.mpsToken = mpsAuthorization.Token;\n      } catch (e) {\n        this.Notifications.error('失败', e, `Failed to load kvm for device`);\n      }\n    });\n  }\n\n}\n\nEndpointKVMController.$inject = [\"$state\", \"$scope\", \"$async\", \"$transition$\", \"EndpointService\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (EndpointKVMController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('EndpointKVMController', EndpointKVMController);//# sourceURL=webpack-internal:///58118\n");

}),

18467:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_views_endpoints_kvm_KVMControl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/views/endpoints/kvm/KVMControl */ 79301);\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('kvmControl', _portainer_views_endpoints_kvm_KVMControl__WEBPACK_IMPORTED_MODULE_1__.KVMControlAngular).name;//# sourceURL=webpack-internal:///18467\n");

}),

79405:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n\nangular.module('portainer.app').controller('GroupAccessController', ['$scope', '$state', '$transition$', 'GroupService', 'Notifications', function ($scope, $state, $transition$, GroupService, Notifications) {\n  $scope.limitedFeature = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_0__.FeatureId.RBAC_ROLES;\n\n  $scope.updateAccess = function () {\n    $scope.state.actionInProgress = true;\n    GroupService.updateGroup($scope.group, $scope.group.AssociatedEndpoints).then(() => {\n      Notifications.success('Success', 'Access successfully updated');\n      $state.reload();\n    }).catch(err => {\n      $scope.state.actionInProgress = false;\n      Notifications.error('失败', err, 'Unable to update accesses');\n    });\n  };\n\n  function initView() {\n    var groupId = $transition$.params().id;\n    $scope.state = {\n      actionInProgress: false\n    };\n    GroupService.group(groupId).then(function success(data) {\n      $scope.group = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to load view');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///79405\n");

}),

7249:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _models_group__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../models/group */ 79607);\n\nangular.module('portainer.app').controller('CreateGroupController', [\"$async\", \"$scope\", \"$state\", \"GroupService\", \"Notifications\", function CreateGroupController($async, $scope, $state, GroupService, Notifications) {\n  $scope.state = {\n    actionInProgress: false\n  };\n\n  $scope.create = function () {\n    var model = $scope.model;\n    var associatedEndpoints = [];\n\n    for (var i = 0; i < $scope.associatedEndpoints.length; i++) {\n      var endpoint = $scope.associatedEndpoints[i];\n      associatedEndpoints.push(endpoint.Id);\n    }\n\n    $scope.state.actionInProgress = true;\n    GroupService.createGroup(model, associatedEndpoints).then(function success() {\n      Notifications.success('Success', 'Group successfully created');\n      $state.go('portainer.groups', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to create group');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function initView() {\n    $scope.associatedEndpoints = [];\n    $scope.model = new _models_group__WEBPACK_IMPORTED_MODULE_0__.EndpointGroupDefaultModel();\n    $scope.loaded = true;\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///7249\n");

}),

9149:

(function() {

eval("angular.module('portainer.app').controller('GroupController', [\"$q\", \"$scope\", \"$state\", \"$transition$\", \"GroupService\", \"Notifications\", function GroupController($q, $scope, $state, $transition$, GroupService, Notifications) {\n  $scope.state = {\n    actionInProgress: false\n  };\n\n  $scope.update = function () {\n    var model = $scope.group;\n    $scope.state.actionInProgress = true;\n    GroupService.updateGroup(model).then(function success() {\n      Notifications.success('Success', 'Group successfully updated');\n      $state.go('portainer.groups', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to update group');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function initView() {\n    var groupId = $transition$.params().id;\n    $q.all({\n      group: GroupService.group(groupId)\n    }).then(function success(data) {\n      $scope.group = data.group;\n      $scope.loaded = true;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to load group details');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///9149\n");

}),

60160:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\nGroupsController.$inject = [\"$scope\", \"$state\", \"$async\", \"GroupService\", \"Notifications\"];\n\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app').controller('GroupsController', GroupsController);\n\nfunction GroupsController($scope, $state, $async, GroupService, Notifications) {\n  $scope.removeAction = removeAction;\n\n  function removeAction(selectedItems) {\n    return $async(removeActionAsync, selectedItems);\n  }\n\n  async function removeActionAsync(selectedItems) {\n    for (let group of selectedItems) {\n      try {\n        await GroupService.deleteGroup(group.Id);\n        Notifications.success('Environment group successfully removed', group.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()($scope.groups, group);\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to remove group');\n      }\n    }\n\n    $state.reload();\n  }\n\n  function initView() {\n    GroupService.groups().then(function success(data) {\n      $scope.groups = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve environment groups');\n      $scope.groups = [];\n    });\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///60160\n");

}),

66246:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n\nangular.module('portainer.app').controller('InitAdminController', ['$scope', '$state', 'Notifications', 'Authentication', 'StateManager', 'SettingsService', 'UserService', 'BackupService', 'StatusService', function ($scope, $state, Notifications, Authentication, StateManager, SettingsService, UserService, BackupService, StatusService) {\n  $scope.uploadBackup = uploadBackup;\n  $scope.logo = StateManager.getState().application.logo;\n  $scope.formValues = {\n    Username: 'admin',\n    Password: '',\n    ConfirmPassword: '',\n    enableTelemetry: \"development\" === 'production'\n  };\n  $scope.state = {\n    actionInProgress: false,\n    showInitPassword: true,\n    showRestorePortainer: false\n  };\n  createAdministratorFlow();\n\n  $scope.togglePanel = function () {\n    $scope.state.showInitPassword = !$scope.state.showInitPassword;\n    $scope.state.showRestorePortainer = !$scope.state.showRestorePortainer;\n  };\n\n  $scope.createAdminUser = function () {\n    var username = $scope.formValues.Username;\n    var password = $scope.formValues.Password;\n    $scope.state.actionInProgress = true;\n    UserService.initAdministrator(username, password).then(function success() {\n      return Authentication.login(username, password);\n    }).then(function success() {\n      return SettingsService.update({\n        enableTelemetry: $scope.formValues.enableTelemetry\n      });\n    }).then(() => {\n      return StateManager.initialize();\n    }).then(function () {\n      return (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_0__.getEnvironments)({\n        limit: 100\n      });\n    }).then(function success(data) {\n      if (data.value.length === 0) {\n        $state.go('portainer.wizard');\n      } else {\n        $state.go('portainer.home');\n      }\n    }).catch(function error(err) {\n      handleError(err);\n      Notifications.error('失败', err, '无法创建管理员用户');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function handleError(err) {\n    if (err.status === 303) {\n      const headers = err.headers();\n      const REDIRECT_REASON_TIMEOUT = 'AdminInitTimeout';\n\n      if (headers && headers['redirect-reason'] === REDIRECT_REASON_TIMEOUT) {\n        window.location.href = '/timeout.html';\n      }\n    }\n  }\n\n  function createAdministratorFlow() {\n    SettingsService.publicSettings().then(function success(data) {\n      $scope.requiredPasswordLength = data.RequiredPasswordLength;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索应用程序设置');\n    });\n    UserService.administratorExists().then(function success(exists) {\n      if (exists) {\n        $state.go('portainer.wizard');\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法验证管理员账户的存在');\n    });\n  }\n\n  async function uploadBackup() {\n    $scope.state.backupInProgress = true;\n    const file = $scope.formValues.BackupFile;\n    const password = $scope.formValues.Password;\n    restoreAndRefresh(() => BackupService.uploadBackup(file, password));\n  }\n\n  async function restoreAndRefresh(restoreAsyncFn) {\n    $scope.state.backupInProgress = true;\n\n    try {\n      await restoreAsyncFn();\n    } catch (err) {\n      handleError(err);\n      Notifications.error('失败', err, '无法恢复备份');\n      $scope.state.backupInProgress = false;\n      return;\n    }\n\n    try {\n      await waitPortainerRestart();\n      Notifications.success('Success', '备份已经成功恢复了');\n      $state.go('portainer.auth');\n    } catch (err) {\n      handleError(err);\n      Notifications.error('失败', err, '无法检查状态');\n      await wait(2);\n      location.reload();\n    }\n\n    $scope.state.backupInProgress = false;\n  }\n\n  async function waitPortainerRestart() {\n    for (let i = 0; i < 10; i++) {\n      await wait(5);\n\n      try {\n        const status = await StatusService.status();\n\n        if (status && status.Version) {\n          return;\n        }\n      } catch (e) {// pass\n      }\n    }\n\n    throw new Error('等待Portainer重新启动的超时时间');\n  }\n}]);\n\nfunction wait(seconds = 0) {\n  return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n}//# sourceURL=webpack-internal:///66246\n");

}),

88611:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/isEmpty */ 4622);\n/* harmony import */ var lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_models_endpoint_formValues__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/models/endpoint/formValues */ 690);\n/* harmony import */ var Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Portainer/models/endpoint/models */ 13494);\n\n\n\n\n\n__webpack_require__(/*! ./includes/localDocker.html */ 31714);\n\n__webpack_require__(/*! ./includes/localKubernetes.html */ 6367);\n\n__webpack_require__(/*! ./includes/agent.html */ 65535);\n\nclass InitEndpointController {\n  /* @ngInject */\n  constructor($async, $scope, $state, EndpointService, StateManager, Notifications) {\n    this.$async = $async;\n    this.$scope = $scope;\n    this.$state = $state;\n    this.EndpointService = EndpointService;\n    this.StateManager = StateManager;\n    this.Notifications = Notifications;\n    this.createLocalEndpointAsync = this.createLocalEndpointAsync.bind(this);\n    this.createLocalKubernetesEndpointAsync = this.createLocalKubernetesEndpointAsync.bind(this);\n    this.createAgentEndpointAsync = this.createAgentEndpointAsync.bind(this);\n  }\n\n  $onInit() {\n    if (!lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_0___default()(this.$scope.applicationState.endpoint)) {\n      this.$state.go('portainer.home');\n    }\n\n    this.logo = this.StateManager.getState().application.logo;\n    this.state = {\n      uploadInProgress: false,\n      actionInProgress: false\n    };\n    this.formValues = new Portainer_models_endpoint_formValues__WEBPACK_IMPORTED_MODULE_2__.PortainerEndpointInitFormValues();\n    this.endpointSections = Portainer_models_endpoint_formValues__WEBPACK_IMPORTED_MODULE_2__.PortainerEndpointInitFormValueEndpointSections;\n    this.PortainerEndpointConnectionTypes = Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes;\n  }\n\n  isConnectButtonDisabled() {\n    switch (this.formValues.ConnectionType) {\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.DOCKER_LOCAL:\n        return this.state.actionInProgress;\n\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.KUBERNETES_LOCAL:\n        return this.state.actionInProgress;\n\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.AGENT:\n        return this.state.actionInProgress || !this.formValues.Name || !this.formValues.URL;\n\n      default:\n        break;\n    }\n  }\n\n  createEndpoint() {\n    switch (this.formValues.ConnectionType) {\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.DOCKER_LOCAL:\n        return this.createLocalEndpoint();\n\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.KUBERNETES_LOCAL:\n        return this.createLocalKubernetesEndpoint();\n\n      case Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointConnectionTypes.AGENT:\n        return this.createAgentEndpoint();\n\n      default:\n        this.Notifications.error('失败', null, 'Unable to determine which action to do to create environment');\n    }\n  }\n\n  skipEndpointCreation() {\n    this.$state.go('portainer.home');\n  }\n  /**\n   * DOCKER_LOCAL (1)\n   */\n\n\n  async createLocalEndpointAsync() {\n    try {\n      this.state.actionInProgress = true;\n      await this.EndpointService.createLocalEndpoint();\n      this.$state.go('portainer.home');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to connect to the Docker environment');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  createLocalEndpoint() {\n    return this.$async(this.createLocalEndpointAsync);\n  }\n  /**\n   * KUBERNETES_LOCAL (5)\n   */\n\n\n  async createLocalKubernetesEndpointAsync() {\n    try {\n      this.state.actionInProgress = true;\n      const endpoint = await this.EndpointService.createLocalKubernetesEndpoint();\n      this.$state.go('kubernetes.cluster.setup', {\n        endpointId: endpoint.Id\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to connect to the Kubernetes environment');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  createLocalKubernetesEndpoint() {\n    return this.$async(this.createLocalKubernetesEndpointAsync);\n  }\n  /**\n   * DOCKER / KUBERNETES AGENT (2 / 6)\n   */\n\n\n  async createAgentEndpointAsync() {\n    try {\n      this.state.actionInProgress = true;\n      const name = this.formValues.Name;\n      const URL = this.formValues.URL;\n      const PublicURL = URL.split(':')[0];\n      const endpoint = await this.EndpointService.createRemoteEndpoint(name, Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointCreationTypes.AgentEnvironment, URL, PublicURL, 1, [], true, true, true, null, null, null);\n      const routeName = endpoint.Type === Portainer_models_endpoint_models__WEBPACK_IMPORTED_MODULE_3__.PortainerEndpointTypes.AgentOnKubernetesEnvironment ? 'kubernetes.cluster.setup' : 'portainer.home';\n      this.$state.go(routeName, {\n        endpointId: endpoint.Id\n      });\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to connect to the Docker environment');\n    } finally {\n      this.state.actionInProgress = false;\n    }\n  }\n\n  createAgentEndpoint() {\n    return this.$async(this.createAgentEndpointAsync);\n  }\n\n}\n\nInitEndpointController.$inject = [\"$async\", \"$scope\", \"$state\", \"EndpointService\", \"StateManager\", \"Notifications\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (InitEndpointController);\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app').controller('InitEndpointController', InitEndpointController);//# sourceURL=webpack-internal:///88611\n");

}),

95580:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass LogoutController {\n  /* @ngInject */\n  constructor($async, $state, $transition$, $window, Authentication, StateManager, Notifications, LocalStorage, SettingsService) {\n    this.$async = $async;\n    this.$state = $state;\n    this.$transition$ = $transition$;\n    this.$window = $window;\n    this.Authentication = Authentication;\n    this.StateManager = StateManager;\n    this.Notifications = Notifications;\n    this.LocalStorage = LocalStorage;\n    this.SettingsService = SettingsService;\n    this.logo = this.StateManager.getState().application.logo;\n    this.logoutAsync = this.logoutAsync.bind(this);\n    this.onInit = this.onInit.bind(this);\n  }\n  /**\n   * UTILS FUNCTIONS SECTION\n   */\n\n\n  async logoutAsync() {\n    const error = this.$transition$.params().error;\n    const performApiLogout = this.$transition$.params().performApiLogout;\n    const settings = await this.SettingsService.publicSettings();\n\n    try {\n      await this.Authentication.logout(performApiLogout);\n    } finally {\n      this.LocalStorage.storeLogoutReason(error);\n\n      if (settings.OAuthLogoutURI && this.Authentication.getUserDetails().ID !== 1) {\n        this.$window.location.href = settings.OAuthLogoutURI;\n      } else {\n        this.$state.go('portainer.auth', {\n          reload: true\n        });\n      }\n    }\n  }\n\n  logout() {\n    return this.$async(this.logoutAsync);\n  }\n  /**\n   * END UTILS FUNCTIONS SECTION\n   */\n\n\n  async onInit() {\n    try {\n      await this.logout();\n    } catch (err) {\n      this.Notifications.error('失败', err, 'An error occured during logout');\n    }\n  }\n\n  $onInit() {\n    return this.$async(this.onInit);\n  }\n  /**\n   * END ON INIT SECTION\n   */\n\n\n}\n\nLogoutController.$inject = [\"$async\", \"$state\", \"$transition$\", \"$window\", \"Authentication\", \"StateManager\", \"Notifications\", \"LocalStorage\", \"SettingsService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (LogoutController);\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('LogoutController', LogoutController);//# sourceURL=webpack-internal:///95580\n");

}),

85274:

(function() {

eval("MainController.$inject = [\"$scope\", \"StateManager\", \"ThemeManager\", \"SidebarService\"];\nangular.module('portainer.app').controller('MainController', MainController);\n/* @ngInject */\n\nfunction MainController($scope, StateManager, ThemeManager, SidebarService) {\n  /**\n   * Sidebar Toggle & Cookie Control\n   */\n  $scope.applicationState = StateManager.getState();\n  $scope.isSidebarOpen = SidebarService.isSidebarOpen;\n  ThemeManager.autoTheme();\n}//# sourceURL=webpack-internal:///85274\n");

}),

38910:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _createRegistryController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createRegistryController */ 83137);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./createRegistry.html */ 83827);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('createRegistry', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _createRegistryController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///38910\n");

}),

83137:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/includes */ 44716);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/models/registryTypes */ 56414);\n/* harmony import */ var Portainer_models_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Portainer/models/registry */ 33180);\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./options */ 43643);\n\n\n\n\n\n\nclass CreateRegistryController {\n  /* @ngInject */\n  constructor($async, $state, Notifications, RegistryService, RegistryGitlabService) {\n    Object.assign(this, {\n      $async,\n      $state,\n      Notifications,\n      RegistryService,\n      RegistryGitlabService\n    });\n    this.RegistryTypes = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes;\n    this.state = {\n      actionInProgress: false,\n      overrideConfiguration: false,\n      gitlab: {\n        get selectedItemCount() {\n          return this.selectedItems.length || 0;\n        },\n\n        selectedItems: []\n      },\n      originViewReference: 'portainer.registries',\n      originalEndpointId: null\n    };\n    this.createRegistry = this.createRegistry.bind(this);\n    this.getRegistries = this.getRegistries.bind(this);\n    this.nameIsUsed = this.nameIsUsed.bind(this);\n    this.retrieveGitlabRegistries = this.retrieveGitlabRegistries.bind(this);\n    this.createGitlabRegistries = this.createGitlabRegistries.bind(this);\n    this.selectDockerHub = this.selectDockerHub.bind(this);\n    this.selectEcr = this.selectEcr.bind(this);\n    this.selectQuayRegistry = this.selectQuayRegistry.bind(this);\n    this.selectProGetRegistry = this.selectProGetRegistry.bind(this);\n    this.selectAzureRegistry = this.selectAzureRegistry.bind(this);\n    this.selectGitlabRegistry = this.selectGitlabRegistry.bind(this);\n    this.selectCustomRegistry = this.selectCustomRegistry.bind(this);\n    this.setRegistry = this.setRegistry.bind(this);\n  }\n\n  useDefaultQuayConfiguration() {\n    this.model.Quay.useOrganisation = false;\n    this.model.Quay.organisationName = '';\n  }\n\n  selectQuayRegistry() {\n    this.model.Name = 'Quay';\n    this.model.URL = 'quay.io';\n    this.model.Authentication = true;\n    this.model.Quay = {};\n    this.useDefaultQuayConfiguration();\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.QUAY;\n  }\n\n  useDefaultGitlabConfiguration() {\n    this.model.URL = 'https://registry.gitlab.com';\n    this.model.Gitlab.InstanceURL = 'https://gitlab.com';\n  }\n\n  selectGitlabRegistry() {\n    this.model.Name = '';\n    this.model.Authentication = true;\n    this.model.Gitlab = {};\n    this.useDefaultGitlabConfiguration();\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.GITLAB;\n  }\n\n  selectAzureRegistry() {\n    this.model.Name = '';\n    this.model.URL = '';\n    this.model.Authentication = true;\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.AZURE;\n  }\n\n  selectProGetRegistry() {\n    this.model.Name = '';\n    this.model.URL = '';\n    this.model.BaseURL = '';\n    this.model.Authentication = true;\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.PROGET;\n  }\n\n  selectCustomRegistry() {\n    this.model.Name = '';\n    this.model.URL = '';\n    this.model.Authentication = false;\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.CUSTOM;\n  }\n\n  selectDockerHub() {\n    this.model.Name = '';\n    this.model.URL = 'docker.io';\n    this.model.Authentication = true;\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.DOCKERHUB;\n  }\n\n  useDefaultEcrConfiguration() {\n    this.model.Ecr.Region = '';\n  }\n\n  selectEcr() {\n    this.model.Name = '';\n    this.model.URL = '';\n    this.model.Authentication = false;\n    this.model.Ecr = {};\n    this.useDefaultEcrConfiguration();\n    this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.ECR;\n  }\n\n  retrieveGitlabRegistries() {\n    return this.$async(async () => {\n      this.state.actionInProgress = true;\n\n      try {\n        this.gitlabProjects = await this.RegistryGitlabService.projects(this.model.Gitlab.InstanceURL, this.model.Token);\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to retrieve projects');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  createGitlabRegistries() {\n    return this.$async(async () => {\n      try {\n        this.state.actionInProgress = true;\n        await this.RegistryService.createGitlabRegistries(this.model, this.state.gitlab.selectedItems);\n        this.Notifications.success('Success', 'Registries successfully created');\n        this.$state.go(this.state.originViewReference, {\n          endpointId: this.state.originalEndpointId\n        });\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to create registries');\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  createRegistry() {\n    return this.$async(async () => {\n      try {\n        this.state.actionInProgress = true;\n        await this.RegistryService.createRegistry(this.model);\n        this.Notifications.success('Success', 'Registry successfully created');\n        this.$state.go(this.state.originViewReference, {\n          endpointId: this.state.originalEndpointId\n        });\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to create registry');\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  nameIsUsed(name) {\n    return lodash_includes__WEBPACK_IMPORTED_MODULE_1___default()(this.registriesNames, name);\n  }\n\n  getRegistries() {\n    return this.$async(async () => {\n      try {\n        const registries = await this.RegistryService.registries();\n        this.registriesNames = lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(registries, 'Name');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to fetch existing registries');\n      }\n    });\n  }\n\n  setRegistry(registry) {\n    this.state.registryValue = registry;\n\n    switch (registry) {\n      case '6':\n        this.selectDockerHub();\n        break;\n\n      case '7':\n        this.selectEcr();\n        break;\n\n      case '1':\n        this.selectQuayRegistry();\n        break;\n\n      case '5':\n        this.selectProGetRegistry();\n        break;\n\n      case '2':\n        this.selectAzureRegistry();\n        break;\n\n      case '4':\n        this.selectGitlabRegistry();\n        break;\n\n      case '3':\n        this.selectCustomRegistry();\n        break;\n    }\n  }\n\n  $onInit() {\n    return this.$async(async () => {\n      this.model = new Portainer_models_registry__WEBPACK_IMPORTED_MODULE_3__.RegistryCreateFormValues();\n      this.model.Type = Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_2__.RegistryTypes.DOCKERHUB;\n      this.selectDockerHub();\n      this.state.availableRegistry = _options__WEBPACK_IMPORTED_MODULE_4__.options; // Default registryValue is DockerHub, which is 6\n\n      this.state.registryValue = '6';\n      const from = this.$transition$.from();\n      const params = this.$transition$.params('from');\n\n      if (from.name && /^[a-z]+\\.registries$/.test(from.name)) {\n        this.state.originViewReference = from;\n        this.state.originalEndpointId = params.endpointId || null;\n      }\n\n      await this.getRegistries();\n    });\n  }\n\n}\n\nCreateRegistryController.$inject = [\"$async\", \"$state\", \"Notifications\", \"RegistryService\", \"RegistryGitlabService\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (CreateRegistryController);//# sourceURL=webpack-internal:///83137\n");

}),

74927:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _registryController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registryController */ 66146);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./registry.html */ 2800);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('editRegistry', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _registryController__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  bindings: {\n    $transition$: '<'\n  }\n});//# sourceURL=webpack-internal:///74927\n");

}),

66146:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ RegistryController; }\n/* harmony export */ });\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/map */ 66539);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_pullAllBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/pullAllBy */ 75569);\n/* harmony import */ var lodash_pullAllBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_pullAllBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/includes */ 44716);\n/* harmony import */ var lodash_includes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_includes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/models/registryTypes */ 56414);\n\n\n\n\nclass RegistryController {\n  /* @ngInject */\n  constructor($scope, $async, $state, RegistryService, Notifications) {\n    this.$scope = $scope;\n    Object.assign(this, {\n      $async,\n      $state,\n      RegistryService,\n      Notifications\n    });\n    this.RegistryTypes = _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes;\n    this.state = {\n      actionInProgress: false,\n      loading: false\n    };\n    this.Password = '';\n    this.toggleAuthentication = this.toggleAuthentication.bind(this);\n    this.toggleQuayUseOrganisation = this.toggleQuayUseOrganisation.bind(this);\n  }\n\n  toggleAuthentication(newValue) {\n    this.$scope.$evalAsync(() => {\n      this.registry.Authentication = newValue;\n    });\n  }\n\n  toggleQuayUseOrganisation(newValue) {\n    this.$scope.$evalAsync(() => {\n      this.registry.Quay.UseOrganisation = newValue;\n    });\n  }\n\n  passwordLabel() {\n    const type = this.registry.Type;\n\n    switch (type) {\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.ECR:\n        return 'AWS Secret Access Key';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.DOCKERHUB:\n        return 'Access token';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.GITLAB:\n        return 'Personal Access Token';\n\n      default:\n        return 'Password';\n    }\n  }\n\n  updateRegistry() {\n    return this.$async(async () => {\n      try {\n        this.state.actionInProgress = true;\n        const registry = this.registry;\n        registry.Password = this.Password;\n        await this.RegistryService.updateRegistry(registry);\n        this.Notifications.success('Success', 'Registry successfully updated');\n        this.$state.go('portainer.registries');\n      } catch (err) {\n        this.Notifications.error('失败', err, 'Unable to update registry');\n      } finally {\n        this.state.actionInProgress = false;\n      }\n    });\n  }\n\n  onChangeName() {\n    this.state.nameAlreadyExists = lodash_includes__WEBPACK_IMPORTED_MODULE_2___default()(this.registriesNames, this.registry.Name);\n  }\n\n  isUpdateButtonDisabled() {\n    return this.state.actionInProgress || this.state.nameAlreadyExists || !this.registry.Name || !this.registry.URL || this.registry.Type == this.RegistryTypes.QUAY && this.registry.Quay.UseOrganisation && !this.registry.Quay.OrganisationName;\n  }\n\n  getRegistryProvider(registryType) {\n    switch (registryType) {\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.QUAY:\n        return 'Quay.io';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.AZURE:\n        return 'Azure';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.CUSTOM:\n        return 'Custom';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.GITLAB:\n        return 'Gitlab';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.PROGET:\n        return 'ProGet';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.DOCKERHUB:\n        return 'Docker Hub';\n\n      case _portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_3__.RegistryTypes.ECR:\n        return 'AWS ECR';\n\n      default:\n        return '';\n    }\n  }\n\n  async $onInit() {\n    try {\n      this.state.loading = true;\n      const registryId = this.$state.params.id;\n      const registry = await this.RegistryService.registry(registryId);\n      this.registry = registry;\n      this.provider = this.getRegistryProvider(registry.Type);\n      const registries = await this.RegistryService.registries();\n\n      lodash_pullAllBy__WEBPACK_IMPORTED_MODULE_1___default()(registries, [registry], 'Id');\n\n      this.registriesNames = lodash_map__WEBPACK_IMPORTED_MODULE_0___default()(registries, 'Name');\n    } catch (err) {\n      this.Notifications.error('失败', err, 'Unable to retrieve registry details');\n    } finally {\n      this.state.loading = false;\n    }\n  }\n\n}\nRegistryController.$inject = [\"$scope\", \"$async\", \"$state\", \"RegistryService\", \"Notifications\"];//# sourceURL=webpack-internal:///66146\n");

}),

6009:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/includes */ 44716);\n/* harmony import */ var lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/models/registryTypes */ 56414);\n\n\nangular.module('portainer.app').controller('RegistriesController', ['$q', '$scope', '$state', 'RegistryService', 'ModalService', 'Notifications', function ($q, $scope, $state, RegistryService, ModalService, Notifications) {\n  $scope.state = {\n    actionInProgress: false\n  };\n  const nonBrowsableTypes = [Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.ANONYMOUS, Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.DOCKERHUB, Portainer_models_registryTypes__WEBPACK_IMPORTED_MODULE_1__.RegistryTypes.QUAY];\n\n  $scope.canBrowse = function (item) {\n    return !lodash_es_includes__WEBPACK_IMPORTED_MODULE_0___default()(nonBrowsableTypes, item.Type);\n  };\n\n  $scope.removeAction = function (selectedItems) {\n    const regAttrMsg = selectedItems.length > 1 ? 'hese' : 'his';\n    const registriesMsg = selectedItems.length > 1 ? 'registries' : 'registry';\n    const msg = `T${regAttrMsg} ${registriesMsg} 可能被一个或多个环境中的应用程序使用。删除 ${registriesMsg} 可能导致使用 t${regAttrMsg} ${registriesMsg}. 的应用程序的服务中断。您是否想移除所选的 ${registriesMsg}?`;\n    ModalService.confirmDeletion(msg, function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      deleteSelectedRegistries(selectedItems);\n    });\n  };\n\n  function deleteSelectedRegistries(selectedItems) {\n    var actionCount = selectedItems.length;\n    angular.forEach(selectedItems, function (registry) {\n      RegistryService.deleteRegistry(registry.Id).then(function success() {\n        Notifications.success('Registry successfully removed', registry.Name);\n        var index = $scope.registries.indexOf(registry);\n        $scope.registries.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to remove registry');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  }\n\n  function initView() {\n    $q.all({\n      registries: RegistryService.registries()\n    }).then(function success(data) {\n      $scope.registries = data.registries;\n    }).catch(function error(err) {\n      $scope.registries = [];\n      Notifications.error('失败', err, 'Unable to retrieve registries');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///6009\n");

}),

39066:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/compact */ 20810);\n/* harmony import */ var lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_compact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/settings/authentication/ldap/ldap-settings.model */ 54512);\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./options */ 93878);\n\nSettingsAuthenticationController.$inject = [\"$q\", \"$scope\", \"$state\", \"Notifications\", \"SettingsService\", \"FileUploadService\", \"TeamService\", \"LDAPService\"];\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app').controller('SettingsAuthenticationController', SettingsAuthenticationController);\n\nfunction SettingsAuthenticationController($q, $scope, $state, Notifications, SettingsService, FileUploadService, TeamService, LDAPService) {\n  $scope.authMethod = 1;\n  $scope.state = {\n    uploadInProgress: false,\n    actionInProgress: false,\n    availableUserSessionTimeoutOptions: [{\n      key: '1 小时',\n      value: '1h'\n    }, {\n      key: '4 小时',\n      value: '4h'\n    }, {\n      key: '8 小时',\n      value: '8h'\n    }, {\n      key: '24 小时',\n      value: '24h'\n    }, {\n      key: '1 周',\n      value: `${24 * 7}h`\n    }, {\n      key: '1 月',\n      value: `${24 * 30}h`\n    }, {\n      key: '6 月',\n      value: `${24 * 30 * 6}h`\n    }, {\n      key: '1 年',\n      value: `${24 * 30 * 12}h`\n    }]\n  };\n  $scope.formValues = {\n    UserSessionTimeout: $scope.state.availableUserSessionTimeoutOptions[0],\n    TLSCACert: '',\n    ldap: {\n      serverType: 0,\n      adSettings: (0,_portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_2__.buildAdSettingsModel)(),\n      ldapSettings: (0,_portainer_settings_authentication_ldap_ldap_settings_model__WEBPACK_IMPORTED_MODULE_2__.buildLdapSettingsModel)()\n    }\n  };\n  $scope.authOptions = _options__WEBPACK_IMPORTED_MODULE_3__.options;\n\n  $scope.onChangeAuthMethod = function onChangeAuthMethod(value) {\n    $scope.authMethod = value;\n\n    if (value === 4) {\n      $scope.settings.AuthenticationMethod = 2;\n      $scope.formValues.ldap.serverType = 2;\n      return;\n    }\n\n    if (value === 2) {\n      $scope.settings.AuthenticationMethod = 2;\n      $scope.formValues.ldap.serverType = $scope.formValues.ldap.ldapSettings.ServerType;\n      return;\n    }\n\n    $scope.settings.AuthenticationMethod = value;\n  };\n\n  $scope.onChangePasswordLength = function onChangePasswordLength(value) {\n    $scope.$evalAsync(() => {\n      $scope.settings.InternalAuthSettings = {\n        RequiredPasswordLength: value\n      };\n    });\n  };\n\n  $scope.authenticationMethodSelected = function authenticationMethodSelected(value) {\n    if (!$scope.settings) {\n      return false;\n    }\n\n    if (value === 4) {\n      return $scope.settings.AuthenticationMethod === 2 && $scope.formValues.ldap.serverType === 2;\n    }\n\n    if (value === 2) {\n      return $scope.settings.AuthenticationMethod === 2 && $scope.formValues.ldap.serverType !== 2;\n    }\n\n    return $scope.settings.AuthenticationMethod === value;\n  };\n\n  $scope.isOauthEnabled = function isOauthEnabled() {\n    return $scope.settings && $scope.settings.AuthenticationMethod === 3;\n  };\n\n  $scope.LDAPConnectivityCheck = LDAPConnectivityCheck;\n\n  function LDAPConnectivityCheck() {\n    const settings = angular__WEBPACK_IMPORTED_MODULE_1___default().copy($scope.settings);\n    const {\n      settings: ldapSettings,\n      uploadRequired,\n      tlscaFile\n    } = prepareLDAPSettings();\n    settings.LDAPSettings = ldapSettings;\n    $scope.state.uploadInProgress = uploadRequired;\n    $scope.state.connectivityCheckInProgress = true;\n    $q.when(!uploadRequired || FileUploadService.uploadLDAPTLSFiles(tlscaFile, null, null)).then(function success() {\n      return LDAPService.check(settings.LDAPSettings);\n    }).then(function success() {\n      $scope.state.failedConnectivityCheck = false;\n      $scope.state.successfulConnectivityCheck = true;\n      Notifications.success('Success', 'Connection to LDAP successful');\n    }).catch(function error(err) {\n      $scope.state.failedConnectivityCheck = true;\n      $scope.state.successfulConnectivityCheck = false;\n      Notifications.error('失败', err, 'Connection to LDAP failed');\n    }).finally(function final() {\n      $scope.state.uploadInProgress = false;\n      $scope.state.connectivityCheckInProgress = false;\n    });\n  }\n\n  $scope.saveSettings = function () {\n    const settings = angular__WEBPACK_IMPORTED_MODULE_1___default().copy($scope.settings);\n    const {\n      settings: ldapSettings,\n      uploadRequired,\n      tlscaFile\n    } = prepareLDAPSettings();\n    settings.LDAPSettings = ldapSettings;\n    $scope.state.uploadInProgress = uploadRequired;\n    $scope.state.actionInProgress = true;\n    $q.when(!uploadRequired || FileUploadService.uploadLDAPTLSFiles(tlscaFile, null, null)).then(function success() {\n      return SettingsService.update(settings);\n    }).then(function success() {\n      Notifications.success('Success', 'Authentication settings updated');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to update authentication settings');\n    }).finally(function final() {\n      $scope.state.uploadInProgress = false;\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function prepareLDAPSettings() {\n    const tlscaCert = $scope.formValues.TLSCACert;\n    const tlscaFile = tlscaCert !== $scope.settings.LDAPSettings.TLSConfig.TLSCACert ? tlscaCert : null;\n    const isADServer = $scope.formValues.ldap.serverType === 2;\n    const settings = isADServer ? $scope.formValues.ldap.adSettings : $scope.formValues.ldap.ldapSettings;\n\n    if (settings.AnonymousMode && !isADServer) {\n      settings.ReaderDN = '';\n      settings.Password = '';\n    }\n\n    if (isADServer) {\n      settings.AnonymousMode = false;\n    }\n\n    settings.URLs = settings.URLs.map(url => {\n      if (url.includes(':')) {\n        return url;\n      }\n\n      return url + (settings.TLSConfig.TLS ? ':636' : ':389');\n    });\n    const uploadRequired = (settings.TLSConfig.TLS || settings.StartTLS) && !settings.TLSConfig.TLSSkipVerify;\n    settings.URL = settings.URLs[0];\n    return {\n      settings,\n      uploadRequired,\n      tlscaFile\n    };\n  }\n\n  $scope.isLDAPFormValid = isLDAPFormValid;\n\n  function isLDAPFormValid() {\n    const ldapSettings = $scope.formValues.ldap.serverType === 2 ? $scope.formValues.ldap.adSettings : $scope.formValues.ldap.ldapSettings;\n    const isTLSMode = ldapSettings.TLSConfig.TLS || ldapSettings.StartTLS;\n    return lodash_es_compact__WEBPACK_IMPORTED_MODULE_0___default()(ldapSettings.URLs).length && (ldapSettings.AnonymousMode || ldapSettings.ReaderDN && ldapSettings.Password) && (!isTLSMode || isTLSMode && $scope.formValues.TLSCACert || ldapSettings.TLSConfig.TLSSkipVerify) && (!$scope.settings.LDAPSettings.AdminAutoPopulate || $scope.settings.LDAPSettings.AdminAutoPopulate && $scope.formValues.selectedAdminGroups.length > 0);\n  }\n\n  $scope.isOAuthTeamMembershipFormValid = isOAuthTeamMembershipFormValid;\n\n  function isOAuthTeamMembershipFormValid() {\n    if ($scope.settings && $scope.settings.OAuthSettings.OAuthAutoMapTeamMemberships && $scope.settings.OAuthSettings.TeamMemberships) {\n      if (!$scope.settings.OAuthSettings.TeamMemberships.OAuthClaimName) {\n        return false;\n      }\n\n      const hasInvalidMapping = $scope.settings.OAuthSettings.TeamMemberships.OAuthClaimMappings.some(m => !(m.ClaimValRegex && m.Team));\n\n      if (hasInvalidMapping) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function initView() {\n    $q.all({\n      settings: SettingsService.settings(),\n      teams: TeamService.teams()\n    }).then(function success(data) {\n      var settings = data.settings;\n      $scope.teams = data.teams;\n      $scope.settings = settings;\n      $scope.OAuthSettings = settings.OAuthSettings;\n      $scope.authMethod = settings.AuthenticationMethod;\n\n      if (settings.AuthenticationMethod === 2 && settings.LDAPSettings.ServerType === 2) {\n        $scope.authMethod = 4;\n      }\n\n      if (settings.LDAPSettings.URL) {\n        settings.LDAPSettings.URLs = [settings.LDAPSettings.URL];\n      }\n\n      if (!settings.LDAPSettings.URLs) {\n        settings.LDAPSettings.URLs = [];\n      }\n\n      if (!settings.LDAPSettings.URLs.length) {\n        settings.LDAPSettings.URLs.push('');\n      }\n\n      if (!settings.LDAPSettings.ServerType) {\n        settings.LDAPSettings.ServerType = 0;\n      }\n\n      $scope.formValues.ldap.serverType = settings.LDAPSettings.ServerType;\n\n      if (settings.LDAPSettings.ServerType === 2) {\n        $scope.formValues.ldap.adSettings = settings.LDAPSettings;\n      } else {\n        $scope.formValues.ldap.ldapSettings = Object.assign($scope.formValues.ldap.ldapSettings, settings.LDAPSettings);\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve application settings');\n    });\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///39066\n");

}),

43404:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _settingsEdgeComputeController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settingsEdgeComputeController */ 51861);\nconst autoNgTemplateLoaderTemplate1 = __webpack_require__(/*! ./settingsEdgeCompute.html */ 93149);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').component('settingsEdgeComputeView', {\n  templateUrl: autoNgTemplateLoaderTemplate1,\n  controller: _settingsEdgeComputeController__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});//# sourceURL=webpack-internal:///43404\n");

}),

51861:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ SettingsEdgeComputeController; }\n/* harmony export */ });\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/hostmanagement/fdo/fdo.service */ 60122);\n/* harmony import */ var Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/hostmanagement/open-amt/open-amt.service */ 76827);\nSettingsEdgeComputeController.$inject = [\"$q\", \"$async\", \"$state\", \"Notifications\", \"SettingsService\", \"StateManager\"];\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('SettingsEdgeComputeController', SettingsEdgeComputeController);\n/* @ngInject */\n\nfunction SettingsEdgeComputeController($q, $async, $state, Notifications, SettingsService, StateManager) {\n  var ctrl = this;\n\n  this.onSubmitEdgeCompute = async function (settings) {\n    try {\n      await SettingsService.update(settings);\n      Notifications.success('Success', 'Settings updated');\n      StateManager.updateEnableEdgeComputeFeatures(settings.EnableEdgeComputeFeatures);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to update settings');\n    }\n  };\n\n  this.onSubmitOpenAMT = async function (formValues) {\n    try {\n      await (0,Portainer_hostmanagement_open_amt_open_amt_service__WEBPACK_IMPORTED_MODULE_2__.configureAMT)(formValues);\n      Notifications.success('Success', `OpenAMT successfully ${formValues.enabled ? 'enabled' : 'disabled'}`);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Failed applying changes');\n    }\n  };\n\n  this.onSubmitFDO = async function (formValues) {\n    try {\n      await (0,_portainer_hostmanagement_fdo_fdo_service__WEBPACK_IMPORTED_MODULE_1__.configureFDO)(formValues);\n      Notifications.success('Success', `FDO successfully ${formValues.enabled ? 'enabled' : 'disabled'}`);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Failed applying changes');\n    }\n  };\n\n  function initView() {\n    $async(async () => {\n      try {\n        ctrl.settings = await SettingsService.settings();\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to retrieve application settings');\n      }\n    });\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///51861\n");

}),

45459:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./options */ 70610);\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('SettingsController', ['$scope', '$state', 'Notifications', 'SettingsService', 'StateManager', 'BackupService', 'FileSaver', 'Blob', function ($scope, $state, Notifications, SettingsService, StateManager, BackupService, FileSaver) {\n  $scope.customBannerFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.CUSTOM_LOGIN_BANNER;\n  $scope.s3BackupFeatureId = _portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_1__.FeatureId.S3_BACKUP_SETTING;\n  $scope.backupOptions = _options__WEBPACK_IMPORTED_MODULE_2__.options;\n  $scope.state = {\n    isDemo: false,\n    actionInProgress: false,\n    availableKubeconfigExpiryOptions: [{\n      key: '1 天',\n      value: '24h'\n    }, {\n      key: '7 天',\n      value: `${24 * 7}h`\n    }, {\n      key: '30 天',\n      value: `${24 * 30}h`\n    }, {\n      key: '1 年',\n      value: `${24 * 30 * 12}h`\n    }, {\n      key: '无过期时间',\n      value: '0'\n    }],\n    backupInProgress: false,\n    featureLimited: false,\n    showHTTPS: !window.ddExtension\n  };\n  $scope.BACKUP_FORM_TYPES = {\n    S3: 's3',\n    FILE: 'file'\n  };\n  $scope.formValues = {\n    customLogo: false,\n    labelName: '',\n    labelValue: '',\n    enableTelemetry: false,\n    passwordProtect: false,\n    password: '',\n    backupFormType: $scope.BACKUP_FORM_TYPES.FILE\n  };\n\n  $scope.onToggleEnableTelemetry = function onToggleEnableTelemetry(checked) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.enableTelemetry = checked;\n    });\n  };\n\n  $scope.onToggleCustomLogo = function onToggleCustomLogo(checked) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.customLogo = checked;\n    });\n  };\n\n  $scope.onToggleAutoBackups = function onToggleAutoBackups(checked) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.scheduleAutomaticBackups = checked;\n    });\n  };\n\n  $scope.onBackupOptionsChange = function (type, limited) {\n    $scope.formValues.backupFormType = type;\n    $scope.state.featureLimited = limited;\n  };\n\n  $scope.removeFilteredContainerLabel = function (index) {\n    var settings = $scope.settings;\n    settings.BlackListedLabels.splice(index, 1);\n    updateSettings(settings);\n  };\n\n  $scope.addFilteredContainerLabel = function () {\n    var settings = $scope.settings;\n    var label = {\n      name: $scope.formValues.labelName,\n      value: $scope.formValues.labelValue\n    };\n    settings.BlackListedLabels.push(label);\n    updateSettings(settings);\n  };\n\n  $scope.downloadBackup = function () {\n    const payload = {};\n\n    if ($scope.formValues.passwordProtect) {\n      payload.password = $scope.formValues.password;\n    }\n\n    $scope.state.backupInProgress = true;\n    BackupService.downloadBackup(payload).then(function success(data) {\n      const downloadData = new Blob([data.file], {\n        type: 'application/gzip'\n      });\n      FileSaver.saveAs(downloadData, data.name);\n      Notifications.success('Success', '备份成功下载');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法下载备份');\n    }).finally(function final() {\n      $scope.state.backupInProgress = false;\n    });\n  };\n\n  $scope.saveApplicationSettings = function () {\n    var settings = $scope.settings;\n\n    if (!$scope.formValues.customLogo) {\n      settings.LogoURL = '';\n    }\n\n    settings.EnableTelemetry = $scope.formValues.enableTelemetry;\n    $scope.state.actionInProgress = true;\n    updateSettings(settings);\n  };\n\n  function updateSettings(settings) {\n    SettingsService.update(settings).then(function success() {\n      Notifications.success('Success', 'Settings updated');\n      StateManager.updateLogo(settings.LogoURL);\n      StateManager.updateSnapshotInterval(settings.SnapshotInterval);\n      StateManager.updateEnableTelemetry(settings.EnableTelemetry);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法更新设置');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  function initView() {\n    const state = StateManager.getState();\n    $scope.state.isDemo = state.application.demoEnvironment.enabled;\n    SettingsService.settings().then(function success(data) {\n      var settings = data;\n      $scope.settings = settings;\n\n      if (settings.LogoURL !== '') {\n        $scope.formValues.customLogo = true;\n      }\n\n      $scope.formValues.enableTelemetry = settings.EnableTelemetry;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索应用程序设置');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///45459\n");

}),

58000:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uuid/v4 */ 15964);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/constants */ 71541);\n/* harmony import */ var _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/kubernetes/models/deploy */ 6253);\n/* harmony import */ var Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/portainer/feature-flags/feature-flags.service */ 20037);\n/* harmony import */ var _react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/react/portainer/custom-templates/components/utils */ 26951);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ 52474);\n\n\n\n\n\n\n\n\nangular__WEBPACK_IMPORTED_MODULE_0___default().module('portainer.app').controller('CreateStackController', [\"$scope\", \"$state\", \"$async\", \"$window\", \"ModalService\", \"StackService\", \"Authentication\", \"Notifications\", \"FormValidator\", \"ResourceControlService\", \"FormHelper\", \"StackHelper\", \"ContainerHelper\", \"CustomTemplateService\", \"ContainerService\", \"WebhookHelper\", \"clipboard\", \"endpoint\", function ($scope, $state, $async, $window, ModalService, StackService, Authentication, Notifications, FormValidator, ResourceControlService, FormHelper, StackHelper, ContainerHelper, CustomTemplateService, ContainerService, WebhookHelper, clipboard, endpoint) {\n  $scope.onChangeTemplateId = onChangeTemplateId;\n  $scope.onChangeTemplateVariables = onChangeTemplateVariables;\n  $scope.isTemplateVariablesEnabled = _portainer_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_6__.isBE;\n  $scope.buildAnalyticsProperties = buildAnalyticsProperties;\n  $scope.stackWebhookFeature = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_5__.FeatureId.STACK_WEBHOOK;\n  $scope.STACK_NAME_VALIDATION_REGEX = _constants__WEBPACK_IMPORTED_MODULE_3__.STACK_NAME_VALIDATION_REGEX;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.formValues = {\n    Name: '',\n    StackFileContent: '',\n    StackFile: null,\n    RepositoryURL: '',\n    RepositoryReferenceName: '',\n    RepositoryAuthentication: false,\n    RepositoryUsername: '',\n    RepositoryPassword: '',\n    Env: [],\n    AdditionalFiles: [],\n    ComposeFilePathInRepository: 'docker-compose.yml',\n    AccessControlData: new _portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_2__.AccessControlFormData(),\n    RepositoryAutomaticUpdates: false,\n    RepositoryMechanism: _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__.RepositoryMechanismTypes.INTERVAL,\n    RepositoryFetchInterval: '5m',\n    RepositoryWebhookURL: WebhookHelper.returnStackWebhookUrl(uuid_v4__WEBPACK_IMPORTED_MODULE_1___default()()),\n    Variables: {}\n  };\n  $scope.state = {\n    Method: 'editor',\n    formValidationError: '',\n    actionInProgress: false,\n    StackType: null,\n    editorYamlValidationError: '',\n    uploadYamlValidationError: '',\n    isEditorDirty: false,\n    selectedTemplate: null,\n    selectedTemplateId: null\n  };\n\n  $window.onbeforeunload = () => {\n    if ($scope.state.Method === 'editor' && $scope.formValues.StackFileContent && $scope.state.isEditorDirty) {\n      return '';\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    $scope.state.isEditorDirty = false;\n  });\n  $scope.onChangeFormValues = onChangeFormValues;\n\n  $scope.onEnableWebhookChange = function (enable) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.EnableWebhook = enable;\n    });\n  };\n\n  $scope.addAdditionalFiles = function () {\n    $scope.formValues.AdditionalFiles.push('');\n  };\n\n  $scope.removeAdditionalFiles = function (index) {\n    $scope.formValues.AdditionalFiles.splice(index, 1);\n  };\n\n  function buildAnalyticsProperties() {\n    const metadata = {\n      type: methodLabel($scope.state.Method)\n    };\n\n    if ($scope.state.Method === 'repository') {\n      metadata.automaticUpdates = 'off';\n\n      if ($scope.formValues.RepositoryAutomaticUpdates) {\n        metadata.automaticUpdates = autoSyncLabel($scope.formValues.RepositoryMechanism);\n      }\n\n      metadata.auth = $scope.formValues.RepositoryAuthentication;\n    }\n\n    if ($scope.state.Method === 'template') {\n      metadata.templateName = $scope.state.selectedTemplate.Title;\n    }\n\n    return {\n      metadata\n    };\n\n    function methodLabel(method) {\n      switch (method) {\n        case 'editor':\n          return 'web-editor';\n\n        case 'repository':\n          return 'git';\n\n        case 'upload':\n          return 'file-upload';\n\n        case 'template':\n          return 'custom-template';\n      }\n    }\n\n    function autoSyncLabel(type) {\n      switch (type) {\n        case _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__.RepositoryMechanismTypes.INTERVAL:\n          return 'polling';\n\n        case _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__.RepositoryMechanismTypes.WEBHOOK:\n          return 'webhook';\n      }\n\n      return 'off';\n    }\n  }\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  function createSwarmStack(name, method) {\n    var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n    const endpointId = +$state.params.endpointId;\n\n    if (method === 'template' || method === 'editor') {\n      var stackFileContent = $scope.formValues.StackFileContent;\n      return StackService.createSwarmStackFromFileContent(name, stackFileContent, env, endpointId);\n    }\n\n    if (method === 'upload') {\n      var stackFile = $scope.formValues.StackFile;\n      return StackService.createSwarmStackFromFileUpload(name, stackFile, env, endpointId);\n    }\n\n    if (method === 'repository') {\n      var repositoryOptions = {\n        AdditionalFiles: $scope.formValues.AdditionalFiles,\n        RepositoryURL: $scope.formValues.RepositoryURL,\n        RepositoryReferenceName: $scope.formValues.RepositoryReferenceName,\n        ComposeFilePathInRepository: $scope.formValues.ComposeFilePathInRepository,\n        RepositoryAuthentication: $scope.formValues.RepositoryAuthentication,\n        RepositoryUsername: $scope.formValues.RepositoryUsername,\n        RepositoryPassword: $scope.formValues.RepositoryPassword\n      };\n      getAutoUpdatesProperty(repositoryOptions);\n      return StackService.createSwarmStackFromGitRepository(name, repositoryOptions, env, endpointId);\n    }\n  }\n\n  function getAutoUpdatesProperty(repositoryOptions) {\n    if ($scope.formValues.RepositoryAutomaticUpdates) {\n      repositoryOptions.AutoUpdate = {};\n\n      if ($scope.formValues.RepositoryMechanism === _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__.RepositoryMechanismTypes.INTERVAL) {\n        repositoryOptions.AutoUpdate.Interval = $scope.formValues.RepositoryFetchInterval;\n      } else if ($scope.formValues.RepositoryMechanism === _kubernetes_models_deploy__WEBPACK_IMPORTED_MODULE_4__.RepositoryMechanismTypes.WEBHOOK) {\n        repositoryOptions.AutoUpdate.Webhook = $scope.formValues.RepositoryWebhookURL.split('/').reverse()[0];\n      }\n    }\n  }\n\n  function createComposeStack(name, method) {\n    var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n    const endpointId = +$state.params.endpointId;\n\n    if (method === 'editor' || method === 'template') {\n      var stackFileContent = $scope.formValues.StackFileContent;\n      return StackService.createComposeStackFromFileContent(name, stackFileContent, env, endpointId);\n    } else if (method === 'upload') {\n      var stackFile = $scope.formValues.StackFile;\n      return StackService.createComposeStackFromFileUpload(name, stackFile, env, endpointId);\n    } else if (method === 'repository') {\n      var repositoryOptions = {\n        AdditionalFiles: $scope.formValues.AdditionalFiles,\n        RepositoryURL: $scope.formValues.RepositoryURL,\n        RepositoryReferenceName: $scope.formValues.RepositoryReferenceName,\n        ComposeFilePathInRepository: $scope.formValues.ComposeFilePathInRepository,\n        RepositoryAuthentication: $scope.formValues.RepositoryAuthentication,\n        RepositoryUsername: $scope.formValues.RepositoryUsername,\n        RepositoryPassword: $scope.formValues.RepositoryPassword\n      };\n      getAutoUpdatesProperty(repositoryOptions);\n      return StackService.createComposeStackFromGitRepository(name, repositoryOptions, env, endpointId);\n    }\n  }\n\n  $scope.copyWebhook = function () {\n    clipboard.copyText($scope.formValues.RepositoryWebhookURL);\n    $('#copyNotification').show();\n    $('#copyNotification').fadeOut(2000);\n  };\n\n  $scope.handleEnvVarChange = handleEnvVarChange;\n\n  function handleEnvVarChange(value) {\n    $scope.formValues.Env = value;\n  }\n\n  $scope.deployStack = function () {\n    var name = $scope.formValues.Name;\n    var method = $scope.state.Method;\n    var accessControlData = $scope.formValues.AccessControlData;\n    var userDetails = Authentication.getUserDetails();\n    var isAdmin = Authentication.isAdmin();\n\n    if (method === 'editor' && $scope.formValues.StackFileContent === '') {\n      $scope.state.formValidationError = '堆栈文件内容不得为空';\n      return;\n    }\n\n    if (!validateForm(accessControlData, isAdmin)) {\n      return;\n    }\n\n    var type = $scope.state.StackType;\n    var action = createSwarmStack;\n\n    if (type === 2) {\n      action = createComposeStack;\n    }\n\n    $scope.state.actionInProgress = true;\n    action(name, method).then(function success(data) {\n      if (data.data) {\n        data = data.data;\n      }\n\n      const userId = userDetails.ID;\n      const resourceControl = data.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('Success', 'Stack successfully deployed');\n      $scope.state.isEditorDirty = false;\n      $state.go('docker.stacks');\n    }).catch(function error(err) {\n      Notifications.error('Deployment error', err, 'Unable to deploy stack');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  $scope.onChangeFileContent = onChangeFileContent;\n\n  function onChangeFileContent(value) {\n    $scope.formValues.StackFileContent = value;\n    $scope.state.editorYamlValidationError = StackHelper.validateYAML($scope.formValues.StackFileContent, $scope.containerNames);\n    $scope.state.isEditorDirty = true;\n  }\n\n  async function onFileLoadAsync(event) {\n    $scope.state.uploadYamlValidationError = StackHelper.validateYAML(event.target.result, $scope.containerNames);\n  }\n\n  function onFileLoad(event) {\n    return $async(onFileLoadAsync, event);\n  }\n\n  $scope.uploadFile = function (file) {\n    $scope.formValues.StackFile = file;\n\n    if (file) {\n      const temporaryFileReader = new FileReader();\n      temporaryFileReader.fileName = file.name;\n      temporaryFileReader.onload = onFileLoad;\n      temporaryFileReader.readAsText(file);\n    }\n  };\n\n  function onChangeTemplateId(templateId, template) {\n    return $async(async () => {\n      if (!template || $scope.state.selectedTemplateId === templateId && $scope.state.selectedTemplate === template) {\n        return;\n      }\n\n      try {\n        $scope.state.selectedTemplateId = templateId;\n        $scope.state.selectedTemplate = template;\n        const fileContent = await CustomTemplateService.customTemplateFile(templateId);\n        $scope.state.templateContent = fileContent;\n        onChangeFileContent(fileContent);\n\n        if (template.Variables && template.Variables.length > 0) {\n          const variables = Object.fromEntries(template.Variables.map(variable => [variable.name, '']));\n          onChangeTemplateVariables(variables);\n        }\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to retrieve Custom Template file');\n      }\n    });\n  }\n\n  function onChangeTemplateVariables(value) {\n    onChangeFormValues({\n      Variables: value\n    });\n\n    if (!$scope.isTemplateVariablesEnabled) {\n      return;\n    }\n\n    const rendered = (0,_react_portainer_custom_templates_components_utils__WEBPACK_IMPORTED_MODULE_7__.renderTemplate)($scope.state.templateContent, $scope.formValues.Variables, $scope.state.selectedTemplate.Variables);\n    onChangeFormValues({\n      StackFileContent: rendered\n    });\n  }\n\n  async function initView() {\n    var endpointMode = $scope.applicationState.endpoint.mode;\n    $scope.state.StackType = 2;\n\n    if (endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER') {\n      $scope.state.StackType = 1;\n    }\n\n    $scope.composeSyntaxMaxVersion = endpoint.ComposeSyntaxMaxVersion;\n\n    try {\n      const containers = await ContainerService.containers(true);\n      $scope.containerNames = ContainerHelper.getContainerNames(containers);\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to retrieve Containers');\n    }\n  }\n\n  this.uiCanExit = async function () {\n    if ($scope.state.Method === 'editor' && $scope.formValues.StackFileContent && $scope.state.isEditorDirty) {\n      return ModalService.confirmWebEditorDiscard();\n    }\n  };\n\n  initView();\n\n  function onChangeFormValues(values) {\n    $scope.formValues = { ...$scope.formValues,\n      ...values\n    };\n  }\n}]);//# sourceURL=webpack-internal:///58000\n");

}),

84671:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/react/portainer/access-control/types */ 83471);\n/* harmony import */ var Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Portainer/components/accessControlForm/porAccessControlFormModel */ 19898);\n/* harmony import */ var Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Portainer/feature-flags/enums */ 26196);\n/* harmony import */ var _portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/portainer/environments/environment.service */ 31848);\n/* harmony import */ var _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/react/docker/stacks/types */ 62118);\n/* harmony import */ var _portainer_helpers_stackHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/portainer/helpers/stackHelper */ 13118);\n\n\n\n\n\n\nangular.module('portainer.app').controller('StackController', ['$async', '$compile', '$q', '$scope', '$state', '$window', '$transition$', 'StackService', 'NodeService', 'ServiceService', 'TaskService', 'ContainerService', 'ServiceHelper', 'TaskHelper', 'Notifications', 'FormHelper', 'EndpointProvider', 'GroupService', 'ModalService', 'StackHelper', 'ResourceControlService', 'Authentication', 'ContainerHelper', 'endpoint', function ($async, $compile, $q, $scope, $state, $window, $transition$, StackService, NodeService, ServiceService, TaskService, ContainerService, ServiceHelper, TaskHelper, Notifications, FormHelper, EndpointProvider, GroupService, ModalService, StackHelper, ResourceControlService, Authentication, ContainerHelper, endpoint) {\n  $scope.STACK_TYPES = _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackType;\n  $scope.resourceType = _react_portainer_access_control_types__WEBPACK_IMPORTED_MODULE_0__.ResourceControlType.Stack;\n\n  $scope.onUpdateResourceControlSuccess = function () {\n    $state.reload();\n  };\n\n  $scope.endpoint = endpoint;\n  $scope.isAdmin = Authentication.isAdmin();\n  $scope.stackWebhookFeature = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__.FeatureId.STACK_WEBHOOK;\n  $scope.stackPullImageFeature = Portainer_feature_flags_enums__WEBPACK_IMPORTED_MODULE_2__.FeatureId.STACK_PULL_IMAGE;\n  $scope.state = {\n    actionInProgress: false,\n    migrationInProgress: false,\n    showEditorTab: false,\n    yamlError: false,\n    isEditorDirty: false\n  };\n  $scope.formValues = {\n    Prune: false,\n    Endpoint: null,\n    AccessControlData: new Portainer_components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_1__.AccessControlFormData(),\n    Env: []\n  };\n\n  $window.onbeforeunload = () => {\n    if ($scope.stackFileContent && $scope.state.isEditorDirty) {\n      return '';\n    }\n  };\n\n  $scope.$on('$destroy', function () {\n    $scope.state.isEditorDirty = false;\n  });\n  $scope.handleEnvVarChange = handleEnvVarChange;\n\n  function handleEnvVarChange(value) {\n    $scope.formValues.Env = value;\n  }\n\n  $scope.onEnableWebhookChange = function (enable) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.EnableWebhook = enable;\n    });\n  };\n\n  $scope.onPruneChange = function (enable) {\n    $scope.$evalAsync(() => {\n      $scope.formValues.Prune = enable;\n    });\n  };\n\n  $scope.duplicateStack = function duplicateStack(name, targetEndpointId) {\n    var stack = $scope.stack;\n    var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env); // sets the targetEndpointID as global for interceptors\n\n    EndpointProvider.setEndpointID(targetEndpointId);\n    return StackService.duplicateStack(name, $scope.stackFileContent, env, targetEndpointId, stack.Type).then(onDuplicationSuccess).catch(notifyOnError);\n\n    function onDuplicationSuccess() {\n      Notifications.success('Success', '堆栈成功复制');\n      $state.go('docker.stacks', {}, {\n        reload: true\n      }); // sets back the original endpointID as global for interceptors\n\n      EndpointProvider.setEndpointID(stack.EndpointId);\n    }\n\n    function notifyOnError(err) {\n      Notifications.error('失败', err, '无法复制堆栈');\n    }\n  };\n\n  $scope.showEditor = function () {\n    $scope.state.showEditorTab = true;\n  };\n\n  $scope.migrateStack = function (name, endpointId) {\n    return $q(function (resolve) {\n      ModalService.confirmWarn({\n        title: '你确定吗？',\n        message: '这个动作将在目标环境上部署这个堆栈的一个新实例，请注意，这不会重新定位可能连接到这个堆栈的任何持久性存储卷的内容。',\n        buttons: {\n          confirm: {\n            label: '迁移',\n            className: 'btn-danger'\n          }\n        },\n        callback: function onConfirm(confirmed) {\n          if (!confirmed) {\n            return resolve();\n          }\n\n          return resolve(migrateStack(name, endpointId));\n        }\n      });\n    });\n  };\n\n  $scope.removeStack = function () {\n    ModalService.confirmDeletion('你想删除堆栈吗？相关的服务也将被删除.', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      deleteStack();\n    });\n  };\n\n  $scope.detachStackFromGit = function () {\n    ModalService.confirmDetachment('你想把堆栈从Git上分离出来吗？', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      $scope.deployStack();\n    });\n  };\n\n  function migrateStack(name, targetEndpointId) {\n    const stack = $scope.stack;\n    let migrateRequest = StackService.migrateSwarmStack;\n\n    if (stack.Type === 2) {\n      migrateRequest = StackService.migrateComposeStack;\n    } // TODO: this is a work-around for stacks created with Portainer version >= 1.17.1\n    // The EndpointID property is not available for these stacks, we can pass\n    // the current endpoint identifier as a part of the migrate request. It will be used if\n    // the EndpointID property is not defined on the stack.\n\n\n    if (stack.EndpointId === 0) {\n      stack.EndpointId = endpoint.Id;\n    }\n\n    $scope.state.migrationInProgress = true;\n    return migrateRequest(stack, targetEndpointId, name).then(function success() {\n      Notifications.success('Stack successfully migrated', stack.Name);\n      $state.go('docker.stacks', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to migrate stack');\n    }).finally(function final() {\n      $scope.state.migrationInProgress = false;\n    });\n  }\n\n  function deleteStack() {\n    var endpointId = +$state.params.endpointId;\n    var stack = $scope.stack;\n    StackService.remove(stack, $transition$.params().external, endpointId).then(function success() {\n      Notifications.success('Stack successfully removed', stack.Name);\n      $state.go('docker.stacks');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to remove stack ' + stack.Name);\n    });\n  }\n\n  $scope.associateStack = function () {\n    var endpointId = +$state.params.endpointId;\n    var stack = $scope.stack;\n    var accessControlData = $scope.formValues.AccessControlData;\n    $scope.state.actionInProgress = true;\n    StackService.associate(stack, endpointId, $scope.orphanedRunning).then(function success(data) {\n      const resourceControl = data.ResourceControl;\n      const userDetails = Authentication.getUserDetails();\n      const userId = userDetails.ID;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('Stack successfully associated', stack.Name);\n      $state.go('docker.stacks');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to associate stack ' + stack.Name);\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  $scope.deployStack = function () {\n    const stack = $scope.stack;\n    const isSwarmStack = stack.Type === 1;\n    ModalService.confirmStackUpdate('你想强制更新堆栈吗？', isSwarmStack, null, function (result) {\n      if (!result) {\n        return;\n      }\n\n      var stackFile = $scope.stackFileContent;\n      var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n      var prune = $scope.formValues.Prune; // TODO: this is a work-around for stacks created with Portainer version >= 1.17.1\n      // The EndpointID property is not available for these stacks, we can pass\n      // the current endpoint identifier as a part of the update request. It will be used if\n      // the EndpointID property is not defined on the stack.\n\n      if (stack.EndpointId === 0) {\n        stack.EndpointId = endpoint.Id;\n      }\n\n      $scope.state.actionInProgress = true;\n      StackService.updateStack(stack, stackFile, env, prune, !!result[0]).then(function success() {\n        Notifications.success('Success', 'Stack successfully deployed');\n        $scope.state.isEditorDirty = false;\n        $state.reload();\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to create stack');\n      }).finally(function final() {\n        $scope.state.actionInProgress = false;\n      });\n    });\n  };\n\n  $scope.editorUpdate = function (cm) {\n    if ($scope.stackFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== cm.getValue().replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n      $scope.state.isEditorDirty = true;\n      $scope.stackFileContent = cm.getValue();\n      $scope.state.yamlError = StackHelper.validateYAML($scope.stackFileContent, $scope.containerNames, $scope.state.originalContainerNames);\n    }\n  };\n\n  $scope.stopStack = stopStack;\n\n  function stopStack() {\n    return $async(stopStackAsync);\n  }\n\n  async function stopStackAsync() {\n    const confirmed = await ModalService.confirmAsync({\n      title: '你确定吗？',\n      message: '你确定你要停止这个堆栈吗？',\n      buttons: {\n        confirm: {\n          label: 'Stop',\n          className: 'btn-danger'\n        }\n      }\n    });\n\n    if (!confirmed) {\n      return;\n    }\n\n    $scope.state.actionInProgress = true;\n\n    try {\n      await StackService.stop($scope.stack.Id);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to stop stack');\n    }\n\n    $scope.state.actionInProgress = false;\n  }\n\n  $scope.startStack = startStack;\n\n  function startStack() {\n    return $async(startStackAsync);\n  }\n\n  async function startStackAsync() {\n    $scope.state.actionInProgress = true;\n    const id = $scope.stack.Id;\n\n    try {\n      await StackService.start(id);\n      $state.reload();\n    } catch (err) {\n      Notifications.error('失败', err, 'Unable to start stack');\n    }\n\n    $scope.state.actionInProgress = false;\n  }\n\n  function loadStack(id) {\n    return $async(async () => {\n      var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n      (0,_portainer_environments_environment_service__WEBPACK_IMPORTED_MODULE_3__.getEnvironments)().then(function success(data) {\n        $scope.endpoints = data.value;\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to retrieve environments');\n      });\n      $q.all({\n        stack: StackService.stack(id),\n        groups: GroupService.groups(),\n        containers: ContainerService.containers(true)\n      }).then(function success(data) {\n        var stack = data.stack;\n        $scope.groups = data.groups;\n        $scope.stack = stack;\n        $scope.containerNames = ContainerHelper.getContainerNames(data.containers);\n        $scope.formValues.Env = $scope.stack.Env;\n        let resourcesPromise = Promise.resolve({});\n\n        if (!stack.Status || stack.Status === 1) {\n          resourcesPromise = stack.Type === 1 ? retrieveSwarmStackResources(stack.Name, agentProxy) : retrieveComposeStackResources(stack.Name);\n        }\n\n        return $q.all({\n          stackFile: StackService.getStackFile(id),\n          resources: resourcesPromise\n        });\n      }).then(function success(data) {\n        const isSwarm = $scope.stack.Type === _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackType.DockerSwarm;\n        $scope.stackFileContent = data.stackFile; // workaround for missing status, if stack has resources, set the status to 1 (active), otherwise to 2 (inactive) (https://github.com/portainer/portainer/issues/4422)\n\n        if (!$scope.stack.Status) {\n          $scope.stack.Status = data.resources && (isSwarm && data.resources.services.length || data.resources.containers.length) ? 1 : 2;\n        }\n\n        if (isSwarm && $scope.stack.Status === _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackStatus.Active) {\n          assignSwarmStackResources(data.resources, agentProxy);\n        }\n\n        $scope.state.originalContainerNames = (0,_portainer_helpers_stackHelper__WEBPACK_IMPORTED_MODULE_5__.extractContainerNames)($scope.stackFileContent);\n        $scope.state.yamlError = StackHelper.validateYAML($scope.stackFileContent, $scope.containerNames, $scope.state.originalContainerNames);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to retrieve stack details');\n      });\n    });\n  }\n\n  function retrieveSwarmStackResources(stackName, agentProxy) {\n    var stackFilter = {\n      label: ['com.docker.stack.namespace=' + stackName]\n    };\n    return $q.all({\n      services: ServiceService.services(stackFilter),\n      tasks: TaskService.tasks(stackFilter),\n      containers: agentProxy ? ContainerService.containers(1) : [],\n      nodes: NodeService.nodes()\n    });\n  }\n\n  function assignSwarmStackResources(resources, agentProxy) {\n    var services = resources.services;\n    var tasks = resources.tasks;\n\n    if (agentProxy) {\n      var containers = resources.containers;\n\n      for (var j = 0; j < tasks.length; j++) {\n        var task = tasks[j];\n        TaskHelper.associateContainerToTask(task, containers);\n      }\n    }\n\n    for (var i = 0; i < services.length; i++) {\n      var service = services[i];\n      ServiceHelper.associateTasksToService(service, tasks);\n    }\n\n    $scope.nodes = resources.nodes;\n    $scope.tasks = tasks;\n    $scope.services = services;\n  }\n\n  function retrieveComposeStackResources(stackName) {\n    var stackFilter = {\n      label: ['com.docker.compose.project=' + stackName]\n    };\n    return $q.all({\n      containers: ContainerService.containers(1, stackFilter)\n    });\n  }\n\n  function loadExternalStack(name) {\n    const stackType = $scope.stackType;\n\n    if (!stackType || stackType !== _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackType.DockerSwarm && stackType !== _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackType.DockerCompose) {\n      Notifications.error('失败', null, 'Invalid type URL parameter.');\n      return;\n    }\n\n    if (stackType === _react_docker_stacks_types__WEBPACK_IMPORTED_MODULE_4__.StackType.DockerSwarm) {\n      loadExternalSwarmStack(name);\n    }\n  }\n\n  function loadExternalSwarmStack(name) {\n    var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n    retrieveSwarmStackResources(name, agentProxy).then(function success(data) {\n      assignSwarmStackResources(data, agentProxy);\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve stack details');\n    });\n  }\n\n  this.uiCanExit = async function () {\n    if ($scope.stackFileContent && $scope.state.isEditorDirty) {\n      return ModalService.confirmWebEditorDiscard();\n    }\n  };\n\n  async function canManageStacks() {\n    return endpoint.SecuritySettings.allowStackManagementForRegularUsers || Authentication.isAdmin();\n  }\n\n  async function initView() {\n    // if the user is not an admin, and stack management is disabled for non admins, then take the user to the dashboard\n    $scope.createEnabled = await canManageStacks();\n\n    if (!$scope.createEnabled) {\n      $state.go('docker.dashboard');\n    }\n\n    var stackName = $transition$.params().name;\n    $scope.stackName = stackName;\n    const regular = $transition$.params().regular == 'true';\n    $scope.regular = regular;\n    var external = $transition$.params().external == 'true';\n    $scope.external = external;\n    const orphaned = $transition$.params().orphaned == 'true';\n    $scope.orphaned = orphaned;\n    const orphanedRunning = $transition$.params().orphanedRunning == 'true';\n    $scope.orphanedRunning = orphanedRunning;\n    $scope.stackType = parseInt($transition$.params().type, 10);\n\n    if (external || orphaned && orphanedRunning) {\n      loadExternalStack(stackName);\n    }\n\n    if (regular || orphaned) {\n      const stackId = $transition$.params().id;\n      loadStack(stackId);\n    }\n\n    $scope.composeSyntaxMaxVersion = endpoint.ComposeSyntaxMaxVersion;\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///84671\n");

}),

78566:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/portainer/helpers/endpointHelper */ 70589);\nStacksController.$inject = [\"$scope\", \"$state\", \"Notifications\", \"StackService\", \"ModalService\", \"Authentication\", \"endpoint\"];\n\nangular.module('portainer.app').controller('StacksController', StacksController);\n/* @ngInject */\n\nfunction StacksController($scope, $state, Notifications, StackService, ModalService, Authentication, endpoint) {\n  $scope.removeAction = function (selectedItems) {\n    ModalService.confirmDeletion('你想删除选定的堆栈吗？相关的服务也将被删除。', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      deleteSelectedStacks(selectedItems);\n    });\n  };\n\n  function deleteSelectedStacks(stacks) {\n    const endpointId = endpoint.Id;\n    let actionCount = stacks.length;\n    angular.forEach(stacks, function (stack) {\n      StackService.remove(stack, stack.External, endpointId).then(function success() {\n        Notifications.success('堆栈成功删除', stack.Name);\n        var index = $scope.stacks.indexOf(stack);\n        $scope.stacks.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, 'Unable to remove stack ' + stack.Name);\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  }\n\n  $scope.offlineMode = false;\n  $scope.createEnabled = false;\n  $scope.getStacks = getStacks;\n\n  function getStacks() {\n    const endpointMode = $scope.applicationState.endpoint.mode;\n    const endpointId = endpoint.Id;\n    const includeOrphanedStacks = Authentication.isAdmin();\n    StackService.stacks(true, endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER', endpointId, includeOrphanedStacks).then(function success(stacks) {\n      $scope.stacks = stacks;\n      $scope.offlineMode = (0,_portainer_helpers_endpointHelper__WEBPACK_IMPORTED_MODULE_0__.isOfflineEndpoint)(endpoint);\n    }).catch(function error(err) {\n      $scope.stacks = [];\n      Notifications.error('失败', err, 'Unable to retrieve stacks');\n    });\n  }\n\n  async function canManageStacks() {\n    return endpoint.SecuritySettings.allowStackManagementForRegularUsers || Authentication.isAdmin();\n  }\n\n  async function initView() {\n    // if the user is not an admin, and stack management is disabled for non admins, then take the user to the dashboard\n    $scope.createEnabled = await canManageStacks();\n\n    if (!$scope.createEnabled) {\n      $state.go('docker.dashboard');\n    }\n\n    getStacks();\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///78566\n");

}),

20125:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/remove */ 71204);\n/* harmony import */ var lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_remove__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);\n\nTagsController.$inject = [\"$scope\", \"$state\", \"$async\", \"TagService\", \"Notifications\"];\n\nangular__WEBPACK_IMPORTED_MODULE_1___default().module('portainer.app').controller('TagsController', TagsController);\n\nfunction TagsController($scope, $state, $async, TagService, Notifications) {\n  $scope.state = {\n    actionInProgress: false\n  };\n  $scope.formValues = {\n    Name: ''\n  };\n\n  $scope.checkNameValidity = function (form) {\n    var valid = true;\n\n    for (var i = 0; i < $scope.tags.length; i++) {\n      if ($scope.formValues.Name === $scope.tags[i].Name) {\n        valid = false;\n        break;\n      }\n    }\n\n    form.name.$setValidity('validName', valid);\n  };\n\n  $scope.removeAction = removeAction;\n\n  function removeAction(tags) {\n    return $async(removeActionAsync, tags);\n  }\n\n  async function removeActionAsync(tags) {\n    for (let tag of tags) {\n      try {\n        await TagService.deleteTag(tag.Id);\n        Notifications.success('Tag successfully removed', tag.Name);\n\n        lodash_es_remove__WEBPACK_IMPORTED_MODULE_0___default()($scope.tags, tag);\n      } catch (err) {\n        Notifications.error('失败', err, 'Unable to remove tag');\n      }\n    }\n\n    $state.reload();\n  }\n\n  $scope.createTag = function () {\n    var tagName = $scope.formValues.Name;\n    TagService.createTag(tagName).then(function success() {\n      Notifications.success('Tag successfully created', tagName);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to create tag');\n    });\n  };\n\n  function initView() {\n    TagService.tags().then(function success(data) {\n      $scope.tags = data;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, 'Unable to retrieve tags');\n      $scope.tags = [];\n    });\n  }\n\n  initView();\n}//# sourceURL=webpack-internal:///20125\n");

}),

76058:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es/find */ 51235);\n/* harmony import */ var lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_es_find__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/map */ 66539);\n/* harmony import */ var lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_es_map__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/filter */ 83432);\n/* harmony import */ var lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_es_filter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/accessControlForm/porAccessControlFormModel */ 19898);\n\n\n\n\n\nangular.module('portainer.app').controller('TemplatesController', ['$scope', '$q', '$state', '$anchorScroll', 'ContainerService', 'ImageService', 'NetworkService', 'TemplateService', 'TemplateHelper', 'VolumeService', 'Notifications', 'ResourceControlService', 'Authentication', 'FormValidator', 'StackService', 'endpoint', function ($scope, $q, $state, $anchorScroll, ContainerService, ImageService, NetworkService, TemplateService, TemplateHelper, VolumeService, Notifications, ResourceControlService, Authentication, FormValidator, StackService, endpoint) {\n  const DOCKER_STANDALONE = 'DOCKER_STANDALONE';\n  const DOCKER_SWARM_MODE = 'DOCKER_SWARM_MODE';\n  $scope.state = {\n    selectedTemplate: null,\n    showAdvancedOptions: false,\n    formValidationError: '',\n    actionInProgress: false\n  };\n  $scope.formValues = {\n    network: '',\n    name: '',\n    AccessControlData: new _components_accessControlForm_porAccessControlFormModel__WEBPACK_IMPORTED_MODULE_4__.AccessControlFormData()\n  };\n\n  $scope.addVolume = function () {\n    $scope.state.selectedTemplate.Volumes.push({\n      containerPath: '',\n      bind: '',\n      readonly: false,\n      type: 'auto'\n    });\n  };\n\n  $scope.removeVolume = function (index) {\n    $scope.state.selectedTemplate.Volumes.splice(index, 1);\n  };\n\n  $scope.addPortBinding = function () {\n    $scope.state.selectedTemplate.Ports.push({\n      hostPort: '',\n      containerPort: '',\n      protocol: 'tcp'\n    });\n  };\n\n  $scope.removePortBinding = function (index) {\n    $scope.state.selectedTemplate.Ports.splice(index, 1);\n  };\n\n  $scope.addExtraHost = function () {\n    $scope.state.selectedTemplate.Hosts.push('');\n  };\n\n  $scope.removeExtraHost = function (index) {\n    $scope.state.selectedTemplate.Hosts.splice(index, 1);\n  };\n\n  $scope.addLabel = function () {\n    $scope.state.selectedTemplate.Labels.push({\n      name: '',\n      value: ''\n    });\n  };\n\n  $scope.removeLabel = function (index) {\n    $scope.state.selectedTemplate.Labels.splice(index, 1);\n  };\n\n  function validateForm(accessControlData, isAdmin) {\n    $scope.state.formValidationError = '';\n    var error = '';\n    error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n    if (error) {\n      $scope.state.formValidationError = error;\n      return false;\n    }\n\n    return true;\n  }\n\n  function createContainerFromTemplate(template, userId, accessControlData) {\n    var templateConfiguration = createTemplateConfiguration(template);\n    var generatedVolumeCount = TemplateHelper.determineRequiredGeneratedVolumeCount(template.Volumes);\n    var generatedVolumeIds = [];\n    VolumeService.createXAutoGeneratedLocalVolumes(generatedVolumeCount).then(function success(data) {\n      angular.forEach(data, function (volume) {\n        var volumeId = volume.Id;\n        generatedVolumeIds.push(volumeId);\n      });\n      TemplateService.updateContainerConfigurationWithVolumes(templateConfiguration, template, data);\n      return ImageService.pullImage(template.RegistryModel, true);\n    }).then(function success() {\n      return ContainerService.createAndStartContainer(templateConfiguration);\n    }).then(function success(data) {\n      const resourceControl = data.Portainer.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl, generatedVolumeIds);\n    }).then(function success() {\n      Notifications.success('Success', '容器成功创建');\n      $state.go('docker.containers', {}, {\n        reload: true\n      });\n    }).catch(function error(err) {\n      Notifications.error('失败', err, err.msg);\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  function createComposeStackFromTemplate(template, userId, accessControlData) {\n    var stackName = $scope.formValues.name;\n\n    for (var i = 0; i < template.Env.length; i++) {\n      var envvar = template.Env[i];\n\n      if (envvar.preset) {\n        envvar.value = envvar.default;\n      }\n    }\n\n    var repositoryOptions = {\n      RepositoryURL: template.Repository.url,\n      ComposeFilePathInRepository: template.Repository.stackfile,\n      FromAppTemplate: true\n    };\n    const endpointId = +$state.params.endpointId;\n    StackService.createComposeStackFromGitRepository(stackName, repositoryOptions, template.Env, endpointId).then(function success(data) {\n      const resourceControl = data.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('Success', '堆栈成功部署');\n      $state.go('docker.stacks');\n    }).catch(function error(err) {\n      Notifications.error('部署错误', err);\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  function createStackFromTemplate(template, userId, accessControlData) {\n    var stackName = $scope.formValues.name;\n\n    var env = lodash_es_filter__WEBPACK_IMPORTED_MODULE_3___default()(lodash_es_map__WEBPACK_IMPORTED_MODULE_2___default()(template.Env, function transformEnvVar(envvar) {\n      return {\n        name: envvar.name,\n        value: envvar.preset || !envvar.value ? envvar.default : envvar.value\n      };\n    }), function removeUndefinedVars(envvar) {\n      return envvar.value && envvar.name;\n    });\n\n    var repositoryOptions = {\n      RepositoryURL: template.Repository.url,\n      ComposeFilePathInRepository: template.Repository.stackfile,\n      FromAppTemplate: true\n    };\n    const endpointId = +$state.params.endpointId;\n    StackService.createSwarmStackFromGitRepository(stackName, repositoryOptions, env, endpointId).then(function success(data) {\n      const resourceControl = data.ResourceControl;\n      return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n    }).then(function success() {\n      Notifications.success('Success', '堆栈成功部署');\n      $state.go('docker.stacks');\n    }).catch(function error(err) {\n      Notifications.error('Deployment error', err);\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  }\n\n  $scope.createTemplate = function () {\n    var userDetails = Authentication.getUserDetails();\n    var userId = userDetails.ID;\n    var accessControlData = $scope.formValues.AccessControlData;\n\n    if (!validateForm(accessControlData, $scope.isAdmin)) {\n      return;\n    }\n\n    var template = $scope.state.selectedTemplate;\n    $scope.state.actionInProgress = true;\n\n    if (template.Type === 2) {\n      createStackFromTemplate(template, userId, accessControlData);\n    } else if (template.Type === 3) {\n      createComposeStackFromTemplate(template, userId, accessControlData);\n    } else {\n      createContainerFromTemplate(template, userId, accessControlData);\n    }\n  };\n\n  $scope.unselectTemplate = function (template) {\n    template.Selected = false;\n    $scope.state.selectedTemplate = null;\n  };\n\n  $scope.selectTemplate = function (template) {\n    if ($scope.state.selectedTemplate) {\n      $scope.unselectTemplate($scope.state.selectedTemplate);\n    }\n\n    template.Selected = true;\n\n    if (template.Network) {\n      $scope.formValues.network = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()($scope.availableNetworks, function (o) {\n        return o.Name === template.Network;\n      });\n    } else {\n      $scope.formValues.network = lodash_es_find__WEBPACK_IMPORTED_MODULE_1___default()($scope.availableNetworks, function (o) {\n        return o.Name === 'bridge';\n      });\n    }\n\n    $scope.formValues.name = template.Name ? template.Name : '';\n    $scope.state.selectedTemplate = template;\n    $scope.state.deployable = isDeployable($scope.applicationState.endpoint, template.Type);\n    $anchorScroll('view-top');\n  };\n\n  function isDeployable(endpoint, templateType) {\n    let deployable = false;\n\n    switch (templateType) {\n      case 1:\n        deployable = endpoint.mode.provider === DOCKER_SWARM_MODE || endpoint.mode.provider === DOCKER_STANDALONE;\n        break;\n\n      case 2:\n        deployable = endpoint.mode.provider === DOCKER_SWARM_MODE;\n        break;\n\n      case 3:\n        deployable = endpoint.mode.provider === DOCKER_SWARM_MODE || endpoint.mode.provider === DOCKER_STANDALONE;\n        break;\n    }\n\n    return deployable;\n  }\n\n  function createTemplateConfiguration(template) {\n    var network = $scope.formValues.network;\n    var name = $scope.formValues.name;\n    return TemplateService.createTemplateConfiguration(template, name, network);\n  }\n\n  function initView() {\n    $scope.isAdmin = Authentication.isAdmin();\n    var endpointMode = $scope.applicationState.endpoint.mode;\n    var apiVersion = $scope.applicationState.endpoint.apiVersion;\n    const endpointId = +$state.params.endpointId;\n    $q.all({\n      templates: TemplateService.templates(endpointId),\n      volumes: VolumeService.getVolumes(),\n      networks: NetworkService.networks(endpointMode.provider === 'DOCKER_STANDALONE' || endpointMode.provider === 'DOCKER_SWARM_MODE', false, endpointMode.provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25)\n    }).then(function success(data) {\n      var templates = data.templates;\n      $scope.templates = templates;\n      $scope.availableVolumes = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(data.volumes.Volumes, [volume => volume.Name.toLowerCase()], ['asc']);\n      var networks = data.networks;\n      $scope.availableNetworks = networks;\n      $scope.allowBindMounts = endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n    }).catch(function error(err) {\n      $scope.templates = [];\n      Notifications.error('失败', err, '在应用程序初始化过程中发生了一个错误。');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///76058\n");

}),

21436:

(function() {

eval("angular.module('portainer.app').controller('UserController', ['$q', '$scope', '$state', '$transition$', 'UserService', 'ModalService', 'Notifications', 'SettingsService', 'Authentication', function ($q, $scope, $state, $transition$, UserService, ModalService, Notifications, SettingsService, Authentication) {\n  $scope.state = {\n    updatePasswordError: ''\n  };\n  $scope.formValues = {\n    username: '',\n    newPassword: '',\n    confirmPassword: '',\n    Administrator: false\n  };\n\n  $scope.handleAdministratorChange = function (checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.Administrator = checked;\n    });\n  };\n\n  $scope.deleteUser = function () {\n    ModalService.confirmDeletion('你想删除这个用户吗？这个用户将不能再登录到Portainer。', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      deleteUser();\n    });\n  };\n\n  $scope.updateUser = async function () {\n    const role = $scope.formValues.Administrator ? 1 : 2;\n    const oldUsername = $scope.user.Username;\n    const username = $scope.formValues.username;\n    let promise = Promise.resolve(true);\n\n    if (username != oldUsername) {\n      promise = new Promise(resolve => ModalService.confirmWarn({\n        title: '你确定吗？',\n        message: `你确定你要把用户 ${oldUsername} 重命名为 ${username} 吗?`,\n        buttons: {\n          confirm: {\n            label: 'Update',\n            className: 'btn-primary'\n          }\n        },\n        callback: resolve\n      }));\n    }\n\n    const confirmed = await promise;\n\n    if (!confirmed) {\n      return;\n    }\n\n    UserService.updateUser($scope.user.Id, {\n      role,\n      username\n    }).then(function success() {\n      Notifications.success('Success', '用户成功更新');\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法更新用户权限');\n    });\n  };\n\n  $scope.updatePassword = async function () {\n    const isCurrentUser = Authentication.getUserDetails().ID === $scope.user.Id;\n    const confirmed = !isCurrentUser || (await ModalService.confirmChangePassword());\n\n    if (!confirmed) {\n      return;\n    }\n\n    UserService.updateUser($scope.user.Id, {\n      password: $scope.formValues.newPassword\n    }).then(function success() {\n      Notifications.success('Success', '密码成功更新');\n\n      if (isCurrentUser) {\n        $state.go('portainer.logout');\n      } else {\n        $state.reload();\n      }\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法更新用户密码');\n    });\n  };\n\n  function deleteUser() {\n    UserService.deleteUser($scope.user.Id).then(function success() {\n      Notifications.success('用户成功删除', $scope.user.Username);\n      $state.go('portainer.users');\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法删除用户');\n    });\n  }\n\n  $scope.isSubmitEnabled = isSubmitEnabled;\n\n  function isSubmitEnabled() {\n    const {\n      user,\n      formValues\n    } = $scope;\n    return user && (user.Username !== formValues.username || formValues.Administrator && user.Role !== 1 || !formValues.Administrator && user.Role === 1);\n  }\n\n  $scope.isDeleteDisabled = isDeleteDisabled;\n\n  function isDeleteDisabled() {\n    const {\n      user\n    } = $scope;\n    return user && user.Id === 1;\n  }\n\n  function initView() {\n    $scope.isAdmin = Authentication.isAdmin();\n    $q.all({\n      user: UserService.user($transition$.params().id),\n      settings: SettingsService.publicSettings()\n    }).then(function success(data) {\n      var user = data.user;\n      $scope.user = user;\n      $scope.formValues.Administrator = user.Role === 1;\n      $scope.formValues.username = user.Username;\n      $scope.AuthenticationMethod = data.settings.AuthenticationMethod;\n      $scope.requiredPasswordLength = data.settings.RequiredPasswordLength;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到用户信息');\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///21436\n");

}),

79614:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/orderBy */ 16222);\n/* harmony import */ var lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0__);\n\nangular.module('portainer.app').controller('UsersController', ['$q', '$scope', '$state', 'UserService', 'TeamService', 'TeamMembershipService', 'ModalService', 'Notifications', 'Authentication', 'SettingsService', function ($q, $scope, $state, UserService, TeamService, TeamMembershipService, ModalService, Notifications, Authentication, SettingsService) {\n  $scope.state = {\n    userCreationError: '',\n    validUsername: false,\n    actionInProgress: false\n  };\n  $scope.formValues = {\n    Username: '',\n    Password: '',\n    ConfirmPassword: '',\n    Administrator: false,\n    TeamIds: []\n  };\n\n  $scope.handleAdministratorChange = function (checked) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.Administrator = checked;\n    });\n  };\n\n  $scope.onChangeTeamIds = function (teamIds) {\n    return $scope.$evalAsync(() => {\n      $scope.formValues.TeamIds = teamIds;\n    });\n  };\n\n  $scope.checkUsernameValidity = function () {\n    var valid = true;\n\n    for (var i = 0; i < $scope.users.length; i++) {\n      if ($scope.formValues.Username.toLocaleLowerCase() === $scope.users[i].Username.toLocaleLowerCase()) {\n        valid = false;\n        break;\n      }\n    }\n\n    $scope.state.validUsername = valid;\n    $scope.state.userCreationError = valid ? '' : '用户名已被占用';\n  };\n\n  $scope.addUser = function () {\n    $scope.state.actionInProgress = true;\n    $scope.state.userCreationError = '';\n    var username = $scope.formValues.Username;\n    var password = $scope.formValues.Password;\n    var role = $scope.formValues.Administrator ? 1 : 2;\n    UserService.createUser(username, password, role, $scope.formValues.TeamIds).then(function success() {\n      Notifications.success('成功创建用户', username);\n      $state.reload();\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法创建用户');\n    }).finally(function final() {\n      $scope.state.actionInProgress = false;\n    });\n  };\n\n  function deleteSelectedUsers(selectedItems) {\n    var actionCount = selectedItems.length;\n    angular.forEach(selectedItems, function (user) {\n      UserService.deleteUser(user.Id).then(function success() {\n        Notifications.success('成功删除用户', user.Username);\n        var index = $scope.users.indexOf(user);\n        $scope.users.splice(index, 1);\n      }).catch(function error(err) {\n        Notifications.error('失败', err, '无法删除用户');\n      }).finally(function final() {\n        --actionCount;\n\n        if (actionCount === 0) {\n          $state.reload();\n        }\n      });\n    });\n  }\n\n  $scope.removeAction = function (selectedItems) {\n    ModalService.confirmDeletion('你想删除所选的用户吗？他们将不能再登录到Portainer。', function onConfirm(confirmed) {\n      if (!confirmed) {\n        return;\n      }\n\n      deleteSelectedUsers(selectedItems);\n    });\n  };\n\n  function assignTeamLeaders(users, memberships) {\n    for (var i = 0; i < users.length; i++) {\n      var user = users[i];\n      user.isTeamLeader = false;\n\n      for (var j = 0; j < memberships.length; j++) {\n        var membership = memberships[j];\n\n        if (user.Id === membership.UserId && membership.Role === 1) {\n          user.isTeamLeader = true;\n          user.RoleName = 'team leader';\n          break;\n        }\n      }\n    }\n  }\n\n  function initView() {\n    var userDetails = Authentication.getUserDetails();\n    var isAdmin = Authentication.isAdmin();\n    $scope.isAdmin = isAdmin;\n    $q.all({\n      users: UserService.users(true),\n      teams: isAdmin ? TeamService.teams() : UserService.userLeadingTeams(userDetails.ID),\n      memberships: TeamMembershipService.memberships(),\n      settings: SettingsService.publicSettings()\n    }).then(function success(data) {\n      var users = data.users;\n      assignTeamLeaders(users, data.memberships);\n      $scope.users = users;\n      $scope.teams = lodash_es_orderBy__WEBPACK_IMPORTED_MODULE_0___default()(data.teams, 'Name', 'asc');\n      $scope.AuthenticationMethod = data.settings.AuthenticationMethod;\n      $scope.requiredPasswordLength = data.settings.RequiredPasswordLength;\n    }).catch(function error(err) {\n      Notifications.error('失败', err, '无法检索到用户和团队');\n      $scope.users = [];\n      $scope.teams = [];\n    });\n  }\n\n  initView();\n}]);//# sourceURL=webpack-internal:///79614\n");

}),

48780:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDocURL\": function() { return /* binding */ getDocURL; }\n/* harmony export */ });\nconst docURLs = [{\n  desc: '首页',\n  docURL: 'https://docs.portainer.io/user/home',\n  locationRegex: /#!\\/home/,\n  exmaples: ['#!/home']\n}, {\n  desc: 'Docker or Swarm / 仪表板',\n  docURL: 'https://docs.portainer.io/user/docker/dashboard',\n  locationRegex: /#!\\/\\d+\\/docker\\/dashboard/,\n  exmaples: ['#!/10/docker/dashboard']\n}, {\n  desc: 'Docker or Swarm / 自定义模板',\n  docURL: 'https://docs.portainer.io/user/docker/templates/custom',\n  locationRegex: /#!\\/\\d+\\/docker\\/templates\\/custom/,\n  examples: ['#!/10/docker/templates/custom', '#!/10/docker/templates/custom/new?fileContent=&type=', '#!/10/docker/templates/custom/1']\n}, {\n  desc: 'Docker or Swarm / 应用程序模板',\n  docURL: 'https://docs.portainer.io/user/docker/templates',\n  locationRegex: /#!\\/\\d+\\/docker\\/templates/,\n  examples: ['#!/10/docker/templates']\n}, {\n  desc: 'Docker or Swarm / 堆栈',\n  docURL: 'https://docs.portainer.io/user/docker/stacks',\n  locationRegex: /#!\\/\\d+\\/docker\\/stacks/,\n  examples: ['#!/10/docker/stacks', '#!/10/docker/stacks/newstack', '#!/10/docker/stacks/s4?id=3&type=1&regular=true&external=false&orphaned=false']\n}, {\n  desc: 'Swarm / 服务',\n  docURL: 'https://docs.portainer.io/user/docker/services',\n  locationRegex: /#!\\/\\d+\\/docker\\/(services|tasks)/,\n  examples: ['#!/10/docker/services', '#!/10/docker/services/zqp46vzoz5nnf39m6c518nlt8', '#!/10/docker/services/zqp46vzoz5nnf39m6c518nlt8/logs', '#!/10/docker/tasks/yyll0peo7ack4uaw2wom3nxso', '#!/10/docker/tasks/yyll0peo7ack4uaw2wom3nxso/logs']\n}, {\n  desc: 'Docker or Swarm / 容器',\n  docURL: 'https://docs.portainer.io/user/docker/containers',\n  locationRegex: /#!\\/\\d+\\/docker\\/containers/,\n  examples: ['#!/10/docker/containers', '#!/10/docker/containers/new', '#!/10/docker/containers/new?from=49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1', '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1', '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/logs', '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/inspect', '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/stats']\n}, {\n  desc: 'Docker or Swarm / 镜像',\n  docURL: 'https://docs.portainer.io/user/docker/images',\n  locationRegex: /#!\\/\\d+\\/docker\\/images/,\n  examples: ['#!/10/docker/images', '#!/10/docker/images/build', '#!/10/docker/images/sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412']\n}, {\n  desc: 'Docker or Swarm / 网络',\n  docURL: 'https://docs.portainer.io/user/docker/networks',\n  locationRegex: /#!\\/\\d+\\/docker\\/networks/,\n  examples: ['#!/10/docker/networks', '#!/10/docker/networks/new', '#!/10/docker/networks/db5732ff4a2c6df70a18530dba6abd8625f8e94c5fc5daabbcbab07377ee1044']\n}, {\n  desc: 'Docker or Swarm / 存储卷',\n  docURL: 'https://docs.portainer.io/user/docker/volumes',\n  locationRegex: /#!\\/\\d+\\/docker\\/volumes/,\n  examples: ['#!/10/docker/volumes', '#!/10/docker/volumes/new', '#!/10/docker/volumes/153b46162f5bab9a7c9d2c8e1675115fcedd4c0ccdf5834159400750fa6b794c']\n}, {\n  desc: 'Swarm / 配置',\n  docURL: 'https://docs.portainer.io/user/docker/configs',\n  locationRegex: /#!\\/\\d+\\/docker\\/configs/,\n  examples: ['#!/10/docker/configs', '#!/10/docker/configs/new', '#!/10/docker/configs/azd0xc805l298jrgnadbnnzyv']\n}, {\n  desc: 'Swarm / 机密',\n  docURL: 'https://docs.portainer.io/user/docker/secrets',\n  locationRegex: /#!\\/\\d+\\/docker\\/secrets/,\n  examples: ['#!/10/docker/secrets', '#!/10/docker/secrets/new', '#!/10/docker/secrets/tsoeeh7ln7g54g5qkk67eg4xe']\n}, {\n  desc: 'Docker or Swarm / Swarm / 群集可视化工具',\n  docURL: 'https://docs.portainer.io/user/docker/swarm/cluster-visualizer',\n  locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/visualizer/,\n  examples: ['#!/10/docker/swarm/visualizer']\n}, {\n  desc: 'Docker or Swarm / Swarm / 设置',\n  docURL: 'https://docs.portainer.io/user/docker/swarm/setup',\n  locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/feat-config/,\n  examples: ['#!/10/docker/feat-config']\n}, {\n  desc: 'Swarm / Swarm / 注册表',\n  docURL: 'https://docs.portainer.io/user/docker/swarm/registries',\n  locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/registries/,\n  examples: ['#!/10/docker/registries']\n}, {\n  desc: 'Swarm / Swarm',\n  docURL: 'https://docs.portainer.io/user/docker/swarm',\n  locationRegex: /#!\\/\\d+\\/docker\\/(swarm|nodes)/,\n  examples: ['#!/10/docker/swarm', '#!/10/docker/nodes/nd694yepzgms1j8y7kv3lpcc3']\n}, {\n  desc: 'Docker / 事件',\n  docURL: 'https://docs.portainer.io/user/docker/events',\n  locationRegex: /#!\\/\\d+\\/docker\\/events/,\n  examples: ['#!/10/docker/events']\n}, {\n  desc: 'Docker / 主机 / 注册表',\n  docURL: 'https://docs.portainer.io/user/docker/host/registries',\n  locationRegex: /#!\\/\\d+\\/docker\\/host\\/registries/,\n  examples: ['#!/10/docker/registries']\n}, {\n  desc: 'Docker / 主机 / 设置',\n  docURL: 'https://docs.portainer.io/user/docker/host/setup',\n  locationRegex: /#!\\/\\d+\\/docker\\/host\\/feat-config/,\n  examples: ['#!/10/docker/feat-config']\n}, {\n  desc: 'Docker / 主机',\n  docURL: 'https://docs.portainer.io/user/docker/host',\n  locationRegex: /#!\\/\\d+\\/docker\\/host/,\n  examples: ['#!/10/docker/host']\n}, {\n  desc: 'Kubernetes / 仪表板',\n  docURL: 'https://docs.portainer.io/user/kubernetes/dashboard',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/dashboard/,\n  examples: ['#!/1/kubernetes/dashboard']\n}, {\n  desc: 'Kubernetes / 自定义模板',\n  docURL: 'https://docs.portainer.io/user/kubernetes/templates',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/templates\\/custom/,\n  examples: ['#!/1/kubernetes/templates/custom', '#!/1/kubernetes/templates/custom/new?fileContent=']\n}, {\n  desc: 'Kubernetes / Namespaces',\n  docURL: 'https://docs.portainer.io/user/kubernetes/namespaces',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/pools/,\n  examples: ['#!/1/kubernetes/pools', '#!/1/kubernetes/pools/new', '#!/1/kubernetes/deploy?templateId=', '#!/1/kubernetes/pools/default']\n}, {\n  desc: 'Kubernetes / Helm',\n  docURL: 'https://docs.portainer.io/user/kubernetes/helm',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/templates\\/helm/,\n  examples: ['#!/1/kubernetes/templates/helm']\n}, {\n  desc: 'Kubernetes / Applications',\n  docURL: 'https://docs.portainer.io/user/kubernetes/applications',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/applications/,\n  examples: ['#!/1/kubernetes/applications', '#!/1/kubernetes/applications/new', '#!/1/kubernetes/deploy?templateId=', '#!/1/kubernetes/applications/metallb-system/controller']\n}, {\n  desc: 'Kubernetes / Ingresses',\n  docURL: 'https://docs.portainer.io/user/kubernetes/ingresses',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/ingresses/,\n  examples: ['#!/1/kubernetes/ingresses']\n}, {\n  desc: 'Kubernetes / ConfigMaps & Secrets',\n  docURL: 'https://docs.portainer.io/user/kubernetes/configurations',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/configurations/,\n  examples: ['#!/1/kubernetes/configurations', '#!/1/kubernetes/configurations/new', '#!/1/kubernetes/configurations/metallb-system/config']\n}, {\n  desc: 'Kubernetes / 存储卷',\n  docURL: 'https://docs.portainer.io/user/kubernetes/volumes',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/volumes/,\n  examples: ['#!/1/kubernetes/volumes']\n}, {\n  desc: 'Kubernetes / Cluster / Set up',\n  docURL: 'https://docs.portainer.io/user/kubernetes/cluster/setup',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster\\/configure/,\n  examples: ['#!/1/kubernetes/cluster/configure']\n}, {\n  desc: 'Kubernetes / Cluster / Security constraints',\n  docURL: 'https://docs.portainer.io/user/kubernetes/cluster/security',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster\\/securityConstraint/,\n  examples: ['#!/1/kubernetes/cluster/securityConstraint']\n}, {\n  desc: 'Kubernetes / Cluster',\n  docURL: 'https://docs.portainer.io/user/kubernetes/cluster',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster/,\n  examples: ['#!/1/kubernetes/cluster', '#!/1/kubernetes/cluster/ip-10-138-11-102', '#!/1/kubernetes/cluster/ip-10-138-11-102/stats']\n}, {\n  desc: 'Kubernetes / Cluster / Registries',\n  docURL: 'https://docs.portainer.io/user/kubernetes/cluster/registries',\n  locationRegex: /#!\\/\\d+\\/kubernetes\\/registries/,\n  examples: ['#!/1/kubernetes/registries']\n}, {\n  desc: 'Azure ACI / 仪表板',\n  docURL: 'https://docs.portainer.io/user/aci/dashboard',\n  locationRegex: /#!\\/\\d+\\/azure\\/dashboard/,\n  examples: ['#!/26/azure/dashboard']\n}, {\n  desc: 'Azure ACI / Container instances',\n  docURL: 'https://docs.portainer.io/user/aci/containers',\n  locationRegex: /#!\\/\\d+\\/azure\\/containerinstances/,\n  examples: ['#!/26/azure/containerinstances']\n}, {\n  desc: 'Edge Compute / Edge Devices',\n  docURL: 'https://docs.portainer.io/user/edge/devices',\n  locationRegex: /#!\\/edge\\/devices/,\n  examples: ['#!/edge/devices', '#!/edge/devices/waiting-room']\n}, {\n  desc: 'Edge Compute / Edge Groups',\n  docURL: 'https://docs.portainer.io/user/edge/groups',\n  locationRegex: /#!\\/edge\\/groups/,\n  examples: ['#!/edge/groups', '#!/edge/groups/new']\n}, {\n  desc: 'Edge Compute / Edge Stacks ',\n  docURL: 'https://docs.portainer.io/user/edge/stacks',\n  locationRegex: /#!\\/edge\\/stacks/,\n  examples: ['#!/edge/stacks', '#!/edge/stacks/new']\n}, {\n  desc: 'Edge Compute / Edge Jobs',\n  docURL: 'https://docs.portainer.io/user/edge/jobs',\n  locationRegex: /#!\\/edge\\/jobs/,\n  examples: ['#!/edge/jobs', '#!/edge/jobs/new']\n}, {\n  desc: 'Nomad / Dashboard',\n  docURL: 'https://docs.portainer.io/user/nomad/dashboard',\n  locationRegex: /#!\\/\\d+\\/nomad\\/dashboard/,\n  examples: ['#!/2/nomad/dashboard']\n}, {\n  desc: 'Nomad / Nomad Jobs',\n  docURL: 'https://docs.portainer.io/user/nomad/jobs',\n  locationRegex: /#!\\/\\d+\\/nomad\\/jobs/,\n  examples: ['#!/2/nomad/jobs', '#!/2/nomad/jobs/portainer-agent/tasks/portainer-agent/allocations/acdbf08e-34af-9b8a-cc84-7dc202bf1fcf/events?namespace=default', '#!/2/nomad/jobs/portainer-agent/tasks/portainer-agent/allocations/acdbf08e-34af-9b8a-cc84-7dc202bf1fcf/logs?namespace=default']\n}, {\n  desc: '帐户设置',\n  docURL: 'https://docs.portainer.io/user/account-settings',\n  locationRegex: /#!\\/account/,\n  examples: ['#!/account', '#!/account/tokens/new']\n}, {\n  desc: 'Settings / 用户',\n  docURL: 'https://docs.portainer.io/admin/users',\n  locationRegex: /#!\\/users/,\n  examples: ['#!/users', '#!/users/1']\n}, {\n  desc: 'Settings / 用户 / 团队',\n  docURL: 'https://docs.portainer.io/admin/users/teams',\n  locationRegex: /#!\\/teams/,\n  examples: ['#!/teams', '#!/teams/1']\n}, {\n  desc: 'Settings / 用户 / 角色',\n  docURL: 'https://docs.portainer.io/admin/users/roles',\n  locationRegex: /#!\\/roles/,\n  examples: ['#!/roles']\n}, {\n  desc: 'Settings / 环境',\n  docURL: 'https://docs.portainer.io/admin/environments',\n  locationRegex: /#!\\/endpoints/,\n  examples: ['#!/endpoints', '#!/endpoints/10', '#!/endpoints/10/access']\n}, {\n  desc: 'Settings / 环境 / 群组',\n  docURL: 'https://docs.portainer.io/admin/environments/groups',\n  locationRegex: /#!\\/groups/,\n  examples: ['#!/groups', '#!/groups/new', '#!/groups/3', '#!/groups/3/access']\n}, {\n  desc: 'Settings / 环境 / 标记',\n  docURL: 'https://docs.portainer.io/admin/environments/tags',\n  locationRegex: /#!\\/tags/,\n  examples: ['#!/tags']\n}, {\n  desc: 'Settings / 注册表',\n  docURL: 'https://docs.portainer.io/admin/registries',\n  locationRegex: /#!\\/registries/,\n  examples: ['#!/registries', '#!/registries/new', '#!/registries/1', '#!/registries/1/repositories', '#!/registries/1/configure', '#!/registries/5/portainer.demo~2Fportainerregistrytesting~2Falpine', '#!/registries/5/portainer.demo~2Fportainerregistrytesting~2Falpine/jfadelhaye']\n}, {\n  desc: 'Settings / Licenses',\n  docURL: 'https://docs.portainer.io/admin/licenses',\n  locationRegex: /#!\\/licenses/,\n  examples: ['#!/licenses', '#!/licenses/licenses/new']\n}, {\n  desc: 'Settings / 身份验证日志',\n  docURL: 'https://docs.portainer.io/admin/logs',\n  locationRegex: /#!\\/auth-logs/,\n  examples: ['#!/auth-logs']\n}, {\n  desc: 'Settings / 身份验证日志 / 活动日志',\n  docURL: 'https://docs.portainer.io/admin/logs/activity',\n  locationRegex: /#!\\/activity-logs/,\n  examples: ['#!/activity-logs']\n}, {\n  desc: 'Settings / 设置 / 身份验证',\n  docURL: 'https://docs.portainer.io/admin/settings/authentication',\n  locationRegex: /#!\\/settings\\/auth/,\n  examples: ['#!/settings/auth']\n}, {\n  desc: 'Settings / 设置 / 通知',\n  docURL: 'https://docs.portainer.io/admin/notifications',\n  locationRegex: /#!\\/notifications/,\n  examples: ['#!/notifications']\n}, {\n  desc: 'Settings / 设置 / 云设置',\n  docURL: 'https://docs.portainer.io/admin/settings/cloud',\n  locationRegex: /#!\\/settings\\/cloud/,\n  examples: ['#!/settings/cloud', '#!/settings/cloud/credentials/new', '#!/settings/cloud/credentials/1']\n}, {\n  desc: 'Settings / 设置 / 边缘计算',\n  docURL: 'https://docs.portainer.io/admin/settings/edge',\n  locationRegex: /#!\\/settings\\/edge/,\n  examples: ['#!/settings/edge']\n}, {\n  desc: 'Settings / 设置',\n  docURL: 'https://docs.portainer.io/admin/settings',\n  locationRegex: /#!\\/settings/,\n  examples: ['#!/settings']\n}];\nconst DEFAULT_DOC_URL = 'https://docs.portainer.io';\nfunction getDocURL() {\n  const hash = window.location.hash;\n\n  for (let i = 0; i < docURLs.length; i += 1) {\n    const docURL = docURLs[i];\n\n    if (hash.match(docURL.locationRegex)) {\n      return docURL.docURL;\n    }\n  }\n\n  return DEFAULT_DOC_URL;\n}//# sourceURL=webpack-internal:///48780\n");

}),

68724:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ setupTests; }\n/* harmony export */ });\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime */ 40958);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction setupTests() {// pass\n}//# sourceURL=webpack-internal:///68724\n");

}),

25518:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ 29274);\n/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ 4396);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var angular_sanitize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular-sanitize */ 77906);\n/* harmony import */ var angular_sanitize__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular_sanitize__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var ng_file_upload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ng-file-upload */ 65400);\n/* harmony import */ var ng_file_upload__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ng_file_upload__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var angular_messages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! angular-messages */ 59250);\n/* harmony import */ var angular_messages__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(angular_messages__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var angular_resource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! angular-resource */ 65927);\n/* harmony import */ var angular_resource__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(angular_resource__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var angular_utils_pagination__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! angular-utils-pagination */ 22479);\n/* harmony import */ var angular_utils_pagination__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(angular_utils_pagination__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var angular_local_storage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! angular-local-storage */ 60685);\n/* harmony import */ var angular_local_storage__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(angular_local_storage__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var angular_jwt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! angular-jwt */ 99639);\n/* harmony import */ var angular_jwt__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(angular_jwt__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var angular_json_tree__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! angular-json-tree */ 16249);\n/* harmony import */ var angular_json_tree__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(angular_json_tree__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var angular_loading_bar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! angular-loading-bar */ 40635);\n/* harmony import */ var angular_loading_bar__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(angular_loading_bar__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var angular_clipboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! angular-clipboard */ 42536);\n/* harmony import */ var angular_clipboard__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(angular_clipboard__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var angular_file_saver__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! angular-file-saver */ 66520);\n/* harmony import */ var angular_file_saver__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(angular_file_saver__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var angularjs_scroll_glue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! angularjs-scroll-glue */ 54879);\n/* harmony import */ var angularjs_scroll_glue__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(angularjs_scroll_glue__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var angularjs_slider__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! angularjs-slider */ 85639);\n/* harmony import */ var angularjs_slider__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(angularjs_slider__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var bootstrap_dist_js_bootstrap_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! bootstrap/dist/js/bootstrap.js */ 78421);\n/* harmony import */ var bootstrap_dist_js_bootstrap_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(bootstrap_dist_js_bootstrap_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var js_yaml_dist_js_yaml_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! js-yaml/dist/js-yaml.js */ 88678);\n/* harmony import */ var js_yaml_dist_js_yaml_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(js_yaml_dist_js_yaml_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var angular_ui_bootstrap__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! angular-ui-bootstrap */ 85774);\n/* harmony import */ var angular_ui_bootstrap__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(angular_ui_bootstrap__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var angular_moment_picker__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! angular-moment-picker */ 8149);\n/* harmony import */ var angular_moment_picker__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(angular_moment_picker__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var angulartics_dist_angulartics_min_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! angulartics/dist/angulartics.min.js */ 80134);\n/* harmony import */ var angulartics_dist_angulartics_min_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(angulartics_dist_angulartics_min_js__WEBPACK_IMPORTED_MODULE_19__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwindow.angular = (angular__WEBPACK_IMPORTED_MODULE_0___default());//# sourceURL=webpack-internal:///25518\n");

}),

95764:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///95764\n");

}),

99278:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///99278\n");

}),

45738:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///45738\n");

}),

80338:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///80338\n");

}),

90515:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///90515\n");

}),

96326:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///96326\n");

}),

46867:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///46867\n");

}),

12805:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///12805\n");

}),

22997:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///22997\n");

}),

73353:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///73353\n");

}),

21110:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"kvmTip\":\"app-edge-EdgeDevices-EdgeDevicesView-EdgeDevicesDatatable-EdgeDevicesDatatable-module__kvm-tip\"});//# sourceURL=webpack-internal:///21110\n");

}),

8098:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///8098\n");

}),

57140:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///57140\n");

}),

84549:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///84549\n");

}),

50193:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///50193\n");

}),

33099:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///33099\n");

}),

34694:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///34694\n");

}),

554:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///554\n");

}),

34040:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///34040\n");

}),

3103:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///3103\n");

}),

3588:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///3588\n");

}),

89122:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///89122\n");

}),

7708:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///7708\n");

}),

7340:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///7340\n");

}),

37304:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///37304\n");

}),

22835:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///22835\n");

}),

95082:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///95082\n");

}),

27840:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///27840\n");

}),

7949:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-portainer-home-EdgeLoadingSpinner-module__root\"});//# sourceURL=webpack-internal:///7949\n");

}),

21001:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-portainer-home-EnvironmentList-EnvironmentItem-EnvironmentItem-module__root\",\"wrapperButton\":\"app-portainer-home-EnvironmentList-EnvironmentItem-EnvironmentItem-module__wrapperButton\",\"item\":\"app-portainer-home-EnvironmentList-EnvironmentItem-EnvironmentItem-module__item\",\"editButton\":\"app-portainer-home-EnvironmentList-EnvironmentItem-EnvironmentItem-module__edit-button\"});//# sourceURL=webpack-internal:///21001\n");

}),

67357:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"actionBar\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__actionBar\",\"description\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__description\",\"refreshEnvironmentsButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__refresh-environments-button\",\"filterContainer\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__filter-container\",\"filterLeft\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__filter-left\",\"filterRight\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__filter-right\",\"filterButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__filter-button\",\"clearButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__clear-button\",\"actionButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__action-button\",\"refreshButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__refresh-button\",\"kubeconfigButton\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__kubeconfig-button\",\"filterSearchbar\":\"app-portainer-home-EnvironmentList-EnvironmentList-module__filterSearchbar\"});//# sourceURL=webpack-internal:///67357\n");

}),

76211:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"checkbox\":\"app-portainer-home-EnvironmentList-KubeconfigButton-KubeconfigPrompt-module__checkbox\",\"dialog\":\"app-portainer-home-EnvironmentList-KubeconfigButton-KubeconfigPrompt-module__dialog\"});//# sourceURL=webpack-internal:///76211\n");

}),

80030:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///80030\n");

}),

69661:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///69661\n");

}),

36466:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///36466\n");

}),

40384:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///40384\n");

}),

21029:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///21029\n");

}),

93570:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///93570\n");

}),

82794:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///82794\n");

}),

9913:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///9913\n");

}),

13104:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"item\":\"app-react-azure-container-instances-CreateView-PortsMappingField-module__item\",\"inputs\":\"app-react-azure-container-instances-CreateView-PortsMappingField-module__inputs\",\"errors\":\"app-react-azure-container-instances-CreateView-PortsMappingField-module__errors\"});//# sourceURL=webpack-internal:///13104\n");

}),

88177:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///88177\n");

}),

74316:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///74316\n");

}),

15251:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-BoxSelector-BoxSelector-module__root\"});//# sourceURL=webpack-internal:///15251\n");

}),

35466:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///35466\n");

}),

21764:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"code\":\"app-react-components-Code-Code-module__code\",\"root\":\"app-react-components-Code-Code-module__root\",\"copyButton\":\"app-react-components-Code-Code-module__copy-button\"});//# sourceURL=webpack-internal:///21764\n");

}),

55306:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///55306\n");

}),

69278:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"parent\":\"app-react-components-NavTabs-NavTabs-module__parent\"});//# sourceURL=webpack-internal:///69278\n");

}),

23228:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///23228\n");

}),

62463:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"header\":\"app-react-components-PageHeader-HeaderContainer-module__header\",\"meta\":\"app-react-components-PageHeader-HeaderContainer-module__meta\",\"login\":\"app-react-components-PageHeader-HeaderContainer-module__login\",\"user\":\"app-react-components-PageHeader-HeaderContainer-module__user\",\"item\":\"app-react-components-PageHeader-HeaderContainer-module__item\",\"dropdownMenu\":\"app-react-components-PageHeader-HeaderContainer-module__dropdown-menu\",\"dropdownHeader\":\"app-react-components-PageHeader-HeaderContainer-module__dropdown-header\",\"link\":\"app-react-components-PageHeader-HeaderContainer-module__link\",\"loadingbarPlaceholder\":\"app-react-components-PageHeader-HeaderContainer-module__loadingbar-placeholder\",\"loadingBar\":\"app-react-components-PageHeader-HeaderContainer-module__loading-bar\",\"bar\":\"app-react-components-PageHeader-HeaderContainer-module__bar\"});//# sourceURL=webpack-internal:///62463\n");

}),

32279:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"menuButton\":\"app-react-components-PageHeader-HeaderTitle-module__menu-button\",\"menuIcon\":\"app-react-components-PageHeader-HeaderTitle-module__menu-icon\",\"menuList\":\"app-react-components-PageHeader-HeaderTitle-module__menu-list\",\"menuLink\":\"app-react-components-PageHeader-HeaderTitle-module__menu-link\",\"arrowDown\":\"app-react-components-PageHeader-HeaderTitle-module__arrow-down\"});//# sourceURL=webpack-internal:///32279\n");

}),

38163:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-PageHeader-NotificationsMenu-module__root\",\"badge\":\"app-react-components-PageHeader-NotificationsMenu-module__badge\",\"notificationContainer\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-container\",\"itemLast\":\"app-react-components-PageHeader-NotificationsMenu-module__item-last\",\"notifications\":\"app-react-components-PageHeader-NotificationsMenu-module__notifications\",\"notification\":\"app-react-components-PageHeader-NotificationsMenu-module__notification\",\"container\":\"app-react-components-PageHeader-NotificationsMenu-module__container\",\"notificationIcon\":\"app-react-components-PageHeader-NotificationsMenu-module__notificationIcon\",\"notificationBody\":\"app-react-components-PageHeader-NotificationsMenu-module__notificationBody\",\"deleteButton\":\"app-react-components-PageHeader-NotificationsMenu-module__deleteButton\",\"notificationDetails\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-details\",\"notificationTitle\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-title\",\"notificationLink\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-link\"});//# sourceURL=webpack-internal:///38163\n");

}),

31246:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"reloadButton\":\"app-react-components-PageHeader-PageHeader-module__reloadButton\"});//# sourceURL=webpack-internal:///31246\n");

}),

22476:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///22476\n");

}),

63012:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"stepperWrapper\":\"app-react-components-Stepper-Stepper-module__stepper-wrapper\",\"stepWrapper\":\"app-react-components-Stepper-Stepper-module__step-wrapper\",\"step\":\"app-react-components-Stepper-Stepper-module__step\",\"stepName\":\"app-react-components-Stepper-Stepper-module__step-name\",\"active\":\"app-react-components-Stepper-Stepper-module__active\",\"stepCounter\":\"app-react-components-Stepper-Stepper-module__step-counter\",\"completed\":\"app-react-components-Stepper-Stepper-module__completed\"});//# sourceURL=webpack-internal:///63012\n");

}),

76464:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"removeTagBtn\":\"app-react-components-TagSelector-TagSelector-module__remove-tag-btn\"});//# sourceURL=webpack-internal:///76464\n");

}),

88049:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"tooltipWrapper\":\"app-react-components-Tip-Tooltip-Tooltip-module__tooltip-wrapper\",\"tooltip\":\"app-react-components-Tip-Tooltip-Tooltip-module__tooltip\",\"icon\":\"app-react-components-Tip-Tooltip-Tooltip-module__icon\"});//# sourceURL=webpack-internal:///88049\n");

}),

70296:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-ViewLoading-ViewLoading-module__root\",\"message\":\"app-react-components-ViewLoading-ViewLoading-module__message\"});//# sourceURL=webpack-internal:///70296\n");

}),

99394:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"addButton\":\"app-react-components-buttons-AddButton-module__add-button\"});//# sourceURL=webpack-internal:///99394\n");

}),

33184:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///33184\n");

}),

29071:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"fadeout\":\"app-react-components-buttons-CopyButton-CopyButton-module__fadeout\",\"fadeOut\":\"app-react-components-buttons-CopyButton-CopyButton-module__fadeOut\",\"container\":\"app-react-components-buttons-CopyButton-CopyButton-module__container\",\"displayText\":\"app-react-components-buttons-CopyButton-CopyButton-module__display-text\"});//# sourceURL=webpack-internal:///29071\n");

}),

52050:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"actions\":\"app-react-components-datatables-ActionsMenu-module__actions\",\"actionsActive\":\"app-react-components-datatables-ActionsMenu-module__actions-active\",\"tableActionsMenuList\":\"app-react-components-datatables-ActionsMenu-module__table-actions-menu-list\",\"tableActionsMenuBtn\":\"app-react-components-datatables-ActionsMenu-module__table-actions-menu-btn\"});//# sourceURL=webpack-internal:///52050\n");

}),

50520:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"tableActionsTitle\":\"app-react-components-datatables-ActionsMenuTitle-module__table-actions-title\"});//# sourceURL=webpack-internal:///50520\n");

}),

82089:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"expandButton\":\"app-react-components-datatables-ExpandingCell-module__expand-button\"});//# sourceURL=webpack-internal:///82089\n");

}),

40062:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///40062\n");

}),

2960:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"sortByContainer\":\"app-react-components-datatables-SortbySelector-module__sort-by-container\",\"sortByElement\":\"app-react-components-datatables-SortbySelector-module__sort-by-element\",\"sortButton\":\"app-react-components-datatables-SortbySelector-module__sort-button\"});//# sourceURL=webpack-internal:///2960\n");

}),

33145:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"sortable\":\"app-react-components-datatables-TableHeaderCell-module__sortable\",\"sortingActive\":\"app-react-components-datatables-TableHeaderCell-module__sortingActive\"});//# sourceURL=webpack-internal:///33145\n");

}),

8008:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"sortIcon\":\"app-react-components-datatables-TableHeaderSortIcons-module__sort-icon\",\"activeSortIcon\":\"app-react-components-datatables-TableHeaderSortIcons-module__active-sort-icon\"});//# sourceURL=webpack-internal:///8008\n");

}),

68540:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"alertVisible\":\"app-react-components-datatables-TableSettingsMenuAutoRefresh-module__alert-visible\",\"alertHidden\":\"app-react-components-datatables-TableSettingsMenuAutoRefresh-module__alert-hidden\"});//# sourceURL=webpack-internal:///68540\n");

}),

18162:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"group\":\"app-react-components-form-components-ButtonSelector-ButtonSelector-module__group\"});//# sourceURL=webpack-internal:///18162\n");

}),

78366:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"fileInput\":\"app-react-components-form-components-FileUpload-FileUploadField-module__file-input\",\"fileButton\":\"app-react-components-form-components-FileUpload-FileUploadField-module__file-button\"});//# sourceURL=webpack-internal:///78366\n");

}),

29467:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({});//# sourceURL=webpack-internal:///29467\n");

}),

11796:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"items\":\"app-react-components-form-components-InputList-InputList-module__items\",\"label\":\"app-react-components-form-components-InputList-InputList-module__label\",\"itemLine\":\"app-react-components-form-components-InputList-InputList-module__item-line\",\"hasError\":\"app-react-components-form-components-InputList-InputList-module__has-error\",\"itemActions\":\"app-react-components-form-components-InputList-InputList-module__item-actions\",\"defaultItem\":\"app-react-components-form-components-InputList-InputList-module__default-item\"});//# sourceURL=webpack-internal:///11796\n");

}),

55516:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///55516\n");

}),

91114:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-form-components-Slider-Slider-module__root\",\"slider\":\"app-react-components-form-components-Slider-Slider-module__slider\"});//# sourceURL=webpack-internal:///91114\n");

}),

42538:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=webpack-internal:///42538\n");

}),

50494:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-form-components-SwitchField-Switch-module__root\"});//# sourceURL=webpack-internal:///50494\n");

}),

33714:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-components-form-components-SwitchField-SwitchField-module__root\",\"label\":\"app-react-components-form-components-SwitchField-SwitchField-module__label\",\"switchValues\":\"app-react-components-form-components-SwitchField-SwitchField-module__switchValues\"});//# sourceURL=webpack-internal:///33714\n");

}),

14907:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"sortByContainer\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-by-container\",\"sortByElement\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-by-element\",\"sortButton\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-button\"});//# sourceURL=webpack-internal:///14907\n");

}),

77580:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-docker-containers-components-ContainerQuickActions-ContainerQuickActions-module__root\"});//# sourceURL=webpack-internal:///77580\n");

}),

83475:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"form\":\"app-react-portainer-access-control-AccessControlPanel-AccessControlPanelForm-module__form\"});//# sourceURL=webpack-internal:///83475\n");

}),

48824:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"wizardStepAction\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-EnvironmentsCreationView-module__wizard-step-action\",\"wizardWrapper\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-EnvironmentsCreationView-module__wizard-wrapper\"});//# sourceURL=webpack-internal:///48824\n");

}),

72846:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"wizardListWrapper\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-wrapper\",\"wizardListImage\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-image\",\"wizardListTitle\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-title\",\"wizardListSubtitle\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-subtitle\",\"wizardListType\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-type\"});//# sourceURL=webpack-internal:///72846\n");

}),

70682:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"wizardButton\":\"app-react-portainer-environments-wizard-HomeView-HomeView-module__wizard-button\",\"link\":\"app-react-portainer-environments-wizard-HomeView-HomeView-module__link\"});//# sourceURL=webpack-internal:///70682\n");

}),

55207:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-portainer-environments-wizard-components-Option-Option-module__root\",\"feature\":\"app-react-portainer-environments-wizard-components-Option-Option-module__feature\",\"teaser\":\"app-react-portainer-environments-wizard-components-Option-Option-module__teaser\",\"active\":\"app-react-portainer-environments-wizard-components-Option-Option-module__active\",\"icon\":\"app-react-portainer-environments-wizard-components-Option-Option-module__icon\",\"iconComponent\":\"app-react-portainer-environments-wizard-components-Option-Option-module__icon-component\"});//# sourceURL=webpack-internal:///55207\n");

}),

53720:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"sliderBadge\":\"app-react-portainer-settings-AuthenticationView-InternalAuth-PasswordLengthSlider-PasswordLengthSlider-module__slider-badge\",\"root\":\"app-react-portainer-settings-AuthenticationView-InternalAuth-PasswordLengthSlider-PasswordLengthSlider-module__root\"});//# sourceURL=webpack-internal:///53720\n");

}),

38603:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"fdoTable\":\"app-react-portainer-settings-EdgeComputeView-SettingsFDO-SettingsFDO-module__fdo-table\"});//# sourceURL=webpack-internal:///38603\n");

}),

71609:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-EnvironmentSidebar-module__root\",\"closeBtn\":\"app-react-sidebar-EnvironmentSidebar-module__closeBtn\"});//# sourceURL=webpack-internal:///71609\n");

}),

47491:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-Footer-Footer-module__root\",\"dialog\":\"app-react-sidebar-Footer-Footer-module__dialog\",\"versionInfo\":\"app-react-sidebar-Footer-Footer-module__versionInfo\",\"toolsList\":\"app-react-sidebar-Footer-Footer-module__toolsList\",\"tools\":\"app-react-sidebar-Footer-Footer-module__tools\"});//# sourceURL=webpack-internal:///47491\n");

}),

32116:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-Footer-UpdateNotifications-module__root\",\"dismissTitle\":\"app-react-sidebar-Footer-UpdateNotifications-module__dismissTitle\",\"dismissBtn\":\"app-react-sidebar-Footer-UpdateNotifications-module__dismissBtn\",\"actions\":\"app-react-sidebar-Footer-UpdateNotifications-module__actions\"});//# sourceURL=webpack-internal:///32116\n");

}),

29196:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"logo\":\"app-react-sidebar-Header-module__logo\",\"collapseBtn\":\"app-react-sidebar-Header-module__collapseBtn\"});//# sourceURL=webpack-internal:///29196\n");

}),

15777:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__root\",\"minimized\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__minimized\",\"header\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__header\",\"title\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__title\",\"actions\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__actions\",\"terminalContainer\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__terminal-container\",\"loadingMessage\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__loading-message\"});//# sourceURL=webpack-internal:///15777\n");

}),

20065:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShellButton-module__root\"});//# sourceURL=webpack-internal:///20065\n");

}),

58615:

(function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\"root\":\"app-react-sidebar-Sidebar-module__root\"});//# sourceURL=webpack-internal:///58615\n");

}),

10388:

(function(module) {

eval("var _module_exports = \"<button ng-if=\\\"!$ctrl.state.uploadInProgress\\\" type=\\\"button\\\" ngf-select=\\\"$ctrl.onFileSelected($file)\\\" class=\\\"btn btn-light ng-scope\\\">\\n  <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon>\\n</button>\\n<button ng-if=\\\"$ctrl.state.uploadInProgress\\\" type=\\\"button\\\" class=\\\"btn btn-sm btn-light\\\" button-spinner=\\\"$ctrl.state.uploadInProgress\\\"></button>\\n\";;\nvar path = 'app/agent/components/file-uploader/fileUploader.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10388\n");

}),

53719:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            auto-focus\\n          />\\n        </div>\\n        <file-uploader authorization=\\\"DockerAgentBrowsePut\\\" ng-if=\\\"$ctrl.isUploadAllowed\\\" on-file-selected=\\\"($ctrl.onFileSelectedForUpload)\\\"> </file-uploader>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'大小'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Size'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Size' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Size')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'最后修改'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ModTime'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ModTime' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ModTime')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th> 操作 </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr ng-if=\\\"!$ctrl.isRoot\\\">\\n              <td colspan=\\\"4\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-link hover:no-underline !ml-0 p-0\\\" ng-click=\\\"$ctrl.goToParent()\\\"\\n                  ><pr-icon icon=\\\"'corner-left-up'\\\" feather=\\\"true\\\"></pr-icon>返回上级</button\\n                >\\n              </td>\\n            </tr>\\n            <tr ng-repeat=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder))\\\">\\n              <td>\\n                <span ng-if=\\\"item.edit\\\" class=\\\"vertical-center\\\">\\n                  <input\\n                    class=\\\"input-sm\\\"\\n                    type=\\\"text\\\"\\n                    ng-model=\\\"item.newName\\\"\\n                    on-enter-key=\\\"$ctrl.rename({ name: item.Name, newName: item.newName }); item.edit = false\\\"\\n                    auto-focus\\n                  />\\n                  <a class=\\\"interactive\\\" ng-click=\\\"item.edit = false;\\\"><pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\"></pr-icon></a>\\n                  <a class=\\\"interactive\\\" ng-click=\\\"$ctrl.rename({name: item.Name, newName: item.newName}); item.edit = false;\\\"><pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon></a>\\n                </span>\\n                <span ng-if=\\\"!item.edit && item.Dir\\\">\\n                  <button type=\\\"button\\\" class=\\\"btn btn-link hover:no-underline !ml-0 p-0\\\" ng-click=\\\"$ctrl.browse({name: item.Name})\\\" class=\\\"vertical-center\\\"\\n                    ><pr-icon icon=\\\"'folder'\\\" feather=\\\"true\\\"></pr-icon>{{ item.Name }}</button\\n                  >\\n                </span>\\n                <span ng-if=\\\"!item.edit && !item.Dir\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'file'\\\" feather=\\\"true\\\"></pr-icon>{{ item.Name }}</span>\\n              </td>\\n              <td>{{ item.Size | humansize }}</td>\\n              <td>\\n                {{ item.ModTime | getisodatefromtimestamp }}\\n              </td>\\n              <td>\\n                <btn authorization=\\\"DockerAgentBrowseGet\\\" class=\\\"btn btn-xs btn-secondary space-right\\\" ng-click=\\\"$ctrl.download({ name: item.Name })\\\" ng-if=\\\"!item.Dir\\\">\\n                  <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon> 下载\\n                </btn>\\n                <btn authorization=\\\"DockerAgentBrowseRename\\\" class=\\\"btn btn-xs btn-secondary space-right\\\" ng-click=\\\"item.newName = item.Name; item.edit = true\\\">\\n                  <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon> 重命名\\n                </btn>\\n                <btn authorization=\\\"DockerAgentBrowseDelete\\\" class=\\\"btn btn-xs btn-dangerlight\\\" ng-click=\\\"$ctrl.delete({ name: item.Name })\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> 删除\\n                </btn>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">未找到文件.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/agent/components/files-datatable/filesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53719\n");

}),

10884:

(function(module) {

eval("var _module_exports = \"<files-datatable\\n  title-text=\\\"主机浏览 - {{ $ctrl.getRelativePath() }}\\\"\\n  title-icon=\\\"file\\\"\\n  dataset=\\\"$ctrl.files\\\"\\n  table-key=\\\"host_browser\\\"\\n  order-by=\\\"Dir\\\"\\n  is-root=\\\"$ctrl.isRoot()\\\"\\n  go-to-parent=\\\"$ctrl.goToParent()\\\"\\n  browse=\\\"$ctrl.browse(name)\\\"\\n  rename=\\\"$ctrl.renameFile(name, newName)\\\"\\n  download=\\\"$ctrl.downloadFile(name)\\\"\\n  delete=\\\"$ctrl.confirmDeleteFile(name)\\\"\\n  is-upload-allowed=\\\"true\\\"\\n  on-file-selected-for-upload=\\\"($ctrl.onFileSelectedForUpload)\\\"\\n>\\n</files-datatable>\\n\";;\nvar path = 'app/agent/components/host-browser/hostBrowser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10884\n");

}),

56566:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <label for=\\\"target_node\\\" class=\\\"col-sm-1 control-label text-left\\\">Node</label>\\n  <div class=\\\"col-sm-11\\\">\\n    <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.model\\\" ng-options=\\\"agent.NodeName as agent.NodeName for agent in $ctrl.agents\\\"></select>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/agent/components/node-selector/nodeSelector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///56566\n");

}),

23709:

(function(module) {

eval("var _module_exports = \"<files-datatable\\n  title-text=\\\"存储卷浏览\\\"\\n  title-icon=\\\"file\\\"\\n  dataset=\\\"$ctrl.files\\\"\\n  table-key=\\\"volume_browser\\\"\\n  order-by=\\\"Dir\\\"\\n  is-root=\\\"$ctrl.state.path === '/'\\\"\\n  go-to-parent=\\\"$ctrl.up()\\\"\\n  browse=\\\"$ctrl.browse(name)\\\"\\n  rename=\\\"$ctrl.rename(name, newName)\\\"\\n  download=\\\"$ctrl.download(name)\\\"\\n  delete=\\\"$ctrl.confirmDelete(name)\\\"\\n  is-upload-allowed=\\\"$ctrl.isUploadEnabled\\\"\\n  on-file-selected-for-upload=\\\"($ctrl.onFileSelectedForUpload)\\\"\\n></files-datatable>\\n\";;\nvar path = 'app/agent/components/volume-browser/volumeBrowser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///23709\n");

}),

81521:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Container capabilities </div>\\n  <div class=\\\"form-group flex flex-wrap gap-y-2 px-5\\\">\\n    <div ng-repeat=\\\"cap in $ctrl.capabilities\\\" class=\\\"w-1/3 text-center\\\">\\n      <por-switch-field\\n        label-class=\\\"'col-sm-6'\\\"\\n        tooltip=\\\"cap.description\\\"\\n        checked=\\\"cap.allowed\\\"\\n        label=\\\"cap.capability\\\"\\n        name=\\\"'capability'\\\"\\n        on-change=\\\"($ctrl.capabilitiesOnChange[cap.capability])\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n</form>\\n\";;\nvar path = 'app/docker/components/container-capabilities/containerCapabilities.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///81521\n");

}),

80239:

(function(module) {

eval("var _module_exports = \"<div>\\n  <table class=\\\"table table-bordered table-condensed\\\">\\n    <tr>\\n      <td class=\\\"col-md-3\\\">\\n        <span>名称</span>\\n      </td>\\n      <td>\\n        <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.editModel.name\\\" disable-authorization=\\\"DockerContainerUpdate\\\">\\n          <option value=\\\"no\\\">没有</option>\\n          <option value=\\\"on-failure\\\">非正常退出时重启</option>\\n          <option value=\\\"always\\\">总是重启</option>\\n          <option value=\\\"unless-stopped\\\">排除崩溃，总是重启</option>\\n        </select>\\n      </td>\\n      <td class=\\\"col-md-2\\\" authorization=\\\"DockerContainerUpdate\\\">\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.save()\\\">更新</button>\\n      </td>\\n    </tr>\\n    <tr ng-if=\\\"$ctrl.state.editModel.name === 'on-failure'\\\">\\n      <td class=\\\"col-md-3\\\">最大重试次数</td>\\n      <td colspan=\\\"2\\\">\\n        <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.editModel.maximumRetryCount\\\" />\\n      </td>\\n    </tr>\\n  </table>\\n</div>\\n\";;\nvar path = 'app/docker/components/container-restart-policy/container-restart-policy.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///80239\n");

}),

171:

(function(module) {

eval("var _module_exports = \"<rd-widget>\\n  <rd-widget-header icon=\\\"svg-tachometer\\\" title-text=\\\"群集信息\\\"></rd-widget-header>\\n  <rd-widget-body classes=\\\"!px-5 !py-0\\\">\\n    <table class=\\\"table\\\">\\n      <tbody>\\n        <tr>\\n          <td>Nodes in the cluster</td>\\n          <td>{{ $ctrl.agentCount }}</td>\\n        </tr>\\n        <tr>\\n          <td colspan=\\\"2\\\">\\n            <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n              <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>Go to cluster visualizer</a>\\n            </div>\\n          </td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfo.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///171\n");

}),

80602:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索配置...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"config-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerConfigDelete, DockerConfigCreate\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            authorization=\\\"DockerConfigDelete\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"config-removeConfigButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n          </button>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.configs.new\\\"\\n            authorization=\\\"DockerConfigCreate\\\"\\n            data-cy=\\\"config-addConfigButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>添加配置\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"flex flex-nowrap items-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\" authorization=\\\"DockerConfigDelete, DockerConfigCreate\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'名称'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建日期'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreatedAt'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreatedAt' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreatedAt')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" authorization=\\\"DockerConfigDelete, DockerConfigCreate\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"docker.configs.config({id: item.Id})\\\">{{ item.Name }}</a>\\n              </td>\\n              <td>{{ item.CreatedAt | getisodate }}</td>\\n              <td>\\n                <span>\\n                  <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n                  {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No config available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/configs-datatable/configsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///80602\n");

}),

49229:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"{{ $ctrl.titleIcon }}\\\" feather-icon=\\\"true\\\" title-text=\\\"{{ $ctrl.titleText }}\\\"></rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"actionBar\\\">\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"row\\\" authorization=\\\"DockerNetworkConnect\\\">\\n            <label for=\\\"container_network\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">加入网络</label>\\n            <div class=\\\"col-sm-5 col-lg-4\\\">\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.selectedNetwork\\\" id=\\\"container_network\\\">\\n                <option selected disabled hidden value=\\\"\\\">选择一个网络</option>\\n                <option ng-repeat=\\\"net in $ctrl.availableNetworks | orderBy: 'Name'\\\" ng-value=\\\"net.Id\\\">{{ net.Name }}</option>\\n              </select>\\n            </div>\\n            <div class=\\\"col-sm-1\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"$ctrl.joinNetworkActionInProgress || !$ctrl.selectedNetwork\\\"\\n                ng-click=\\\"$ctrl.joinNetworkAction($ctrl.container, $ctrl.selectedNetwork)\\\"\\n                button-spinner=\\\"$ctrl.joinNetworkActionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.joinNetworkActionInProgress\\\">加入网络</span>\\n                <span ng-show=\\\"$ctrl.joinNetworkActionInProgress\\\">加入网络中...</span>\\n              </button>\\n            </div>\\n          </div>\\n        </form>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>网络</th>\\n              <th>\\n                IP 地址\\n                <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n                  <i ng-class=\\\"{ 'fas fa-angle-down': $ctrl.state.expandAll, 'fas fa-angle-right': !$ctrl.state.expandAll }\\\" aria-hidden=\\\"true\\\"></i>\\n                </a>\\n              </th>\\n              <th>网关</th>\\n              <th>MAC 地址</th>\\n              <th authorization=\\\"DockerNetworkDisconnect\\\">操作</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate-start=\\\"(key, value) in $ctrl.dataset | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n              ng-click=\\\"$ctrl.expandItem(value, !value.Expanded)\\\"\\n            >\\n              <td>\\n                <button class=\\\"btn btn-none\\\" ng-if=\\\"$ctrl.itemCanExpand(value)\\\" type=\\\"button\\\">\\n                  <i ng-class=\\\"{ 'fas fa-angle-down': value.Expanded, 'fas fa-angle-right': !value.Expanded }\\\" class=\\\"space-right\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n                <a ui-sref=\\\"docker.networks.network({ id: key, nodeName: $ctrl.nodeName })\\\">{{ key }}</a>\\n              </td>\\n              <td>{{ value.IPAddress || '-' }}</td>\\n              <td>{{ value.Gateway || '-' }}</td>\\n              <td>{{ value.MacAddress || '-' }}</td>\\n              <td authorization=\\\"DockerNetworkDisconnect\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-xs btn-dangerlight h-fit vertical-center !ml-0\\\"\\n                  ng-disabled=\\\"$ctrl.leaveNetworkActionInProgress || $ctrl.container.IsPortainer\\\"\\n                  button-spinner=\\\"$ctrl.leaveNetworkActionInProgress\\\"\\n                  ng-click=\\\"$ctrl.leaveNetworkAction($ctrl.container, key)\\\"\\n                >\\n                  <span ng-if=\\\"!$ctrl.leaveNetworkActionInProgress\\\" class=\\\"vertical-center !ml-0\\\"> <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> 断开网络</span>\\n                  <span ng-if=\\\"$ctrl.leaveNetworkActionInProgress\\\">断开网络中...</span>\\n                </button>\\n              </td>\\n            </tr>\\n            <tr\\n              dir-paginate-end\\n              ng-show=\\\"$ctrl.itemCanExpand(value) && value.Expanded\\\"\\n              ng-class=\\\"{ 'datatable-highlighted': value.Highlighted, 'datatable-unhighlighted': !value.Highlighted }\\\"\\n            >\\n              <td colspan=\\\"1\\\"></td>\\n              <td colspan=\\\"1\\\">\\n                {{ value.GlobalIPv6Address }}\\n              </td>\\n              <td colspan=\\\"3\\\">\\n                {{ value.IPv6Gateway || '-' }}\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.dataset.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">没有可用的网络。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector vertical-center\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///49229\n");

}),

85566:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索一个进程...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"process-searchInput\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th ng-repeat=\\\"header in $ctrl.headerset\\\">\\n                {{ header }}\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr dir-paginate=\\\"item in ($ctrl.state.filteredProcesses = ($ctrl.dataset | filter:$ctrl.state.textFilter | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\">\\n              <td ng-repeat=\\\"info in item track by $index\\\">{{ info }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"{{ $ctrl.headerset.length }}\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredProcesses.length === 0\\\">\\n              <td colspan=\\\"{{ $ctrl.headerset.length }}\\\" class=\\\"text-center text-muted\\\">No process available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///85566\n");

}),

2576:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索事件...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"event-searchInput\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'日期'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Time'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Time' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Time')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'类别'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'详情'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Details'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Details' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Details')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>{{ item.Time | getisodatefromtimestamp }}</td>\\n              <td>{{ item.Type }}</td>\\n              <td>{{ item.Details }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">没有可用的事件。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/events-datatable/eventsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2576\n");

}),

33261:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar show-dropdown\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索镜像...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"image-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerImageDelete, DockerImageBuild, DockerImageLoad, DockerImageGet\\\">\\n          <div class=\\\"btn-group\\\" authorization=\\\"DockerImageDelete\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n              authorization=\\\"DockerImageDelete\\\"\\n              ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n              ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n              data-cy=\\\"image-removeImageButton\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n            </button>\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-dangerlight dropdown-toggle\\\"\\n              data-toggle=\\\"dropdown\\\"\\n              aria-haspopup=\\\"true\\\"\\n              aria-expanded=\\\"false\\\"\\n              ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            >\\n              <span class=\\\"caret\\\"></span>\\n              <span class=\\\"sr-only\\\">切换下拉列表</span>\\n            </button>\\n            <ul class=\\\"dropdown-menu\\\">\\n              <li><a ng-click=\\\"$ctrl.forceRemoveAction($ctrl.state.selectedItems, true)\\\" ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\">强制删除</a></li>\\n            </ul>\\n          </div>\\n\\n          <div class=\\\"btn-group\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light h-fit\\\"\\n              ui-sref=\\\"docker.images.import\\\"\\n              authorization=\\\"DockerImageLoad\\\"\\n              ng-disabled=\\\"$ctrl.exportInProgress\\\"\\n              data-cy=\\\"image-importImageButton\\\"\\n            >\\n              <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon>导入\\n            </button>\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light h-fit\\\"\\n              ng-disabled=\\\"$ctrl.state.selectedItemCount === 0 || $ctrl.exportInProgress\\\"\\n              ng-click=\\\"$ctrl.downloadAction($ctrl.state.selectedItems)\\\"\\n              button-spinner=\\\"$ctrl.exportInProgress\\\"\\n              authorization=\\\"DockerImageGet\\\"\\n              data-cy=\\\"image-exportImageButton\\\"\\n            >\\n              <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon>\\n              <span ng-hide=\\\"$ctrl.exportInProgress\\\">导出</span>\\n              <span ng-show=\\\"$ctrl.exportInProgress\\\">正在导出...</span>\\n            </button>\\n          </div>\\n\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.images.build\\\"\\n            authorization=\\\"DockerImageBuild\\\"\\n            data-cy=\\\"image-buildImageButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>构建新映像\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover table-filters nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" popover-placement=\\\"bottom-left\\\" is-open=\\\"$ctrl.filters.state.open\\\">\\n                <div class=\\\"flex gap-1 items-center\\\">\\n                  <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Id'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n                  ></table-column-header>\\n                </div>\\n\\n                <div>\\n                  <span uib-dropdown-toggle class=\\\"table-filter\\\" ng-if=\\\"!$ctrl.filters.state.enabled\\\">筛选 <i class=\\\"fa fa-filter\\\" aria-hidden=\\\"true\\\"></i></span>\\n                  <span uib-dropdown-toggle class=\\\"table-filter filter-active\\\" ng-if=\\\"$ctrl.filters.state.enabled\\\">筛选 <i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i></span>\\n                </div>\\n                <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n                  <div class=\\\"tableMenu\\\">\\n                    <div class=\\\"menuHeader\\\"> 按用途筛选 </div>\\n                    <div class=\\\"menuContent\\\">\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"filter_usage_usedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUsedImages\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n                        <label for=\\\"filter_usage_usedImages\\\">已使用镜像</label>\\n                      </div>\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"filter_usage_unusedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUnusedImages\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n                        <label for=\\\"filter_usage_unusedImages\\\">未使用镜像</label>\\n                      </div>\\n                    </div>\\n                    <div>\\n                      <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">关闭</a>\\n                    </div>\\n                  </div>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'标记'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'RepoTags'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'RepoTags' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('RepoTags')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'大小'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'VirtualSize'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'VirtualSize' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('VirtualSize')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Created'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Created' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Created')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showHostColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'主机'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'NodeName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('NodeName')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ng-if=\\\"!$ctrl.offlineMode\\\" ui-sref=\\\"docker.images.image({ id: item.Id, nodeName: item.NodeName })\\\" class=\\\"monospaced\\\" title=\\\"{{ item.Id }}\\\">{{\\n                  item.Id | truncate: 40\\n                }}</a>\\n                <span ng-if=\\\"$ctrl.offlineMode\\\">{{ item.Id | truncate: 40 }}</span>\\n                <span style=\\\"margin-left: 10px\\\" class=\\\"label label-warning image-tag\\\" ng-if=\\\"::item.ContainerCount === 0\\\">未使用</span>\\n              </td>\\n              <td>\\n                <span class=\\\"label label-primary image-tag\\\" ng-repeat=\\\"tag in (item | repotags) track by $index\\\">{{ tag }}</span>\\n              </td>\\n              <td>{{ item.VirtualSize | humansize }}</td>\\n              <td>{{ item.Created | getisodatefromtimestamp }}</td>\\n              <td ng-if=\\\"$ctrl.showHostColumn\\\">{{ item.NodeName ? item.NodeName : '-' }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">没有可用的镜像。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/images-datatable/imagesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///33261\n");

}),

19618:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle\\\"> <i class=\\\"fa\\\" ng-class=\\\"$ctrl.titleIcon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i> {{ $ctrl.titleText }} </div>\\n      </div>\\n      <div class=\\\"searchBar vertical-center\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"Search for a macvlan...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Hostname'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Hostname' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Hostname')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'角色'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'引擎'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'EngineVersion'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'EngineVersion' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('EngineVersion')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showIpAddressColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'IP 地址'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Addr'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Addr' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Addr')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'状态'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"docker.nodes.node({id: item.Id})\\\" ng-if=\\\"$ctrl.accessToNodeDetails\\\">{{ item.Hostname }}</a>\\n                <span ng-if=\\\"!$ctrl.accessToNodeDetails\\\">{{ item.Hostname }}</span>\\n              </td>\\n              <td>{{ item.Role }}</td>\\n              <td>{{ item.EngineVersion }}</td>\\n              <td ng-if=\\\"$ctrl.showIpAddressColumn\\\">{{ item.Addr }}</td>\\n              <td>\\n                <span class=\\\"label label-{{ item.Status | nodestatusbadge }}\\\">{{ item.Status }}</span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">没有可用节点。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///19618\n");

}),

47967:

(function(module) {

eval("var _module_exports = \"<td ng-if=\\\"allowCheckbox\\\">\\n  <span class=\\\"md-checkbox\\\" ng-if=\\\"!parentCtrl.offlineMode\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n    <input\\n      id=\\\"select_{{ $index }}\\\"\\n      type=\\\"checkbox\\\"\\n      ng-model=\\\"item.Checked\\\"\\n      ng-click=\\\"parentCtrl.selectItem(item, $event); $event.stopPropagation()\\\"\\n      ng-disabled=\\\"parentCtrl.disableRemove(item)\\\"\\n    />\\n    <label for=\\\"select_{{ $index }}\\\"></label>\\n  </span>\\n  <a ng-if=\\\"parentCtrl.itemCanExpand(item)\\\"\\n    ><i ng-class=\\\"{ 'fas fa-angle-down': item.Expanded, 'fas fa-angle-right': !item.Expanded }\\\" class=\\\"space-right\\\" aria-hidden=\\\"true\\\"></i\\n  ></a>\\n</td>\\n<td ng-if=\\\"!allowCheckbox\\\"></td>\\n<td>\\n  <a ng-if=\\\"!parentCtrl.offlineMode\\\" ui-sref=\\\"docker.networks.network({ id: item.Id, nodeName: item.NodeName })\\\" title=\\\"{{ item.Name }}\\\">{{ item.Name | truncate: 40 }}</a>\\n  <span ng-if=\\\"parentCtrl.offlineMode\\\">{{ item.Name | truncate: 40 }}</span>\\n  <span style=\\\"margin-left: 10px\\\" class=\\\"label label-info image-tag space-left\\\" ng-if=\\\"item.ResourceControl.System\\\">系统</span>\\n</td>\\n<td>{{ item.StackName ? item.StackName : '-' }}</td>\\n<td>{{ item.Driver }}</td>\\n<td>{{ item.Attachable }}</td>\\n<td>{{ item.IPAM.Driver }}</td>\\n<td>{{ item.IPAM.IPV4Configs[0].Subnet ? item.IPAM.IPV4Configs[0].Subnet : '-' }}</td>\\n<td>{{ item.IPAM.IPV4Configs[0].Gateway ? item.IPAM.IPV4Configs[0].Gateway : '-' }}</td>\\n<td>{{ item.IPAM.IPV6Configs[0].Subnet ? item.IPAM.IPV6Configs[0].Subnet : '-' }}</td>\\n<td>{{ item.IPAM.IPV6Configs[0].Gateway ? item.IPAM.IPV6Configs[0].Gateway : '-' }}</td>\\n<td ng-if=\\\"parentCtrl.showHostColumn\\\">{{ item.NodeName ? item.NodeName : '-' }}</td>\\n<td>\\n  <span>\\n    <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n    {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = RCO.ADMINISTRATORS }}\\n  </span>\\n</td>\\n\";;\nvar path = 'app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///47967\n");

}),

8755:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索网络...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"network-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            authorization=\\\"DockerNetworkDelete\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"network-removeNetworkButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n          </button>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.networks.new\\\"\\n            authorization=\\\"DockerNetworkCreate\\\"\\n            data-cy=\\\"network-addNetworkButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>添加网络\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th style=\\\"width: 55px\\\">\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n                  <i ng-class=\\\"{ 'fas fa-angle-down': $ctrl.state.expandAll, 'fas fa-angle-right': !$ctrl.state.expandAll }\\\" aria-hidden=\\\"true\\\"></i>\\n                </a>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'堆栈'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'驱动'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Driver'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Driver' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Driver')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'可附加'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Attachable'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Attachable' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Attachable')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IPAM 驱动'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.Driver'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.Driver' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAM.Driver')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IPV4 IPAM 子网'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Subnet'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Subnet' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV4Configs[0].Subnet')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IPV4 IPAM 网关'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Gateway'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Gateway' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV4Configs[0].Gateway')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IPV6 IPAM 子网'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Subnet'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Subnet' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV6Configs[0].Subnet')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IPV6 IPAM 网关'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Gateway'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Gateway' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV6Configs[0].Gateway')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showHostColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'主机'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'NodeName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('NodeName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n              network-row-content\\n              item=\\\"item\\\"\\n              parent-ctrl=\\\"$ctrl\\\"\\n              ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n              allow-checkbox=\\\"true\\\"\\n            >\\n            </tr>\\n            <tr dir-paginate-end ng-show=\\\"item.Expanded\\\" ng-repeat=\\\"it in item.Subs\\\" class=\\\"datatable-highlighted\\\" network-row-content item=\\\"it\\\" parent-ctrl=\\\"$ctrl\\\"> </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"9\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"9\\\" class=\\\"text-center text-muted\\\">没有可用的网络。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/networks-datatable/networksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///8755\n");

}),

64255:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle\\\"> <i class=\\\"fa\\\" ng-class=\\\"$ctrl.titleIcon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i> {{ $ctrl.titleText }} </div>\\n      </div>\\n      <div class=\\\"searchBar vertical-center\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Id'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'状态'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Slot'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'镜像'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Spec.ContainerSpec.Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Spec.ContainerSpec.Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Spec.ContainerSpec.Image')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'最后更新'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td\\n                ><a ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\">{{ item.Id }}</a></td\\n              >\\n              <td\\n                ><span class=\\\"label label-{{ item.Status.State | taskstatusbadge }}\\\">{{ item.Status.State }}</span></td\\n              >\\n              <td>{{ item.Slot ? item.Slot : '-' }}</td>\\n              <td>{{ item.Spec.ContainerSpec.Image | hideshasum }}</td>\\n              <td>{{ item.Updated | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">没有可用任务。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///64255\n");

}),

53379:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a node...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"node-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Hostname'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Hostname' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Hostname')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'角色'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'CPU'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CPUs'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPUs' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CPUs')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'内存'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'引擎'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'EngineVersion'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'EngineVersion' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('EngineVersion')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showIpAddressColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'IP 地址'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Addr'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Addr' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Addr')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'状态'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'可用'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Availability'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Availability' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Availability')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <a ui-sref=\\\"docker.nodes.node({id: item.Id})\\\" ng-if=\\\"$ctrl.accessToNodeDetails\\\">{{ item.Name || item.Hostname }}</a>\\n                <span ng-if=\\\"!$ctrl.accessToNodeDetails\\\">{{ item.Name || item.Hostname }}</span>\\n              </td>\\n              <td>{{ item.Role }}</td>\\n              <td>{{ item.CPUs / 1000000000 }}</td>\\n              <td>{{ item.Memory | humansize }}</td>\\n              <td>{{ item.EngineVersion }}</td>\\n              <td ng-if=\\\"$ctrl.showIpAddressColumn\\\">{{ item.Addr }}</td>\\n              <td\\n                ><span class=\\\"label label-{{ item.Status | nodestatusbadge }}\\\">{{ item.Status }}</span></td\\n              >\\n              <td\\n                ><span class=\\\"label label-{{ item.Availability | dockerNodeAvailabilityBadge }}\\\">{{ item.Availability }}</span></td\\n              >\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">No node available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/nodes-datatable/nodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53379\n");

}),

7091:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a secret...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"secret-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            authorization=\\\"DockerSecretDelete\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"secret-removeSecretButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Remove\\n          </button>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.secrets.new\\\"\\n            authorization=\\\"DockerSecretCreate\\\"\\n            data-cy=\\\"secret-addSecretButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>Add secret\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"flex flex-nowrap items-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'名称'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建日期'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreatedAt'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreatedAt' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreatedAt')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"docker.secrets.secret({id: item.Id})\\\">{{ item.Name }}</a>\\n              </td>\\n              <td>{{ item.CreatedAt | getisodate }}</td>\\n              <td>\\n                <span>\\n                  <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n                  {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No secret available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/secrets-datatable/secretsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///7091\n");

}),

71483:

(function(module) {

eval("var _module_exports = \"<div class=\\\"inner-datatable\\\">\\n  <table class=\\\"table table-condensed table-hover nowrap-cells\\\">\\n    <thead>\\n      <tr>\\n        <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\" class=\\\"w-[10%]\\\">\\n          <div class=\\\"flex\\\">\\n            <table-column-header\\n              col-title=\\\"'Status'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Status.State'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status.State' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Status.State')\\\"\\n            ></table-column-header>\\n            <span class=\\\"space-left\\\">\\n              <span uib-dropdown-toggle class=\\\"table-filter\\\" ng-if=\\\"!$ctrl.filters.state.enabled\\\">筛选 <i class=\\\"fa fa-filter\\\" aria-hidden=\\\"true\\\"></i></span>\\n              <span uib-dropdown-toggle class=\\\"table-filter filter-active\\\" ng-if=\\\"$ctrl.filters.state.enabled\\\">筛选 <i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i></span>\\n            </span>\\n            <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 按状态筛选 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.filters.state.values track by $index\\\">\\n                    <input id=\\\"filter_state_{{ $ctrl.serviceId }}_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"filter.display\\\" ng-change=\\\"$ctrl.onStateFilterChange()\\\" />\\n                    <label for=\\\"filter_state_{{ $ctrl.serviceId }}_{{ $index }}\\\">{{ filter.label }}</label>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </th>\\n        <th style=\\\"width: 22%\\\">任务</th>\\n        <th>操作</th>\\n        <th>\\n          <table-column-header\\n            col-title=\\\"'Slot'\\\"\\n            can-sort=\\\"true\\\"\\n            is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n            is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n            ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n          ></table-column-header>\\n        </th>\\n        <th>\\n          <table-column-header\\n            col-title=\\\"'节点'\\\"\\n            can-sort=\\\"true\\\"\\n            is-sorted=\\\"$ctrl.state.orderBy === 'NodeId'\\\"\\n            is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeId' && $ctrl.state.reverseOrder\\\"\\n            ng-click=\\\"$ctrl.changeOrderBy('NodeId')\\\"\\n          ></table-column-header>\\n        </th>\\n        <th>\\n          <table-column-header\\n            col-title=\\\"'最后更新'\\\"\\n            can-sort=\\\"true\\\"\\n            is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n            is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n            ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n          ></table-column-header>\\n        </th>\\n      </tr>\\n    </thead>\\n    <tbody>\\n      <tr\\n        ng-repeat=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder))\\\"\\n      >\\n        <td class=\\\"text-center\\\">\\n          <span class=\\\"label label-{{ item.Status.State | taskstatusbadge }} space-right\\\">{{ item.Status.State }}</span>\\n        </td>\\n        <td>\\n          <a ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\" ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\">{{ item.Id }}</a>\\n          <a ng-if=\\\"$ctrl.agentProxy && item.Container\\\" ui-sref=\\\"docker.containers.container({ id: item.Container.Id, nodeName: item.Container.NodeName })\\\" class=\\\"monospaced\\\">{{\\n            item.Id\\n          }}</a>\\n        </td>\\n        <td>\\n          <container-quick-actions\\n            ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\"\\n            container-id=\\\"item.ContainerId\\\"\\n            task-id=\\\"item.Id\\\"\\n            status=\\\"item.Status.State\\\"\\n            state=\\\"$ctrl.state\\\"\\n          ></container-quick-actions>\\n          <container-quick-actions\\n            ng-if=\\\"$ctrl.agentProxy && item.Container\\\"\\n            container-id=\\\"item.Container.Id\\\"\\n            node-name=\\\"item.Container.NodeName\\\"\\n            status=\\\"item.Status.State\\\"\\n            state=\\\"$ctrl.state\\\"\\n          ></container-quick-actions>\\n        </td>\\n        <td>{{ item.Slot ? item.Slot : '-' }}</td>\\n        <td>{{ item.NodeId | tasknodename: $ctrl.nodes }}</td>\\n        <td>{{ item.Updated | getisodate }}</td>\\n      </tr>\\n      <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n        <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No task matching filter.</td>\\n      </tr>\\n    </tbody>\\n  </table>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///71483\n");

}),

62318:

(function(module) {

eval("var _module_exports = \"<div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n  <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n    <button\\n      ng-if=\\\"$ctrl.showUpdateAction\\\"\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-sm btn-light h-fit\\\"\\n      authorization=\\\"DockerServiceUpdate\\\"\\n      ng-disabled=\\\"$ctrl.selectedItemCount === 0\\\"\\n      ng-click=\\\"$ctrl.updateAction($ctrl.selectedItems)\\\"\\n      data-cy=\\\"service-updateServiceButton\\\"\\n    >\\n      <pr-icon icon=\\\"'refresh-cw'\\\" feather=\\\"true\\\"></pr-icon>Update\\n    </button>\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-sm btn-dangerlight h-fit\\\"\\n      authorization=\\\"DockerServiceDelete\\\"\\n      ng-disabled=\\\"$ctrl.selectedItemCount === 0\\\"\\n      ng-click=\\\"$ctrl.removeAction($ctrl.selectedItems)\\\"\\n      data-cy=\\\"service-removeServiceButton\\\"\\n    >\\n      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Remove\\n    </button>\\n  </div>\\n  <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"docker.services.new\\\" ng-if=\\\"$ctrl.showAddAction\\\" authorization=\\\"DockerServiceCreate\\\">\\n    <i class=\\\"fa fa-plus space-right\\\" aria-hidden=\\\"true\\\"></i>Add service\\n  </button>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62318\n");

}),

19610:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索服务...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"service-searchInput\\\"\\n          />\\n        </div>\\n        <services-datatable-actions\\n          selected-items=\\\"$ctrl.state.selectedItems\\\"\\n          selected-item-count=\\\"$ctrl.state.selectedItemCount\\\"\\n          show-add-action=\\\"$ctrl.showAddAction\\\"\\n          show-update-action=\\\"$ctrl.showUpdateAction\\\"\\n          endpoint-id=\\\"$ctrl.endpointId\\\"\\n        ></services-datatable-actions>\\n        <div class=\\\"settings\\\">\\n          <datatable-columns-visibility columns=\\\"$ctrl.columnVisibility.columns\\\" on-change=\\\"($ctrl.onColumnVisibilityChange)\\\"></datatable-columns-visibility>\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th style=\\\"width: 55px\\\">\\n                <span class=\\\"md-checkbox\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <a ng-click=\\\"$ctrl.expandAll()\\\">\\n                  <i ng-class=\\\"{ 'fas fa-angle-down': $ctrl.state.expandAll, 'fas fa-angle-right': !$ctrl.state.expandAll }\\\" aria-hidden=\\\"true\\\"></i>\\n                </a>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showStackColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'堆栈'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-show=\\\"$ctrl.columnVisibility.columns.image.display\\\">\\n                <table-column-header\\n                  col-title=\\\"'镜像'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'调度模式'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Mode'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Mode' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Mode')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-show=\\\"$ctrl.columnVisibility.columns.ports.display\\\">\\n                <table-column-header\\n                  col-title=\\\"'已发布端口'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Ports'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Ports' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Ports')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-show=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n                <table-column-header\\n                  col-title=\\\"'最后更新'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'UpdatedAt'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'UpdatedAt' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('UpdatedAt')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-show=\\\"$ctrl.columnVisibility.columns.ownership.display\\\">\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n              dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n              class=\\\"interactive\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation()\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <i ng-class=\\\"{ 'fas fa-angle-down': item.Expanded, 'fas fa-angle-right': !item.Expanded }\\\" class=\\\"space-right\\\" aria-hidden=\\\"true\\\"></i>\\n              </td>\\n              <td>\\n                <button type=\\\"button\\\" class=\\\"btn btn-link hover:no-underline !ml-0 p-0\\\" ui-sref=\\\"docker.services.service({id: item.Id})\\\" ng-click=\\\"$event.stopPropagation()\\\">{{\\n                  item.Name\\n                }}</button>\\n              </td>\\n              <td ng-if=\\\"$ctrl.showStackColumn\\\">{{ item.StackName ? item.StackName : '-' }}</td>\\n              <td ng-show=\\\"$ctrl.columnVisibility.columns.image.display\\\">{{ item.Image | hideshasum }}</td>\\n              <td ng-controller=\\\"ServicesDatatableActionsController as actionCtrl\\\">\\n                {{ item.Mode }}\\n                <code>{{ item.Tasks | runningtaskscount }}</code> / <code>{{ item.Mode === 'replicated' ? item.Replicas : ($ctrl.nodes | availablenodecount: item) }}</code>\\n                <span ng-if=\\\"item.Mode === 'replicated' && !item.Scale\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <a class=\\\"interactive\\\" ng-click=\\\"item.Scale = true; item.ReplicaCount = item.Replicas; $event.stopPropagation();\\\">\\n                    <i class=\\\"fa fa-arrows-alt-v\\\" aria-hidden=\\\"true\\\"></i> Scale\\n                  </a>\\n                </span>\\n                <span ng-if=\\\"item.Mode === 'replicated' && item.Scale\\\">\\n                  <input\\n                    class=\\\"input-sm\\\"\\n                    type=\\\"number\\\"\\n                    min=\\\"0\\\"\\n                    step=\\\"1\\\"\\n                    ng-model=\\\"item.Replicas\\\"\\n                    on-enter-key=\\\"actionCtrl.scaleAction(item)\\\"\\n                    auto-focus\\n                    ng-click=\\\"$event.stopPropagation();\\\"\\n                  />\\n                  <a class=\\\"interactive\\\" ng-click=\\\"item.Scale = false; $event.stopPropagation();\\\"><i class=\\\"fa fa-times\\\"></i></a>\\n                  <a class=\\\"interactive\\\" ng-click=\\\"actionCtrl.scaleAction(item); $event.stopPropagation();\\\"><i class=\\\"fa fa-check-square\\\"></i></a>\\n                </span>\\n              </td>\\n              <td ng-show=\\\"$ctrl.columnVisibility.columns.ports.display\\\">\\n                <a\\n                  ng-if=\\\"item.Ports && item.Ports.length > 0 && p.PublishedPort\\\"\\n                  ng-repeat=\\\"p in item.Ports\\\"\\n                  class=\\\"image-tag\\\"\\n                  ng-href=\\\"http://{{ $ctrl.endpointPublicUrl }}:{{ p.PublishedPort }}\\\"\\n                  target=\\\"_blank\\\"\\n                  ng-click=\\\"$event.stopPropagation();\\\"\\n                >\\n                  <i class=\\\"fa fa-external-link-alt\\\" aria-hidden=\\\"true\\\"></i> {{ p.PublishedPort }}:{{ p.TargetPort }}\\n                </a>\\n                <span ng-if=\\\"!item.Ports || item.Ports.length === 0\\\">-</span>\\n              </td>\\n              <td ng-show=\\\"$ctrl.columnVisibility.columns.updated.display\\\">{{ item.UpdatedAt | getisodate }}</td>\\n              <td ng-show=\\\"$ctrl.columnVisibility.columns.ownership.display\\\">\\n                <span>\\n                  <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n                  {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr dir-paginate-end ng-show=\\\"item.Expanded\\\">\\n              <td></td>\\n              <td colspan=\\\"8\\\">\\n                <service-tasks-datatable\\n                  dataset=\\\"item.Tasks\\\"\\n                  service-id=\\\"item.Id\\\"\\n                  table-key=\\\"service-tasks\\\"\\n                  order-by=\\\"Status.State\\\"\\n                  nodes=\\\"$ctrl.nodes\\\"\\n                  agent-proxy=\\\"$ctrl.agentProxy\\\"\\n                  show-task-logs-button=\\\"$ctrl.showTaskLogsButton\\\"\\n                  text-filter=\\\"$ctrl.state.textFilter\\\"\\n                ></service-tasks-datatable>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"8\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"8\\\" class=\\\"text-center text-muted\\\">No service available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/services-datatable/servicesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///19610\n");

}),

40381:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a task...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Status'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Id'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>操作</th>\\n              <th ng-if=\\\"$ctrl.showSlotColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'Slot'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Node'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'NodeId'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeId' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('NodeId')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Last Update'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td\\n                ><span class=\\\"label label-{{ item.Status.State | taskstatusbadge }}\\\">{{ item.Status.State }}</span></td\\n              >\\n              <td>\\n                <a ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\" ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\"\\n                  >{{ item.ServiceName }}{{ item.Slot ? '.' + item.Slot : '' }}{{ '.' + item.Id }}</a\\n                >\\n                <a ng-if=\\\"$ctrl.agentProxy && item.Container\\\" ui-sref=\\\"docker.containers.container({ id: item.Container.Id, nodeName: item.Container.NodeName })\\\" class=\\\"monospaced\\\"\\n                  >{{ item.ServiceName }}{{ item.Slot ? '.' + item.Slot : '' }}{{ '.' + item.Id }}</a\\n                >\\n              </td>\\n              <td>\\n                <container-quick-actions\\n                  ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\"\\n                  container-id=\\\"item.ContainerId\\\"\\n                  task-id=\\\"item.Id\\\"\\n                  status=\\\"item.Status.State\\\"\\n                  state=\\\"$ctrl.state\\\"\\n                ></container-quick-actions>\\n                <container-quick-actions\\n                  ng-if=\\\"$ctrl.agentProxy && item.Container\\\"\\n                  container-id=\\\"item.Container.Id\\\"\\n                  node-name=\\\"item.Container.NodeName\\\"\\n                  status=\\\"item.Status.State\\\"\\n                  state=\\\"$ctrl.state\\\"\\n                ></container-quick-actions>\\n              </td>\\n              <td ng-if=\\\"$ctrl.showSlotColumn\\\">{{ item.Slot ? item.Slot : '-' }}</td>\\n              <td>{{ item.NodeId | tasknodename: $ctrl.nodes }}</td>\\n              <td>{{ item.Updated | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">No task available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/tasks-datatable/tasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///40381\n");

}),

43761:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索存储卷...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"volume-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            authorization=\\\"DockerVolumeDelete\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"volume-removeVolumeButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class=\\\"leading-none\\\"></pr-icon>删除\\n          </button>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.volumes.new\\\"\\n            authorization=\\\"DockerVolumeCreate\\\"\\n            data-cy=\\\"volume-addVolumeButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class=\\\"leading-none\\\"></pr-icon>添加存储卷\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span class=\\\"inline-block w-3\\\">\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" style=\\\"display: none\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover table-filters nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\" class=\\\"flex gap-1\\\">\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n                ></table-column-header>\\n                <span uib-dropdown-toggle class=\\\"table-filter flex gap-1 self-end\\\" ng-if=\\\"!$ctrl.filters.state.enabled\\\"\\n                  >筛选 <pr-icon icon=\\\"'filter'\\\" feather=\\\"true\\\"></pr-icon\\n                ></span>\\n                <span uib-dropdown-toggle class=\\\"table-filter filter-active flex gap-1 self-end\\\" ng-if=\\\"$ctrl.filters.state.enabled\\\"\\n                  >筛选 <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon\\n                ></span>\\n                <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n                  <div class=\\\"tableMenu\\\">\\n                    <div class=\\\"menuHeader\\\"> 按用途筛选 </div>\\n                    <div class=\\\"menuContent\\\">\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"filter_usage_usedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUsedVolumes\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n                        <label for=\\\"filter_usage_usedImages\\\">已使用存储卷</label>\\n                      </div>\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"filter_usage_unusedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUnusedVolumes\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n                        <label for=\\\"filter_usage_unusedImages\\\">未使用存储卷</label>\\n                      </div>\\n                    </div>\\n                    <div>\\n                      <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">关闭</a>\\n                    </div>\\n                  </div>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'堆栈'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'驱动'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Driver'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Driver' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Driver')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'挂载点'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Mountpoint'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Mountpoint' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Mountpoint')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreatedAt'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreatedAt' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreatedAt')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.showHostColumn\\\">\\n                <table-column-header\\n                  col-title=\\\"'主机'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'NodeName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('NodeName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ng-if=\\\"!$ctrl.offlineMode\\\" ui-sref=\\\"docker.volumes.volume({ id: item.Id, nodeName: item.NodeName })\\\" class=\\\"monospaced\\\" title=\\\"{{ item.Id }}\\\">{{\\n                  item.Id | truncate: 40\\n                }}</a>\\n                <span ng-if=\\\"$ctrl.offlineMode\\\">{{ item.Id | truncate: 40 }}</span>\\n\\n                <button\\n                  ng-if=\\\"$ctrl.showBrowseAction && !$ctrl.offlineMode\\\"\\n                  type=\\\"button\\\"\\n                  ui-sref=\\\"docker.volumes.volume.browse({ id: item.Id, nodeName: item.NodeName })\\\"\\n                  class=\\\"btn btn-xs btn-primary space-left\\\"\\n                  authorization=\\\"DockerAgentBrowseList\\\"\\n                >\\n                  <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon> 浏览\\n                </button>\\n\\n                <span style=\\\"margin-left: 10px\\\" class=\\\"label label-warning image-tag space-left\\\" ng-if=\\\"item.dangling\\\">未使用</span>\\n              </td>\\n              <td>{{ item.StackName ? item.StackName : '-' }}</td>\\n              <td>{{ item.Driver }}</td>\\n              <td>{{ item.Mountpoint | truncatelr }}</td>\\n              <td>{{ item.CreatedAt | getisodate }}</td>\\n              <td ng-if=\\\"$ctrl.showHostColumn\\\">{{ item.NodeName ? item.NodeName : '-' }}</td>\\n              <td>\\n                <span>\\n                  <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n                  {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有可用的卷。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/volumes-datatable/volumesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///43761\n");

}),

9831:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'主机概览'\\\" breadcrumbs=\\\"['Docker']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel-offline ng-if=\\\"$ctrl.offlineMode\\\"></information-panel-offline>\\n\\n<host-details-panel\\n  host=\\\"$ctrl.hostDetails\\\"\\n  is-browse-enabled=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && !$ctrl.offlineMode && $ctrl.hostFeaturesEnabled\\\"\\n  browse-url=\\\"{{ $ctrl.browseUrl }}\\\"\\n></host-details-panel>\\n\\n<engine-details-panel engine=\\\"$ctrl.engineDetails\\\"></engine-details-panel>\\n\\n<devices-panel ng-if=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && !$ctrl.offlineMode && $ctrl.hostFeaturesEnabled\\\" devices=\\\"$ctrl.devices\\\"></devices-panel>\\n<disks-panel ng-if=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && !$ctrl.offlineMode && $ctrl.hostFeaturesEnabled\\\" disks=\\\"$ctrl.disks\\\"></disks-panel>\\n\\n<ng-transclude></ng-transclude>\\n\";;\nvar path = 'app/docker/components/host-overview/host-overview.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9831\n");

}),

56797:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"PCI Devices\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <thead>\\n            <tr>\\n              <th>名称</th>\\n              <th>Vendor</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr ng-if=\\\"$ctrl.devices && $ctrl.devices.length\\\" ng-repeat=\\\"device in $ctrl.devices\\\">\\n              <td>{{ device.Name }}</td>\\n              <td>{{ device.Vendor }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.devices\\\">\\n              <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.devices.length === 0\\\">\\n              <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\"> No device available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/devices-panel/devices-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///56797\n");

}),

37287:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"Physical Disks\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <thead>\\n            <tr>\\n              <th>Vendor</th>\\n              <th>Size</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr ng-if=\\\"$ctrl.disks\\\" ng-repeat=\\\"disk in $ctrl.disks\\\">\\n              <td>{{ disk.Vendor }}</td>\\n              <td>{{ disk.Size | humansize }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.disks\\\">\\n              <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.disks.length === 0\\\">\\n              <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\"> No disks available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/disks-panel/disks-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///37287\n");

}),

63509:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"引擎详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>版本</td>\\n              <td\\n                >{{ $ctrl.engine.releaseVersion }} <span ng-if=\\\"$ctrl.engine.apiVersion\\\">(API: {{ $ctrl.engine.apiVersion }})</span></td\\n              >\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.engine.rootDirectory\\\">\\n              <td>根目录</td>\\n              <td>{{ $ctrl.engine.rootDirectory }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.engine.storageDriver\\\">\\n              <td>存储驱动</td>\\n              <td>{{ $ctrl.engine.storageDriver }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.engine.loggingDriver\\\">\\n              <td>日志驱动</td>\\n              <td>{{ $ctrl.engine.loggingDriver }}</td>\\n            </tr>\\n            <tr>\\n              <td>卷插件</td>\\n              <td>{{ $ctrl.engine.volumePlugins | arraytostr: ', ' }}</td>\\n            </tr>\\n            <tr>\\n              <td>网络插件</td>\\n              <td>{{ $ctrl.engine.networkPlugins | arraytostr: ', ' }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.engine.engineLabels.length\\\">\\n              <td>引擎标签</td>\\n              <td>{{ $ctrl.engine.engineLabels | labelsToStr: ', ' }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///63509\n");

}),

97106:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"主机详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>主机名</td>\\n              <td>{{ $ctrl.host.name }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.host.os\\\">\\n              <td>系统信息</td>\\n              <td>{{ $ctrl.host.os.type }} {{ $ctrl.host.os.arch }} {{ $ctrl.host.os.name }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.host.kernelVersion\\\">\\n              <td>内核版本</td>\\n              <td>{{ $ctrl.host.kernelVersion }}</td>\\n            </tr>\\n            <tr>\\n              <td>总 CPU</td>\\n              <td>{{ $ctrl.host.totalCPU }}</td>\\n            </tr>\\n            <tr>\\n              <td>总内存</td>\\n              <td>{{ $ctrl.host.totalMemory | humansize }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.isBrowseEnabled\\\">\\n              <td colspan=\\\"2\\\">\\n                <button class=\\\"btn btn-primary btn-sm\\\" title=\\\"浏览\\\" ui-sref=\\\"{{ $ctrl.browseUrl }}\\\"> 浏览 </button>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/host-details-panel/host-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///97106\n");

}),

7762:

(function(module) {

eval("var _module_exports = \"<div class=\\\"input-group input-group-sm\\\">\\n  <select name=\\\"nodeAvailability\\\" class=\\\"selectpicker form-control\\\" ng-model=\\\"$ctrl.availability\\\" ng-change=\\\"$ctrl.onChange()\\\">\\n    <option value=\\\"active\\\">Active</option>\\n    <option value=\\\"pause\\\">Pause</option>\\n    <option value=\\\"drain\\\">Drain</option>\\n  </select>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/node-availability-select/node-availability-select.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///7762\n");

}),

642:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"!$ctrl.labels.length\\\"> There are no labels for this node. </div>\\n\\n<div class=\\\"col-sm-12 form-inline !p-0\\\" ng-if=\\\"$ctrl.labels.length\\\">\\n  <div ng-repeat=\\\"label in $ctrl.labels\\\" class=\\\"mt-1\\\">\\n    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n      <span class=\\\"input-group-addon\\\">名称</span>\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"例如 com.example.foo\\\" ng-change=\\\"$ctrl.updateLabel(label)\\\" />\\n    </div>\\n    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n      <span class=\\\"input-group-addon\\\">value</span>\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" ng-change=\\\"$ctrl.updateLabel(label)\\\" />\\n    </div>\\n    <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.removeLabel($index)\\\">\\n      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n    </button>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/node-labels-table/node-labels-table.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///642\n");

}),

92156:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"Node Details\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr ng-if=\\\"$ctrl.details.name\\\">\\n              <td>Node name</td>\\n              <td>{{ $ctrl.details.name }}</td>\\n            </tr>\\n            <tr>\\n              <td>Role</td>\\n              <td>{{ $ctrl.details.role }} {{ $ctrl.state.managerAddress }}</td>\\n            </tr>\\n            <tr>\\n              <td>Availability</td>\\n              <td>\\n                <node-availability-select\\n                  on-save=\\\"$ctrl.updateNodeAvailability(availability)\\\"\\n                  availability=\\\"$ctrl.details.availability\\\"\\n                  original-value=\\\"$ctrl.details.availability\\\"\\n                >\\n                </node-availability-select>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>Status</td>\\n              <td\\n                ><span class=\\\"label label-{{ $ctrl.details.status | nodestatusbadge }}\\\">{{ $ctrl.details.status }}</span></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>\\n                <div class=\\\"nopadding\\\">\\n                  <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"$ctrl.addLabel(node)\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> label </a>\\n                </div>\\n                Node Labels\\n              </td>\\n              <td></td>\\n            </tr>\\n            <tr>\\n              <td colspan=\\\"2\\\">\\n                <node-labels-table labels=\\\"$ctrl.details.nodeLabels\\\" on-changed-labels=\\\"$ctrl.updateNodeLabels(labels)\\\"></node-labels-table>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td colspan=\\\"2\\\">\\n                <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n                  <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n                    <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!$ctrl.state.hasChanges\\\" ng-click=\\\"$ctrl.saveChanges()\\\"> Apply changes </button>\\n                    <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n                      <span class=\\\"caret\\\"></span>\\n                    </button>\\n                    <ul class=\\\"dropdown-menu\\\">\\n                      <li><a ng-click=\\\"$ctrl.cancelChanges()\\\">重置变更</a></li>\\n                    </ul>\\n                  </div>\\n                </div>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///92156\n");

}),

52388:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.pullRateLimits\\\">\\n  <div class=\\\"col-sm-12 small\\\">\\n    <div ng-if=\\\"$ctrl.pullRateLimits.remaining > 0\\\" class=\\\"text-muted vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      <span ng-if=\\\"$ctrl.isAuthenticated\\\">\\n        您目前正在使用免费账户从DockerHub拉取镜像，每6小时拉取次数将被限制在200次。剩余的拉取次数。\\n        <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n      </span>\\n      <span ng-if=\\\"!$ctrl.isAuthenticated\\\">\\n        <span ng-if=\\\"$ctrl.isAdmin\\\">\\n          你目前使用匿名账户从DockerHub拉取镜像，每6小时拉取次数将被限制在100次。你可以在\\n          <a ui-sref=\\\"portainer.registries\\\">注册表视图</a>中配置DockerHub认证。剩余的拉取次数:\\n          <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n        </span>\\n        <span ng-if=\\\"!$ctrl.isAdmin\\\">\\n          你目前使用匿名账户从DockerHub拉取镜像，每6小时拉取次数将被限制在100次。请联系你的管理员，\\n\\t\\t\\t配置DockerHub的认证。剩余的拉取次数: <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n        </span>\\n      </span>\\n    </div>\\n    <div ng-if=\\\"$ctrl.pullRateLimits.remaining <= 0\\\" class=\\\"text-warning vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n      <span ng-if=\\\"$ctrl.isAuthenticated\\\">\\n        您作为免费用户的授权拉取次数配额现在已经超过了。\\n        <span ng-transclude=\\\"rateLimitExceeded\\\">您将无法从DockerHub注册表中提取任何镜像。</span>\\n      </span>\\n      <span ng-if=\\\"!$ctrl.isAuthenticated\\\">\\n        你作为匿名用户的授权拉动次数配额现在已经超过了。\\n        <span ng-transclude=\\\"rateLimitExceeded\\\">您将无法从DockerHub注册表中提取任何镜像。</span>\\n      </span>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/imageRegistry/por-image-registry-rate-limits.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///52388\n");

}),

50331:

(function(module) {

eval("var _module_exports = \"<!-- use registry -->\\n<div class=\\\"row\\\">\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\">\\n    <label for=\\\"image_registry\\\" class=\\\"control-label text-left col-sm-3 col-lg-2\\\" ng-class=\\\"$ctrl.labelClass\\\"> Registry </label>\\n    <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n      <select\\n        ng-options=\\\"registry as registry.Name for registry in $ctrl.registries track by registry.Id\\\"\\n        ng-model=\\\"$ctrl.model.Registry\\\"\\n        id=\\\"image_registry\\\"\\n        class=\\\"form-control\\\"\\n        data-cy=\\\"component-registrySelect\\\"\\n      ></select>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\">\\n    <label for=\\\"image_name\\\" ng-class=\\\"$ctrl.labelClass\\\" class=\\\"control-label text-left col-sm-3 col-lg-2 required\\\">镜像</label>\\n    <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n      <div class=\\\"input-group\\\">\\n        <span class=\\\"input-group-addon\\\" id=\\\"registry-name\\\">{{ $ctrl.displayedRegistryURL() }}</span>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          aria-describedby=\\\"registry-name\\\"\\n          uib-typeahead=\\\"image for image in $ctrl.availableImages | filter:$viewValue | limitTo:5\\\"\\n          ng-model=\\\"$ctrl.model.Image\\\"\\n          name=\\\"image_name\\\"\\n          placeholder=\\\"例如 my-image:my-tag\\\"\\n          ng-change=\\\"$ctrl.onImageChange()\\\"\\n          required\\n          data-cy=\\\"component-imageInput\\\"\\n        />\\n        <span ng-if=\\\"$ctrl.isDockerHubRegistry()\\\" class=\\\"input-group-btn\\\">\\n          <a\\n            href=\\\"https://hub.docker.com/search?type=image&q={{ $ctrl.model.Image | trimshasum | trimversiontag }}\\\"\\n            class=\\\"btn btn-default vertical-center\\\"\\n            title=\\\"在Docker Hub上搜索镜像\\\"\\n            target=\\\"_blank\\\"\\n          >\\n            <pr-icon icon=\\\"'svg-docker'\\\" size=\\\"'lg'\\\"></pr-icon> 搜索\\n          </a>\\n        </span>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- ! use registry -->\\n  <!-- don't use registry -->\\n  <div ng-if=\\\"!$ctrl.model.UseRegistry\\\">\\n    <div class=\\\"form-group\\\">\\n      <span class=\\\"small\\\">\\n        <p class=\\\"text-muted ml-4\\\"> 当使用高级模式时，镜像和资源库<b>必须是</b>公开可用的。 </p>\\n      </span>\\n      <label for=\\\"image_name\\\" ng-class=\\\"$ctrl.labelClass\\\" class=\\\"control-label text-left col-sm-3 col-lg-2 required\\\">镜像 </label>\\n      <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.model.Image\\\" name=\\\"image_name\\\" placeholder=\\\"例如 registry:port/my-image:my-tag\\\" required />\\n      </div>\\n    </div>\\n  </div>\\n  <!-- ! don't use registry -->\\n  <!-- info message -->\\n  <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.form.image_name.$invalid\\\">\\n    <div class=\\\"small\\\">\\n      <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n      <div class=\\\"col-sm-8\\\" ng-messages=\\\"$ctrl.form.image_name.$error\\\">\\n        <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"required\\\">\\n          <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon> 镜像名称是必需的。\\n          <span ng-if=\\\"$ctrl.canPull\\\">必须指定标签，否则Portainer将拉取与镜像相关的所有标签。</span>\\n        </p>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- ! info message -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center\\\" ng-if=\\\"!$ctrl.model.UseRegistry\\\" ng-click=\\\"$ctrl.model.UseRegistry = true;\\\">\\n        <pr-icon icon=\\\"'database'\\\" feather=\\\"true\\\"> </pr-icon> 简单模式\\n      </button>\\n      <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\" ng-click=\\\"$ctrl.model.UseRegistry = false;\\\">\\n        <pr-icon icon=\\\"'globe'\\\" feather=\\\"true\\\"> </pr-icon> 高级模式\\n      </button>\\n    </div>\\n  </div>\\n\\n  <div ng-transclude></div>\\n\\n  <por-image-registry-rate-limits\\n    ng-if=\\\"$ctrl.checkRateLimits && $ctrl.isDockerHubRegistry()\\\"\\n    endpoint=\\\"$ctrl.endpoint\\\"\\n    registry=\\\"$ctrl.model.Registry\\\"\\n    set-validity=\\\"$ctrl.setValidity\\\"\\n    is-authenticated=\\\"$ctrl.model.Registry.Authentication\\\"\\n    is-admin=\\\"$ctrl.isAdmin\\\"\\n    registry-id=\\\"$ctrl.model.Registry.Id\\\"\\n  >\\n  </por-image-registry-rate-limits>\\n</div>\\n\";;\nvar path = 'app/docker/components/imageRegistry/por-image-registry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///50331\n");

}),

85759:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"file\\\" feather-icon=\\\"true\\\" title-text=\\\"日志查看器设置\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"$ctrl.state.logCollection\\\"\\n                label=\\\"'自动刷新日志'\\\"\\n                tooltip=\\\"'禁用此选项可以暂停日志收集过程和自动滚动。'\\\"\\n                on-change=\\\"($ctrl.handleLogsCollectionChange)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field label-class=\\\"'col-sm-2'\\\" checked=\\\"$ctrl.state.wrapLines\\\" label=\\\"'换行符'\\\" on-change=\\\"($ctrl.handleLogsWrapLinesChange)\\\"></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"$ctrl.displayTimestamps\\\"\\n                label=\\\"'显示时间戳'\\\"\\n                on-change=\\\"($ctrl.handleDisplayTimestampsChange)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"logs_since\\\" class=\\\"col-sm-2 control-label text-left\\\"> 取 </label>\\n            <div class=\\\"col-sm-2\\\">\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.sinceTimestamp\\\" id=\\\"logs_since\\\">\\n                <option selected value=\\\"\\\">所有日志</option>\\n                <option ng-repeat=\\\"dt in $ctrl.state.availableSinceDatetime\\\" ng-value=\\\"dt.value\\\" title=\\\"{{ dt.value }}\\\">{{ dt.desc }}</option>\\n              </select>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"logs_search\\\" class=\\\"col-sm-2 control-label text-left\\\"> 搜索 </label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input class=\\\"form-control\\\" type=\\\"text\\\" name=\\\"logs_search\\\" ng-model=\\\"$ctrl.state.search\\\" ng-change=\\\"$ctrl.state.selectedLines.length = 0;\\\" placeholder=\\\"筛选...\\\" />\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"lines_count\\\" class=\\\"col-sm-2 control-label text-left\\\"> 行 </label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input class=\\\"form-control\\\" type=\\\"number\\\" name=\\\"lines_count\\\" ng-model=\\\"$ctrl.lineCount\\\" placeholder=\\\"输入行数...\\\" />\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.copySupported\\\">\\n            <label class=\\\"col-sm-2 control-label text-left\\\"> 操作 </label>\\n            <div class=\\\"col-sm-10\\\">\\n              <button class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.downloadLogs()\\\" style=\\\"margin-left: 0\\\"\\n                ><pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon> 下载日志</button\\n              >\\n              <button\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-click=\\\"$ctrl.copy()\\\"\\n                ng-disabled=\\\"($ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line) || !$ctrl.state.filteredLogs.length\\\"\\n                ><pr-icon icon=\\\"'copy'\\\" feather=\\\"true\\\" class-name=\\\"space-right\\\"></pr-icon>复制</button\\n              >\\n              <button\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-click=\\\"$ctrl.copySelection()\\\"\\n                ng-disabled=\\\"($ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line) || !$ctrl.state.filteredLogs.length || !$ctrl.state.selectedLines.length\\\"\\n                ><pr-icon icon=\\\"'copy'\\\" feather=\\\"true\\\" class-name=\\\"space-right\\\"></pr-icon>复制所选行</button\\n              >\\n              <button class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"$ctrl.clearSelection()\\\" ng-disabled=\\\"$ctrl.state.selectedLines.length === 0\\\"\\n                ><pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" class-name=\\\"space-right\\\"></pr-icon>取消选择</button\\n              >\\n              <span>\\n                <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-left: 7px; display: none\\\"></i>\\n              </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" style=\\\"height: 54%\\\">\\n  <div class=\\\"col-sm-12\\\" style=\\\"height: 100%\\\">\\n    <pre ng-class=\\\"{ wrap_lines: $ctrl.state.wrapLines }\\\" class=\\\"log_viewer\\\" scroll-glue=\\\"$ctrl.state.autoScroll\\\" force-glue>\\n      <div ng-repeat=\\\"log in $ctrl.state.filteredLogs = ($ctrl.data | filter:{ 'line': $ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"$ctrl.selectLine(log.line)\\\" ng-class=\\\"{ 'line_selected': $ctrl.state.selectedLines.indexOf(log.line) > -1 }\\\"><span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n      <div ng-if=\\\"!$ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有与 '{{ $ctrl.state.search }}' 筛选器匹配的日志行</p></div>\\n      <div ng-if=\\\"$ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有可用的日志</p></div>\\n    </pre>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/log-viewer/logViewer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///85759\n");

}),

23614:

(function(module) {

eval("var _module_exports = \"<div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Macvlan configuration </div>\\n  <!-- selector -->\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      To create a MACVLAN network you need to create a configuration, then create the network from this configuration.\\n    </span>\\n  </div>\\n  <div class=\\\"col-sm-12\\\">\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"boxselector_wrapper\\\">\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"network_config\\\" ng-model=\\\"$ctrl.data.Scope\\\" value=\\\"local\\\" />\\n          <label for=\\\"network_config\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'sliders'\\\" feather=\\\"true\\\"></pr-icon>\\n              Configuration\\n            </div>\\n            <p>I want to configure a network before deploying it</p>\\n          </label>\\n        </div>\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"network_deploy\\\" ng-model=\\\"$ctrl.data.Scope\\\" value=\\\"swarm\\\" ng-disabled=\\\"$ctrl.availableNetworks.length === 0\\\" />\\n          <label for=\\\"network_deploy\\\" ng-class=\\\"$ctrl.availableNetworks.length === 0 ? 'boxselector_disabled' : ''\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'share-2'\\\" feather=\\\"true\\\"></pr-icon>\\n              Creation\\n            </div>\\n            <p>I want to create a network from a configuration</p>\\n          </label>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !selector -->\\n\\n  <ng-form name=\\\"macvlanConfigurationForm\\\">\\n    <!-- configuration-inputs -->\\n    <div ng-show=\\\"$ctrl.data.Scope === 'local'\\\">\\n      <!-- network-card-input -->\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"network_card\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Parent network card</label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"form-control\\\"\\n            name=\\\"network_card\\\"\\n            ng-model=\\\"$ctrl.data.ParentNetworkCard\\\"\\n            placeholder=\\\"例如 eth0 or ens160 ...\\\"\\n            ng-required=\\\"$ctrl.data.Scope === 'local' && !$ctrl.data.ParentNetworkCard\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.network_card.$invalid\\\">\\n        <div class=\\\"col-sm-12 small text-warning\\\">\\n          <div ng-messages=\\\"macvlanConfigurationForm.network_card.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Parent network card must be specified.</p>\\n          </div>\\n        </div>\\n      </div>\\n      <!-- network-card-input -->\\n      <!-- nodes-selector -->\\n      <div ng-if=\\\"$ctrl.applicationState.endpoint.mode.agentProxy && $ctrl.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n        <div class=\\\"form-group\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <macvlan-nodes-datatable\\n              title-text=\\\"Select the nodes where you want to deploy the local configuration\\\"\\n              title-icon=\\\"fa-hdd\\\"\\n              dataset=\\\"$ctrl.nodes\\\"\\n              table-key=\\\"nodes\\\"\\n              state=\\\"$ctrl.data.DatatableState\\\"\\n              order-by=\\\"Hostname\\\"\\n              show-ip-address-column=\\\"$ctrl.applicationState.endpoint.apiVersion >= 1.25\\\"\\n              access-to-node-details=\\\"$ctrl.isAdmin\\\"\\n              name=\\\"node_selector\\\"\\n              ng-model=\\\"tmp\\\"\\n              ng-required=\\\"$ctrl.requiredNodeSelection()\\\"\\n            ></macvlan-nodes-datatable>\\n          </div>\\n        </div>\\n        <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.node_selector.$invalid\\\">\\n          <div class=\\\"col-sm-12 small text-warning\\\">\\n            <div ng-messages=\\\"macvlanConfigurationForm.node_selector.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> At least one node must be selected.</p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n      <!-- !nodes-selector -->\\n    </div>\\n    <!-- configuration-inputs -->\\n    <!-- deploy-inputs -->\\n    <div ng-show=\\\"$ctrl.data.Scope === 'swarm'\\\">\\n      <!-- configuration-selector -->\\n      <!-- network-input -->\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"config_network\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Configuration</label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <select\\n            class=\\\"form-control\\\"\\n            ng-options=\\\"net.Name for net in $ctrl.availableNetworks\\\"\\n            ng-model=\\\"$ctrl.data.SelectedNetworkConfig\\\"\\n            name=\\\"config_network\\\"\\n            ng-required=\\\"$ctrl.requiredConfigSelection()\\\"\\n          >\\n            <option selected disabled hidden value=\\\"\\\">选择一个网络</option>\\n          </select>\\n        </div>\\n      </div>\\n      <!-- !network-input -->\\n      <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.config_network.$invalid\\\">\\n        <div class=\\\"col-sm-12 small text-warning\\\">\\n          <div ng-messages=\\\"macvlanConfigurationForm.config_network.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Select a configuration network.</p>\\n          </div>\\n        </div>\\n      </div>\\n      <!-- !configuration-selector -->\\n    </div>\\n    <!-- deploy-inputs -->\\n  </ng-form>\\n</div>\\n\";;\nvar path = 'app/docker/components/network-macvlan-form/networkMacvlanForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///23614\n");

}),

79420:

(function(module) {

eval("var _module_exports = \"<!-- CIFS-settings -->\\n<div ng-show=\\\"$ctrl.data.useCIFS\\\">\\n  <ng-form class=\\\"form-horizontal\\\" name=\\\"cifsInformationForm\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> CIFS 设置 </div>\\n    <!-- address-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"cifs_address\\\" class=\\\"col-sm-2 col-md-1 control-label text-left required\\\">地址</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.serverAddress\\\" name=\\\"cifs_address\\\" placeholder=\\\"例如 my.cifs-server.com OR xxx.xxx.xxx.xxx\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_address.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"cifsInformationForm.cifs_address.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !address-input -->\\n    <!-- mount-point-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"cifs_share\\\" class=\\\"col-sm-2 col-md-1 control-label text-left required\\\">共享</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.share\\\" name=\\\"cifs_share\\\" placeholder=\\\"例如 /myshare\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_share.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"cifsInformationForm.cifs_share.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !mount-point-input -->\\n    <!-- version-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"cifs_version\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">CIFS 版本</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.version\\\" name=\\\"cifs_version\\\" ng-options=\\\"version for version in $ctrl.data.versions\\\" required></select>\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_version.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"cifsInformationForm.cifs_version.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !version-input -->\\n    <!-- username -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"cifs_username\\\" class=\\\"col-sm-2 col-md-1 control-label text-left required\\\">用户名</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.username\\\" name=\\\"cifs_username\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_username.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"cifsInformationForm.cifs_username.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !username -->\\n    <!-- password -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"cifs_password\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">密码</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.password\\\" name=\\\"cifs_password\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.password.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"cifsInformationForm.cifs_password.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !password -->\\n  </ng-form>\\n</div>\\n<!-- !CIFS-settings -->\\n\";;\nvar path = 'app/docker/components/volumesCIFSForm/volumesCifsForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///79420\n");

}),

93886:

(function(module) {

eval("var _module_exports = \"<!-- NFS-settings -->\\n<div ng-show=\\\"$ctrl.data.useNFS\\\">\\n  <ng-form class=\\\"form-horizontal\\\" name=\\\"nfsInformationForm\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> NFS 设置 </div>\\n    <!-- address-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"nfs_address\\\" class=\\\"col-sm-2 col-md-1 control-label text-left required\\\">地址</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.serverAddress\\\" name=\\\"nfs_address\\\" placeholder=\\\"例如 my.nfs-server.com OR xxx.xxx.xxx.xxx\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_address.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"nfsInformationForm.nfs_address.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !address-input -->\\n    <!-- version-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"nfs_version\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">NFS 版本</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.version\\\" name=\\\"nfs_version\\\" ng-options=\\\"version for version in $ctrl.data.versions\\\" required></select>\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_version.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"nfsInformationForm.nfs_version.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !version-input -->\\n    <!-- mount-point-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"nfs_mountpoint\\\" class=\\\"col-sm-2 col-md-1 control-label text-left required\\\">挂载点</label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          ng-model=\\\"$ctrl.data.mountPoint\\\"\\n          name=\\\"nfs_mountpoint\\\"\\n          placeholder=\\\"例如 /export/share, :/export/share, /share or :/share\\\"\\n          required\\n        />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_mountpoint.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"nfsInformationForm.nfs_mountpoint.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !mount-point-input -->\\n    <!-- options-input -->\\n    <div class=\\\"form-group col-md-12\\\">\\n      <label for=\\\"nfs_options\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\"\\n        >选项\\n        <portainer-tooltip message=\\\"'以逗号分隔的选项列表'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-10 col-md-11\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.options\\\" name=\\\"nfs_options\\\" placeholder=\\\"例如 rw,noatime,tcp ...\\\" required />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_options.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"nfsInformationForm.nfs_options.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !options-input -->\\n  </ng-form>\\n</div>\\n<!-- !NFS-settings -->\\n\";;\nvar path = 'app/docker/components/volumesNFSForm/volumesnfsForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///93886\n");

}),

66188:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Configs list'\\\" breadcrumbs=\\\"['Configs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <configs-datatable\\n      title-text=\\\"Configs\\\"\\n      title-icon=\\\"clipboard\\\"\\n      dataset=\\\"ctrl.configs\\\"\\n      table-key=\\\"configs\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"ctrl.removeAction\\\"\\n      refresh-callback=\\\"ctrl.getConfigs\\\"\\n    ></configs-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/configs/configs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///66188\n");

}),

20641:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create config'\\\" breadcrumbs=\\\"[{label:'Configs', link:'docker.configs'}, 'Add config']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"config_name\\\" class=\\\"col-sm-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-11\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"ctrl.formValues.Name\\\" id=\\\"config_name\\\" placeholder=\\\"例如 myConfig\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- config-data -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\" ng-if=\\\"ctrl.formValues.displayCodeEditor\\\">\\n              <web-editor-form\\n                identifier=\\\"config-creation-editor\\\"\\n                placeholder=\\\"Define or paste the content of your config here\\\"\\n                yml=\\\"false\\\"\\n                on-change=\\\"(ctrl.editorUpdate)\\\"\\n                value=\\\"ctrl.formValues.Data\\\"\\n              ></web-editor-form>\\n            </div>\\n          </div>\\n          <!-- !config-data -->\\n          <!-- labels -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12 mt-1\\\">\\n              <label class=\\\"control-label text-left space-right\\\">标签</label>\\n              <span class=\\\"label label-default interactive vertical-center space-left\\\" ng-click=\\\"ctrl.addLabel()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 增加标签\\n              </span>\\n            </div>\\n            <!-- labels-input-list -->\\n            <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n              <div ng-repeat=\\\"label in ctrl.formValues.Labels\\\" class=\\\"mt-1\\\">\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">名称</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                </div>\\n                <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">value</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                  <span class=\\\"input-group-btn\\\">\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"ctrl.removeLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !labels-input-list -->\\n          </div>\\n          <!-- !labels-->\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!ctrl.formValues.Name\\\" ng-click=\\\"ctrl.create()\\\">Create config</button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ ctrl.state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/configs/create/createconfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///20641\n");

}),

67539:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Config details'\\\" breadcrumbs=\\\"[{label:'Configs', link:'docker.configs'}, config.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"clipboard\\\" feather-icon=\\\"true\\\" title-text=\\\"Config details\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>名称</td>\\n              <td>{{ config.Name }}</td>\\n            </tr>\\n            <tr>\\n              <td>ID</td>\\n              <td>\\n                {{ config.Id }}\\n                <button authorization=\\\"DockerConfigDelete\\\" class=\\\"btn btn-xs btn-dangerlight\\\" ng-click=\\\"removeConfig(config.Id)\\\"\\n                  ><pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Delete this config</button\\n                >\\n                <button authorization=\\\"DockerConfigCreate\\\" class=\\\"btn btn-xs btn-secondary\\\" ui-sref=\\\"docker.configs.new({id: config.Id})\\\"\\n                  ><pr-icon icon=\\\"'copy'\\\" feather=\\\"true\\\"></pr-icon>Clone config</button\\n                >\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>Created</td>\\n              <td>{{ config.CreatedAt | getisodate }}</td>\\n            </tr>\\n            <tr>\\n              <td>Last updated</td>\\n              <td>{{ config.UpdatedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!(config.Labels | emptyobject)\\\">\\n              <td>标签</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in config.Labels\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"config\\\"\\n  resource-id=\\\"config.Id\\\"\\n  resource-control=\\\"config.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\" ng-if=\\\"config\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"code\\\" feather-icon=\\\"true\\\" title-text=\\\"Config content\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <code-editor identifier=\\\"config-editor\\\" yml=\\\"false\\\" read-only=\\\"true\\\" value=\\\"config.Data\\\"></code-editor>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/configs/edit/config.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///67539\n");

}),

8423:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'容器控制台'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'容器', link:'docker.containers' },\\n    { \\n      label:(container.Name | trimcontainername),\\n      link: 'docker.containers.container', \\n      linkParams:container.Id\\n    }, 'Console']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-init=\\\"autoconnectAttachView()\\\" ng-show=\\\"loaded\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"terminal\\\" feather-icon=\\\"true\\\" title-text=\\\"Attach\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"small text-warning\\\" ng-if=\\\"!container.Config.OpenStdin\\\">\\n          <p>\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n            没有设置交互式标志。你可能无法正常使用控制台。\\n          </p>\\n        </div>\\n\\n        <div class=\\\"small text-warning\\\" ng-if=\\\"!container.Config.Tty\\\">\\n          <p>\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n            TTY-flag 没有设置。你可能无法正常使用控制台。\\n          </p>\\n        </div>\\n\\n        <div class=\\\"small text-warning\\\" ng-hide=\\\"container.State.Running\\\">\\n          <p>\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n            容器没有运行。\\n          </p>\\n        </div>\\n\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-primary\\\"\\n          ng-disabled=\\\"state === states.connecting || !container.State.Running\\\"\\n          ng-click=\\\"state == states.disconnected ? connectAttach() : disconnect()\\\"\\n        >\\n          <span ng-show=\\\"state === states.disconnected\\\">附在容器上</span>\\n          <span ng-show=\\\"state === states.connected\\\">断开</span>\\n          <span ng-show=\\\"state === states.connecting\\\">附上中...</span>\\n        </button>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <div id=\\\"terminal-container\\\" class=\\\"terminal-container\\\"></div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/console/attach.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///8423\n");

}),

98757:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'容器控制台'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'容器', link:'docker.containers' },\\n    { \\n      label:(container.Name | trimcontainername),\\n      link: 'docker.containers.container', \\n      linkParams:container.Id\\n    }, 'Console']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-init=\\\"initView()\\\" ng-show=\\\"loaded\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"terminal\\\" feather-icon=\\\"true\\\" title-text=\\\"执行\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div ng-if=\\\"state === states.disconnected\\\">\\n            <!-- command-list -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"command\\\" class=\\\"col-lg-1 text-left col-sm-2 control-label\\\">命令</label>\\n              <div class=\\\"col-lg-11 col-sm-10\\\">\\n                <div class=\\\"input-group\\\" ng-if=\\\"!formValues.isCustomCommand\\\">\\n                  <span class=\\\"input-group-addon\\\">\\n                    <i class=\\\"fab fa-linux\\\" aria-hidden=\\\"true\\\" ng-if=\\\"imageOS == 'linux'\\\"></i>\\n                    <i class=\\\"fab fa-windows\\\" aria-hidden=\\\"true\\\" ng-if=\\\"imageOS == 'windows'\\\"></i>\\n                  </span>\\n                  <select class=\\\"form-control\\\" ng-model=\\\"formValues.command\\\" id=\\\"command\\\">\\n                    <option value=\\\"ash\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/ash</option>\\n                    <option value=\\\"bash\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/bash</option>\\n                    <option value=\\\"sh\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/sh</option>\\n                    <option value=\\\"powershell\\\" ng-if=\\\"imageOS == 'windows'\\\">powershell</option>\\n                    <option value=\\\"cmd.exe\\\" ng-if=\\\"imageOS == 'windows'\\\">cmd.exe</option>\\n                    <option ng-repeat=\\\"command in containerCommands\\\" value=\\\"{{ command.command }}\\\">{{ command.title }}: {{ command.command }}</option>\\n                  </select>\\n                </div>\\n                <input class=\\\"form-control\\\" ng-if=\\\"formValues.isCustomCommand\\\" type=\\\"text\\\" name=\\\"custom-command\\\" ng-model=\\\"formValues.customCommand\\\" placeholder=\\\"例如 ps aux\\\" />\\n              </div>\\n            </div>\\n            <!-- !command-list -->\\n            <div class=\\\"form-group col-lg-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-1'\\\"\\n                checked=\\\"formValues.isCustomCommand\\\"\\n                label=\\\"'使用自定义命令'\\\"\\n                on-change=\\\"(handleIsCustomCommandChange)\\\"\\n              ></por-switch-field>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"col-lg-1 text-left col-sm-2 control-label\\\">\\n                用户\\n                <portainer-tooltip message=\\\"'格式为： user, user:group, uid 或 uid:gid'\\\"></portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-lg-11 col-sm-10\\\">\\n                <input class=\\\"form-control\\\" type=\\\"text\\\" ng-model=\\\"formValues.user\\\" placeholder=\\\"root\\\" />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-disabled=\\\"!container.State.Running\\\" ng-click=\\\"connectExec()\\\">\\n                  <span>连接</span>\\n                </button>\\n                <span class=\\\"small text-danger\\\" ng-hide=\\\"container.State.Running\\\">\\n                  <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i>\\n                  容器没有运行。\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <div ng-if=\\\"state !== states.disconnected\\\">\\n            <label\\n              >以 <code>{{ ::formValues.user || '默认用户' }}</code> 的身份执行到容器中，使用命令\\n              <code>{{ formValues.isCustomCommand ? formValues.customCommand : formValues.command }}</code></label\\n            >\\n            <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"disconnect()\\\">\\n              <span ng-show=\\\"state === states.connected\\\">断开连接</span>\\n              <span ng-show=\\\"state === states.connecting\\\">连接中...</span>\\n            </button>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <div id=\\\"terminal-container\\\" class=\\\"terminal-container\\\"></div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/console/exec.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98757\n");

}),

92091:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建容器'\\\" breadcrumbs=\\\"[{label:'容器', link:'docker.containers'}, '添加容器']\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Caution\\\" ng-if=\\\"state.mode == 'duplicate'\\\">\\n  <span class=\\\"small\\\">\\n    <p class=\\\"text-muted\\\">\\n      <i class=\\\"fa fa-exclamation-circle orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n      如果改变了镜像，新的容器可能无法启动，而之前容器的设置又不兼容。常见的原因包括入口、cmd或由镜像设置的\\n      <a href=\\\"http://portainer.readthedocs.io/en/stable/agent.html\\\" target=\\\"_blank\\\">其他设置</a> .\\n    </p>\\n  </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"container_name\\\" class=\\\"col-sm-2 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.name\\\" id=\\\"container_name\\\" placeholder=\\\"例如 myContainer\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 镜像配置 </div>\\n          <div ng-if=\\\"!formValues.RegistryModel.Registry && fromContainer\\\">\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n            <span class=\\\"small text-danger\\\" style=\\\"margin-left: 5px\\\">\\n              <code>{{ config.Image }}</code> 镜像的Docker注册表没有在Portainer中注册，你将无法创建一个容器。请先注册该注册表。\\n            </span>\\n          </div>\\n          <div ng-if=\\\"formValues.RegistryModel.Registry || !fromContainer\\\">\\n            <!-- image-and-registry -->\\n            <por-image-registry\\n              model=\\\"formValues.RegistryModel\\\"\\n              ng-if=\\\"formValues.RegistryModel.Registry\\\"\\n              auto-complete=\\\"true\\\"\\n              label-class=\\\"col-sm-1\\\"\\n              input-class=\\\"col-sm-11\\\"\\n              endpoint=\\\"endpoint\\\"\\n              is-admin=\\\"isAdmin\\\"\\n              check-rate-limits=\\\"formValues.alwaysPull\\\"\\n              on-image-change=\\\"onImageNameChange()\\\"\\n              set-validity=\\\"setPullImageValidity\\\"\\n            >\\n              <!-- always-pull -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <por-switch-field\\n                    name=\\\"'alwaysPull'\\\"\\n                    label-class=\\\"'col-sm-2'\\\"\\n                    checked=\\\"formValues.alwaysPull\\\"\\n                    disabled=\\\"!state.pullImageValidity\\\"\\n                    label=\\\"'始终拉取镜像'\\\"\\n                    on-change=\\\"(onAlwaysPullChange)\\\"\\n                    tooltip=\\\"'启用后，Portainer会在创建容器前自动尝试拉取指定的镜像。'\\\"\\n                  ></por-switch-field>\\n                </div>\\n              </div>\\n              <!-- !always-pull -->\\n            </por-image-registry>\\n            <!-- !image-and-registry -->\\n          </div>\\n\\n          <!-- create-webhook -->\\n          <div ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Webhooks </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  feature-id=\\\"'container-webhook'\\\"\\n                  label-class=\\\"'col-sm-2'\\\"\\n                  label=\\\"'创建容器webhook'\\\"\\n                  tooltip=\\\"'创建一个webhook（或回调URI）来自动重新创建这个容器。向这个回调URI发送一个POST请求（不需要任何认证）将拉出相关图像的最新版本并重新创建这个容器。'\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !create-webhook  -->\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 网络端口配置 </div>\\n          <!-- publish-exposed-ports -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"config.HostConfig.PublishAllPorts\\\"\\n                label=\\\"'将所有暴露的网络端口发布为随机主机端口'\\\"\\n                on-change=\\\"(handlePublishAllPortsChange)\\\"\\n                tooltip=\\\"'启用后，Portainer会让Docker自动将主机上的一个随机端口映射到镜像Docker文件中定义的每个端口。'\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !publish-exposed-ports -->\\n          <!-- port-mapping -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <label class=\\\"control-label text-left\\\">\\n                手动发布网络端口\\n                <portainer-tooltip\\n                  message=\\\"'当主机上的端口范围和容器上的单一端口被指定时，Docker将在定义的范围内随机选择一个可用的端口，并将其转发到容器端口。'\\\"\\n                ></portainer-tooltip>\\n              </label>\\n              <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPortBinding()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 发布新的网络端口\\n              </span>\\n            </div>\\n            <!-- port-mapping-input-list -->\\n            <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n              <div ng-repeat=\\\"portBinding in config.HostConfig.PortBindings\\\" style=\\\"margin-top: 2px\\\">\\n                <!-- host-port -->\\n                <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">主机</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.hostPort\\\" placeholder=\\\"例如 80, 80-88, ip:80 or ip:80-88 (optional)\\\" />\\n                </div>\\n                <!-- !host-port -->\\n                <span style=\\\"margin: 0 10px 0 10px\\\">\\n                  <i class=\\\"fa fa-long-arrow-alt-right\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n                <!-- container-port -->\\n                <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">容器</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.containerPort\\\" placeholder=\\\"例如 80 or 80-88\\\" />\\n                </div>\\n                <!-- !container-port -->\\n                <!-- protocol-actions -->\\n                <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n                  <div class=\\\"btn-group btn-group-sm\\\">\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n                  </div>\\n                  <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                  </button>\\n                </div>\\n                <!-- !protocol-actions -->\\n              </div>\\n            </div>\\n            <!-- !port-mapping-input-list -->\\n          </div>\\n          <!-- !port-mapping -->\\n          <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n            <!-- node-selection -->\\n            <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n            <!-- !node-selection -->\\n          </div>\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\" resource-control=\\\"fromContainer.ResourceControl\\\" ng-if=\\\"fromContainer\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <!-- autoremove -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"config.HostConfig.AutoRemove\\\"\\n                label=\\\"'自动删除'\\\"\\n                on-change=\\\"(handleAutoRemoveChange)\\\"\\n                tooltip=\\\"'启用后，Portainer将在退出时自动删除容器。当你想只使用一次容器时，这很有用。'\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !autoremove -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)\\n                   || (fromContainer.IsPortainer && fromContainer.Name === '/' + config.name)\\\"\\n                ng-click=\\\"create()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">部署容器</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">部署进行中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-cog\\\" title-text=\\\"高级容器设置\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <ul class=\\\"nav nav-pills nav-justified\\\">\\n          <li class=\\\"active interactive\\\"><a data-target=\\\"#command\\\" data-toggle=\\\"tab\\\">命令 & 日志</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#volumes\\\" data-toggle=\\\"tab\\\">存储卷</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#network\\\" data-toggle=\\\"tab\\\">网络</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#env\\\" data-toggle=\\\"tab\\\">环境变量</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#labels\\\" data-toggle=\\\"tab\\\">标签</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#restart-policy\\\" data-toggle=\\\"tab\\\">重启策略</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#runtime-resources\\\" ng-mouseup=\\\"refreshSlider()\\\" data-toggle=\\\"tab\\\">运行时 & 资源</a></li>\\n          <li ng-if=\\\"areContainerCapabilitiesEnabled\\\" class=\\\"interactive\\\"><a data-target=\\\"#container-capabilities\\\" data-toggle=\\\"tab\\\">容器能力</a></li>\\n        </ul>\\n        <!-- tab-content -->\\n        <div class=\\\"tab-content\\\">\\n          <!-- tab-command -->\\n          <div class=\\\"tab-pane active\\\" id=\\\"command\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- command-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_command\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">命令</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <div class=\\\"input-group\\\">\\n                    <div class=\\\"input-group-btn\\\">\\n                      <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.CmdMode\\\" uib-btn-radio=\\\"'default'\\\" style=\\\"margin-left: 0px\\\"> 默认</label>\\n                      <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.CmdMode\\\" uib-btn-radio=\\\"'override'\\\">覆盖</label>\\n                    </div>\\n                    <input\\n                      type=\\\"text\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"config.Cmd\\\"\\n                      ng-disabled=\\\"formValues.CmdMode === 'default'\\\"\\n                      id=\\\"container_command\\\"\\n                      placeholder=\\\"例如 '-logtostderr' '--housekeeping_interval=5s' or /usr/bin/nginx -t -c /mynginx.conf\\\"\\n                    />\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !command-input -->\\n              <!-- entrypoint-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_entrypoint\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">\\n                  环境\\n                  <portainer-tooltip\\n                    message=\\\"'当容器入口点作为命令字段的一部分被输入时，将入口点设置为覆盖模式并留空，否则将恢复为默认。'\\\"\\n                  ></portainer-tooltip>\\n                </label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <div class=\\\"input-group\\\">\\n                    <div class=\\\"input-group-btn\\\">\\n                      <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.EntrypointMode\\\" uib-btn-radio=\\\"'default'\\\" style=\\\"margin-left: 0px\\\"> 默认</label>\\n                      <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.EntrypointMode\\\" uib-btn-radio=\\\"'override'\\\">覆盖</label>\\n                    </div>\\n                    <input\\n                      type=\\\"text\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"config.Entrypoint\\\"\\n                      ng-disabled=\\\"formValues.EntrypointMode === 'default'\\\"\\n                      id=\\\"container_entrypoint\\\"\\n                      placeholder=\\\"例如 /bin/sh -c\\\"\\n                    />\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !entrypoint-input -->\\n              <!-- workdir-user-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_workingdir\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">工作目录</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.WorkingDir\\\" id=\\\"container_workingdir\\\" placeholder=\\\"例如 /myapp\\\" />\\n                </div>\\n                <label for=\\\"container_user\\\" class=\\\"col-sm-1 control-label text-left\\\">用户</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.User\\\" id=\\\"container_user\\\" placeholder=\\\"例如 nginx\\\" />\\n                </div>\\n              </div>\\n              <!-- !workdir-user-input -->\\n              <!-- console -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_console\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">控制台</label>\\n                <div class=\\\"col-sm-10 col-lg-11\\\">\\n                  <div class=\\\"col-sm-4\\\">\\n                    <label class=\\\"radio-inline\\\">\\n                      <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"both\\\" />\\n                      Interactive & TTY <span class=\\\"small text-muted\\\">(-i -t)</span>\\n                    </label>\\n                  </div>\\n                  <div class=\\\"col-sm-4\\\">\\n                    <label class=\\\"radio-inline\\\">\\n                      <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"interactive\\\" />\\n                      Interactive <span class=\\\"small text-muted\\\">(-i)</span>\\n                    </label>\\n                  </div>\\n                </div>\\n                <div class=\\\"col-sm-offset-2 col-sm-10 col-lg-offset-1 col-lg-11\\\">\\n                  <div class=\\\"col-sm-4\\\">\\n                    <label class=\\\"radio-inline\\\">\\n                      <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"tty\\\" />\\n                      TTY <span class=\\\"small text-muted\\\">(-t)</span>\\n                    </label>\\n                  </div>\\n                  <div class=\\\"col-sm-4\\\">\\n                    <label class=\\\"radio-inline\\\">\\n                      <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"none\\\" />\\n                      None\\n                    </label>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !console -->\\n\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 日志 </div>\\n              <!-- logging-driver -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"log-driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">驱动</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <select class=\\\"form-control\\\" ng-model=\\\"formValues.LogDriverName\\\" id=\\\"log-driver\\\">\\n                    <option selected value=\\\"\\\">默认日志记录驱动</option>\\n                    <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n                    <option value=\\\"none\\\">none</option>\\n                  </select>\\n                </div>\\n                <div class=\\\"col-sm-5\\\">\\n                  <p class=\\\"small text-muted\\\">\\n                    将覆盖默认的docker daemon驱动的日志驱动。\\n                    如果你不想覆盖它，请选择默认日志驱动。支持的日志驱动可以 <a href=\\\"https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers\\\" target=\\\"_blank\\\">在Docker文档</a>中找到。\\n                  </p>\\n                </div>\\n              </div>\\n              <!-- !logging-driver -->\\n              <!-- logging-opts -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">选项 <portainer-tooltip\\n                      position=\\\"'top'\\\"\\n                      message=\\\"'除非选择了除none或默认之外的驱动程序，否则添加按钮将被禁用。选项是特定于所选驱动程序的，请参考驱动程序文档。'\\\"\\n                    ></portainer-tooltip>\\n                  </label>\\n                  <span\\n                    class=\\\"label label-default interactive\\\"\\n                    style=\\\"margin-left: 10px\\\"\\n                    ng-click=\\\"!formValues.LogDriverName || formValues.LogDriverName === 'none' || addLogDriverOpt(formValues.LogDriverName)\\\"\\n                  >\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 增加日志驱动选项\\n                  </span>\\n                </div>\\n                <!-- logging-opts-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"opt in formValues.LogDriverOpts\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">option</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.name\\\" placeholder=\\\"例如 FOO\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- logging-opts-input-list -->\\n              </div>\\n              <!-- !logging-opts -->\\n            </form>\\n          </div>\\n          <!-- !tab-command -->\\n          <!-- tab-volume -->\\n          <div class=\\\"tab-pane\\\" id=\\\"volumes\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- volumes -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">存储卷映射</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addVolume()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加存储卷映射\\n                  </span>\\n                </div>\\n                <!-- volumes-input-list -->\\n                <div class=\\\"form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"volume in formValues.Volumes\\\">\\n                    <!-- volume-line1 -->\\n                    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                      <!-- container-path -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\">\\n                        <span class=\\\"input-group-addon\\\">容器</span>\\n                        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.containerPath\\\" placeholder=\\\"例如 /path/in/container\\\" />\\n                      </div>\\n                      <!-- !container-path -->\\n                      <!-- volume-type -->\\n                      <div class=\\\"input-group col-sm-5\\\" style=\\\"margin-left: 5px\\\">\\n                        <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"allowBindMounts\\\">\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.name = ''\\\">存储卷</label>\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.name = ''\\\">绑定</label>\\n                        </div>\\n                        <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n                          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                        </button>\\n                      </div>\\n                      <!-- !volume-type -->\\n                    </div>\\n                    <!-- !volume-line1 -->\\n                    <!-- volume-line2 -->\\n                    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 5px\\\">\\n                      <i class=\\\"fa fa-long-arrow-alt-right\\\" aria-hidden=\\\"true\\\"></i>\\n                      <!-- volume -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'volume'\\\">\\n                        <span class=\\\"input-group-addon\\\">存储卷</span>\\n                        <select class=\\\"form-control\\\" ng-model=\\\"volume.name\\\">\\n                          <option selected disabled hidden value=\\\"\\\">选择存储卷</option>\\n                          <option ng-repeat=\\\"vol in availableVolumes\\\" ng-value=\\\"vol.Name\\\">{{ vol.Name | truncate: 30 }} - {{ vol.Driver | truncate: 30 }}</option>\\n                        </select>\\n                      </div>\\n                      <!-- !volume -->\\n                      <!-- bind -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'bind'\\\">\\n                        <span class=\\\"input-group-addon\\\">主机</span>\\n                        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.name\\\" placeholder=\\\"例如 /path/on/host\\\" />\\n                      </div>\\n                      <!-- !bind -->\\n                      <!-- read-only -->\\n                      <div class=\\\"input-group input-group-sm col-sm-5\\\" style=\\\"margin-left: 5px\\\">\\n                        <div class=\\\"btn-group btn-group-sm\\\">\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readOnly\\\" uib-btn-radio=\\\"false\\\">读写</label>\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readOnly\\\" uib-btn-radio=\\\"true\\\">只读</label>\\n                        </div>\\n                      </div>\\n                      <!-- !read-only -->\\n                    </div>\\n                    <!-- !volume-line2 -->\\n                  </div>\\n                </div>\\n                <!-- !volumes-input-list -->\\n              </div>\\n            </form>\\n            <!-- !volumes -->\\n          </div>\\n          <!-- !tab-volume -->\\n          <!-- tab-network -->\\n          <div class=\\\"tab-pane\\\" id=\\\"network\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <div class=\\\"form-group\\\" ng-if=\\\"globalNetworkCount === 0 && applicationState.endpoint.mode.provider !== 'DOCKER_SWARM_MODE'\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <span class=\\\"small text-muted\\\">你没有任何共享网络。 请到 <a ui-sref=\\\"docker.networks\\\">网络视图</a> 中创建一个。</span>\\n                </div>\\n              </div>\\n              <!-- network-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_network\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">网络</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <select\\n                    class=\\\"form-control\\\"\\n                    ng-options=\\\"net.Name as net.Name for net in availableNetworks\\\"\\n                    ng-model=\\\"config.HostConfig.NetworkMode\\\"\\n                    id=\\\"container_network\\\"\\n                    ng-change=\\\"resetNetworkConfig()\\\"\\n                  >\\n                    <option selected disabled hidden value=\\\"\\\">选择一个网络</option>\\n                  </select>\\n                </div>\\n              </div>\\n              <!-- !network-input -->\\n              <!-- container-name-input -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"config.HostConfig.NetworkMode == 'container'\\\">\\n                <label for=\\\"container_network_container\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">容器</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <select ng-options=\\\"container|containername for container in runningContainers\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.NetworkContainer\\\">\\n                    <option selected disabled hidden value=\\\"\\\">选择容器</option>\\n                  </select>\\n                </div>\\n              </div>\\n              <!-- !container-name-input -->\\n              <!-- hostname-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_hostname\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">主机名</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Hostname\\\" id=\\\"container_hostname\\\" placeholder=\\\"例如 web01\\\" />\\n                </div>\\n              </div>\\n              <!-- !hostname-input -->\\n              <!-- domainname-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_domainname\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">域名</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Domainname\\\" id=\\\"container_domainname\\\" placeholder=\\\"例如 example.com\\\" />\\n                </div>\\n              </div>\\n              <!-- !domainname -->\\n              <!-- mac-address-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_macaddress\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Mac 地址</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MacAddress\\\" id=\\\"container_macaddress\\\" placeholder=\\\"例如 12-34-56-78-9a-bc\\\" />\\n                </div>\\n              </div>\\n              <!-- !mac-address-input -->\\n              <!-- ipv4-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_ipv4\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IPv4 地址</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPv4\\\" id=\\\"container_ipv4\\\" placeholder=\\\"例如 172.20.0.7\\\" />\\n                </div>\\n              </div>\\n              <!-- !ipv4-input -->\\n              <!-- ipv6-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_ipv6\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IPv6 地址</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPv6\\\" id=\\\"container_ipv6\\\" placeholder=\\\"例如 a:b:c:d::1234\\\" />\\n                </div>\\n              </div>\\n              <!-- !ipv6-input -->\\n              <!-- dns-primary-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_dns_primary\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">主 DNS 服务器</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.DnsPrimary\\\" id=\\\"container_dns_primary\\\" placeholder=\\\"例如 1.1.1.1, 2606:4700:4700::1111\\\" />\\n                </div>\\n              </div>\\n              <!-- !dns-primary-input -->\\n              <!-- dns-secondary-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_dns_secondary\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">辅 DNS 服务器</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.DnsSecondary\\\" id=\\\"container_dns_secondary\\\" placeholder=\\\"例如 1.0.0.1, 2606:4700:4700::1001\\\" />\\n                </div>\\n              </div>\\n              <!-- !dns-secondary-input -->\\n              <!-- extra-hosts-variables -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">主机文件条目</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addExtraHost()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加附加条目\\n                  </span>\\n                </div>\\n                <!-- extra-hosts-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"variable in formValues.ExtraHosts\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"variable.value\\\" placeholder=\\\"例如 host:IP\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeExtraHost($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !extra-hosts-input-list -->\\n              </div>\\n              <!-- !extra-hosts-variables -->\\n            </form>\\n          </div>\\n          <!-- !tab-network -->\\n          <!-- tab-labels -->\\n          <div class=\\\"tab-pane\\\" id=\\\"labels\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- labels -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">标签</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addLabel()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 增加标签\\n                  </span>\\n                </div>\\n                <!-- labels-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"label in formValues.Labels\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">名称</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !labels-input-list -->\\n              </div>\\n              <!-- !labels-->\\n            </form>\\n          </div>\\n          <!-- !tab-labels -->\\n          <!-- tab-env -->\\n          <div class=\\\"tab-pane\\\" id=\\\"env\\\">\\n            <environment-variables-panel\\n              ng-model=\\\"formValues.Env\\\"\\n              explanation=\\\"这些值将在部署时应用于容器\\\"\\n              on-change=\\\"(handleEnvVarChange)\\\"\\n            ></environment-variables-panel>\\n          </div>\\n          <!-- !tab-env -->\\n          <!-- tab-restart-policy -->\\n          <div class=\\\"tab-pane\\\" id=\\\"restart-policy\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <label class=\\\"control-label text-left\\\"> 重启策略 </label>\\n                  <div class=\\\"btn-group btn-group-sm\\\" style=\\\"margin-left: 20px\\\">\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'no'\\\"> 从不 </label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'always'\\\"> 总是重启 </label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'on-failure'\\\"> 非正常退出 </label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'unless-stopped'\\\"> 排除崩溃总是重启 </label>\\n                  </div>\\n                </div>\\n              </div>\\n            </form>\\n          </div>\\n          <!-- !tab-restart-policy -->\\n          <!-- tab-runtime-resources -->\\n          <div class=\\\"tab-pane\\\" id=\\\"runtime-resources\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> Runtime </div>\\n              <!-- privileged-mode -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"isAdmin || allowPrivilegedMode\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <por-switch-field\\n                    label-class=\\\"'col-sm-2'\\\"\\n                    checked=\\\"config.HostConfig.Privileged\\\"\\n                    label=\\\"'特权模式'\\\"\\n                    on-change=\\\"(handlePrivilegedChange)\\\"\\n                  ></por-switch-field>\\n                </div>\\n              </div>\\n              <!-- !privileged-mode -->\\n              <!-- init -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.37\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <por-switch-field label-class=\\\"'col-sm-2'\\\" checked=\\\"config.HostConfig.Init\\\" label=\\\"'Init'\\\" on-change=\\\"(handleInitChange)\\\"></por-switch-field>\\n                </div>\\n              </div>\\n              <!-- !init -->\\n              <!-- runtimes -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_runtime\\\" class=\\\"col-sm-1 control-label text-left\\\">Runtime</label>\\n                <div class=\\\"col-sm-11\\\">\\n                  <select class=\\\"form-control\\\" ng-model=\\\"config.HostConfig.Runtime\\\" id=\\\"container_runtime\\\" ng-options=\\\"runtime for runtime in availableRuntimes\\\">\\n                    <option selected value=\\\"\\\">默认</option>\\n                  </select>\\n                </div>\\n              </div>\\n              <!-- !runtimes -->\\n            </form>\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\" name=\\\"resourceForm\\\">\\n              <!-- devices -->\\n              <div ng-if=\\\"showDeviceMapping\\\" class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">设备</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addDevice()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加设备\\n                  </span>\\n                </div>\\n                <!-- devices-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"device in config.HostConfig.Devices\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">主机</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"device.pathOnHost\\\" placeholder=\\\"例如 /dev/tty0\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">容器</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"device.pathInContainer\\\" placeholder=\\\"例如 /dev/tty0\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeDevice($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !devices-input-list -->\\n              </div>\\n              <!-- !devices-->\\n              <!-- sysctls -->\\n              <div ng-if=\\\"showSysctls\\\" class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">Sysctls</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addSysctl()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加 sysctl\\n                  </span>\\n                </div>\\n                <!-- sysctls-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"sysctl in formValues.Sysctls\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">名称</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"sysctl.name\\\" placeholder=\\\"例如 FOO\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"sysctl.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeSysctl($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !sysctls-input-list -->\\n              </div>\\n              <!-- !sysctls -->\\n              <!-- shm-size-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"shm-size\\\" class=\\\"col-sm-2 control-label text-left\\\"> 共享内存大小 </label>\\n                <div class=\\\"col-sm-2\\\">\\n                  <input type=\\\"number\\\" min=\\\"1\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.ShmSize\\\" id=\\\"shm-size\\\" />\\n                </div>\\n                <div class=\\\"col-sm-2\\\">\\n                  <p class=\\\"small text-muted mt-2\\\"> /dev/shm 的大小 (<b>MB</b>) </p>\\n                </div>\\n              </div>\\n              <!-- !shm-size-input -->\\n              <!-- #region GPU -->\\n              <div class=\\\"col-sm-12 form-section-title\\\"> GPU </div>\\n\\n              <gpu\\n                ng-if=\\\"applicationState.endpoint.apiVersion >= 1.4\\\"\\n                values=\\\"formValues.GPU\\\"\\n                on-change=\\\"(onGpuChange)\\\"\\n                gpus=\\\"endpoint.Gpus\\\"\\n                used-gpus=\\\"gpuUseList\\\"\\n                used-all-gpus=\\\"gpuUseAll\\\"\\n              >\\n              </gpu>\\n\\n              <!-- #endregion GPU -->\\n              <div ng-class=\\\"{ 'edit-resources': state.mode == 'duplicate' }\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 资源 </div>\\n                <!-- memory-reservation-input -->\\n                <div class=\\\"form-group flex\\\">\\n                  <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left vertical-center\\\"> 内存保留 (MB) </label>\\n                  <div class=\\\"col-sm-6\\\">\\n                    <slider\\n                      on-change=\\\"(handleResourceChange)\\\"\\n                      model=\\\"formValues.MemoryReservation\\\"\\n                      floor=\\\"0\\\"\\n                      ceil=\\\"state.sliderMaxMemory\\\"\\n                      step=\\\"256\\\"\\n                      ng-if=\\\"state.sliderMaxMemory\\\"\\n                    ></slider>\\n                  </div>\\n                  <div class=\\\"col-sm-2 vertical-center\\\">\\n                    <input\\n                      name=\\\"memory_reservation\\\"\\n                      type=\\\"number\\\"\\n                      min=\\\"0\\\"\\n                      max=\\\"{{ state.sliderMaxMemory }}\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"formValues.MemoryReservation\\\"\\n                      id=\\\"memory-reservation\\\"\\n                      required\\n                    />\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-show=\\\"resourceForm.memory_reservation.$invalid\\\">\\n                  <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                  <div class=\\\"col-sm-8 small text-muted\\\">\\n                    <div ng-messages=\\\"resourceForm.memory-reservation.$error\\\">\\n                      <p class=\\\"vertical-center text-warning\\\">\\n                        <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 值必须介于0和 {{ state.sliderMaxMemory }} 之间.\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- !memory-reservation-input -->\\n                <!-- memory-limit-input -->\\n                <div class=\\\"form-group flex\\\">\\n                  <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left vertical-center\\\"> 内存限制 (MB) </label>\\n                  <div class=\\\"col-sm-6\\\">\\n                    <slider\\n                      on-change=\\\"(handleResourceChange)\\\"\\n                      model=\\\"formValues.MemoryLimit\\\"\\n                      floor=\\\"0\\\"\\n                      ceil=\\\"state.sliderMaxMemory\\\"\\n                      step=\\\"256\\\"\\n                      ng-if=\\\"state.sliderMaxMemory\\\"\\n                    ></slider>\\n                  </div>\\n                  <div class=\\\"col-sm-2 vertical-center\\\">\\n                    <input\\n                      name=\\\"memory_Limit\\\"\\n                      type=\\\"number\\\"\\n                      min=\\\"0\\\"\\n                      max=\\\"{{ state.sliderMaxMemory }}\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"formValues.MemoryLimit\\\"\\n                      id=\\\"memory-limit\\\"\\n                      required\\n                    />\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-show=\\\"resourceForm.memory_Limit.$invalid\\\">\\n                  <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                  <div class=\\\"col-sm-8 small text-muted\\\">\\n                    <div ng-messages=\\\"resourceForm.memory-limit.$error\\\">\\n                      <p class=\\\"vertical-center text-warning\\\">\\n                        <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 值必须介于0和 {{ state.sliderMaxMemory }} 之间.\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- !memory-limit-input -->\\n                <!-- cpu-limit-input -->\\n                <div class=\\\"form-group flex\\\">\\n                  <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left vertical-center\\\"> 最大CPU使用量 </label>\\n                  <div class=\\\"col-sm-8\\\">\\n                    <slider\\n                      on-change=\\\"(handleResourceChange)\\\"\\n                      model=\\\"formValues.CpuLimit\\\"\\n                      floor=\\\"0\\\"\\n                      ceil=\\\"state.sliderMaxCpu\\\"\\n                      step=\\\"0.1\\\"\\n                      precision=\\\"2\\\"\\n                      ng-if=\\\"state.sliderMaxCpu\\\"\\n                    ></slider>\\n                  </div>\\n                </div>\\n                <!-- !cpu-limit-input -->\\n\\n                <!-- update-limit-btn -->\\n                <div class=\\\"form-group\\\" ng-if=\\\"state.mode == 'duplicate'\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <button\\n                      type=\\\"button\\\"\\n                      class=\\\"btn btn-primary btn-sm\\\"\\n                      ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)\\\"\\n                      ng-click=\\\"update()\\\"\\n                      button-spinner=\\\"state.actionInProgress\\\"\\n                    >\\n                      <span ng-hide=\\\"state.actionInProgress\\\">更新限制</span>\\n                      <span ng-show=\\\"state.actionInProgress\\\">正在更新中...</span>\\n                    </button>\\n                  </div>\\n                  <div class=\\\"col-sm-12\\\" ng-if=\\\"state.settingUnlimitedResources\\\">\\n                    <p class=\\\"text-muted mr-4\\\">\\n                      <i class=\\\"fa fa-exclamation-circle text-warning mt-10\\\" aria-hidden=\\\"true\\\"></i> 将任何资源值更新为“unlimited”将重新部署此容器。\\n                    </p>\\n                  </div>\\n                </div>\\n                <!-- !update-limit-btn -->\\n              </div>\\n            </form>\\n          </div>\\n          <!-- !tab-runtime-resources -->\\n          <!-- tab-container-capabilities -->\\n          <div class=\\\"tab-pane\\\" id=\\\"container-capabilities\\\">\\n            <container-capabilities capabilities=\\\"formValues.capabilities\\\"></container-capabilities>\\n          </div>\\n          <!-- !tab-container-capabilities -->\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/create/createcontainer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///92091\n");

}),

5744:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'容器详情'\\\" breadcrumbs=\\\"[{label:'容器', link:'docker.containers'}, (container.Name | trimcontainername)]\\\"> </page-header>\\n\\n<div\\n  class=\\\"row\\\"\\n  authorization=\\\"DockerContainerStart, DockerContainerStop, DockerContainerKill, DockerContainerRestart, DockerContainerPause, DockerContainerUnpause, DockerContainerDelete, DockerContainerCreate\\\"\\n>\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"settings\\\" feather-icon=\\\"true\\\" title-text=\\\"操作\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"padding\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n          <button authorization=\\\"DockerContainerStart\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"start()\\\" ng-disabled=\\\"container.State.Running || container.IsPortainer\\\">\\n            <pr-icon icon=\\\"'play'\\\" feather=\\\"true\\\" class-name=\\\"'feather'\\\"></pr-icon>\\n            启动\\n          </button>\\n          <button authorization=\\\"DockerContainerStop\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"stop()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\">\\n            <pr-icon icon=\\\"'square'\\\" feather=\\\"true\\\"></pr-icon>\\n            停止\\n          </button>\\n          <button authorization=\\\"DockerContainerKill\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"kill()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\">\\n            <i class=\\\"fa fa-bomb space-right\\\" aria-hidden=\\\"true\\\"></i>终止\\n          </button>\\n          <button authorization=\\\"DockerContainerRestart\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"restart()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\"\\n            ><i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i>重启</button\\n          >\\n          <button\\n            authorization=\\\"DockerContainerPause\\\"\\n            class=\\\"btn btn-light btn-sm\\\"\\n            ng-click=\\\"pause()\\\"\\n            ng-disabled=\\\"!container.State.Running || container.State.Paused || container.IsPortainer\\\"\\n            ><i class=\\\"fa fa-pause space-right\\\" aria-hidden=\\\"true\\\"></i>暂停</button\\n          >\\n          <button authorization=\\\"DockerContainerUnpause\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"unpause()\\\" ng-disabled=\\\"!container.State.Paused || container.IsPortainer\\\"\\n            ><i class=\\\"fa fa-play space-right\\\" aria-hidden=\\\"true\\\"></i>恢复</button\\n          >\\n          <button authorization=\\\"DockerContainerDelete\\\" class=\\\"btn btn-dangerlight btn-sm\\\" ng-click=\\\"confirmRemove()\\\" ng-disabled=\\\"container.IsPortainer\\\"\\n            ><i class=\\\"fa fa-trash-alt space-right\\\" aria-hidden=\\\"true\\\"></i>删除</button\\n          >\\n        </div>\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\" ng-if=\\\"displayRecreateButton\\\" authorization=\\\"DockerContainerCreate\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-light btn-sm\\\"\\n            ng-disabled=\\\"state.recreateContainerInProgress || container.IsPortainer\\\"\\n            ng-click=\\\"recreate()\\\"\\n            button-spinner=\\\"state.recreateContainerInProgress\\\"\\n          >\\n            <span ng-hide=\\\"state.recreateContainerInProgress\\\"><i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i>重新创建</span>\\n            <span ng-show=\\\"state.recreateContainerInProgress\\\">正在创建中...</span>\\n          </button>\\n          <a class=\\\"btn btn-light btn-sm\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.new({ from: container.Id, nodeName: nodeName })\\\" ng-disabled=\\\"container.IsPortainer\\\"\\n            ><i class=\\\"fa fa-copy space-right\\\" aria-hidden=\\\"true\\\"></i>复制/编辑</a\\n          >\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"box\\\" feather-icon=\\\"true\\\" title-text=\\\"容器状态\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td class=\\\"col-xs-6 col-sm-4 col-md-3 col-lg-3\\\">ID</td>\\n              <td>{{ container.Id }}</td>\\n            </tr>\\n            <tr>\\n              <td>名称</td>\\n              <td ng-if=\\\"!container.edit\\\">\\n                {{ container.Name | trimcontainername }}\\n                <a authorization=\\\"DockerContainerRename\\\" href=\\\"\\\" data-toggle=\\\"tooltip\\\" title=\\\"Edit container name\\\" ng-click=\\\"container.edit = true;\\\"\\n                  ><pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon\\n                ></a>\\n              </td>\\n              <td ng-if=\\\"container.edit\\\">\\n                <form ng-submit=\\\"renameContainer()\\\">\\n                  <input type=\\\"text\\\" class=\\\"containerNameInput\\\" ng-model=\\\"container.newContainerName\\\" />\\n                  <a href=\\\"\\\" ng-click=\\\"container.edit = false;\\\"><i class=\\\"fa fa-times\\\"></i></a>\\n                  <a href=\\\"\\\" ng-click=\\\"renameContainer()\\\"><i class=\\\"fa fa-check\\\"></i></a>\\n                </form>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"container.NetworkSettings.IPAddress\\\">\\n              <td>IP 地址</td>\\n              <td>{{ container.NetworkSettings.IPAddress }}</td>\\n            </tr>\\n            <tr>\\n              <td>状态</td>\\n              <td>\\n                <i class=\\\"fa fa-heartbeat space-right green-icon\\\" ng-if=\\\"container.State.Running\\\"></i>\\n                <i class=\\\"fa fa-heartbeat space-right red-icon\\\" ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\"></i>\\n                {{ container.State | getstatetext }} for {{ activityTime\\n                }}<span ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\"> with exit code {{ container.State.ExitCode }}</span>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>创建于</td>\\n              <td>{{ container.Created | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"container.State.Running\\\">\\n              <td>启动时间</td>\\n              <td>{{ container.State.StartedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\">\\n              <td>停止时间</td>\\n              <td>{{ container.State.FinishedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"isAdmin && displayCreateWebhookButton && applicationState.endpoint.type !== 4\\\">\\n              <td colspan=\\\"6\\\">\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <por-switch-field\\n                      tooltip=\\\"'用于自动重新创建该容器的Webhook（或回调URI）。向这个回调URI发送一个POST请求（不需要任何认证）将拉出相关图像的最新版本并重新创建这个容器。'\\\"\\n                      label-class=\\\"'col-sm-2'\\\"\\n                      label=\\\"'Container webhook'\\\"\\n                      feature-id=\\\"'container-webhook'\\\"\\n                    ></por-switch-field>\\n                  </div>\\n                </div>\\n              </td>\\n            </tr>\\n            <tr authorization=\\\"DockerContainerLogs, DockerContainerInspect, DockerContainerStats, DockerExecStart\\\">\\n              <td colspan=\\\"2\\\">\\n                <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n                  <a authorization=\\\"DockerContainerLogs\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.logs({ id: container.Id })\\\"\\n                    ><pr-icon icon=\\\"'file-text'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon>日志</a\\n                  >\\n                  <a authorization=\\\"DockerContainerInspect\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.inspect({ id: container.Id })\\\"\\n                    ><pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon>检查</a\\n                  >\\n                  <a authorization=\\\"DockerContainerStats\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.stats({ id: container.Id })\\\"\\n                    ><pr-icon icon=\\\"'bar-chart'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon>状态</a\\n                  >\\n                  <a authorization=\\\"DockerExecStart\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.exec({ id: container.Id })\\\"\\n                    ><pr-icon icon=\\\"'terminal'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon>控制台</a\\n                  >\\n                  <a authorization=\\\"DockerContainerAttach\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.attach({ id: container.Id })\\\"\\n                    ><pr-icon icon=\\\"'paperclip'\\\" feather=\\\"true\\\" className=\\\"'space-right'\\\"></pr-icon>附加</a\\n                  >\\n                </div>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"container\\\"\\n  resource-id=\\\"container.Id\\\"\\n  resource-control=\\\"container.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div ng-if=\\\"container.State.Health\\\" class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-server\\\" title-text=\\\"Container health\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>状态</td>\\n              <td>\\n                <i\\n                  ng-class=\\\"\\n                    { healthy: 'fa fa-heartbeat space-right green-icon', unhealthy: 'fa fa-heartbeat space-right red-icon', starting: 'fa fa-heartbeat space-right orange-icon' }[\\n                      container.State.Health.Status\\n                    ]\\n                  \\\"\\n                ></i>\\n                {{ container.State.Health.Status }}\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>失败计数</td>\\n              <td>{{ container.State.Health.FailingStreak }}</td>\\n            </tr>\\n            <tr>\\n              <td>上次输出</td>\\n              <td>{{ container.State.Health.Log[container.State.Health.Log.length - 1].Output }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"创建镜像\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- tag-description -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\">\\n                你可以从这个容器中创建一个镜像，这允许你备份重要数据或保存有用的配置。之后你就可以在这个镜像的基础上旋转出另一个容器。\\n              </span>\\n            </div>\\n          </div>\\n          <!-- !tag-description -->\\n          <!-- image-and-registry -->\\n          <por-image-registry\\n            model=\\\"config.RegistryModel\\\"\\n            auto-complete=\\\"true\\\"\\n            label-class=\\\"col-sm-1\\\"\\n            input-class=\\\"col-sm-11\\\"\\n            endpoint=\\\"endpoint\\\"\\n            is-admin=\\\"isAdmin\\\"\\n            set-validity=\\\"setPullImageValidity\\\"\\n            check-rate-limits=\\\"true\\\"\\n          ></por-image-registry>\\n          <!-- !image-and-registry -->\\n          <!-- tag-note -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\">注意：如果你不在图片名称中指定标签，将默认使用<span class=\\\"label label-default\\\">latest</span>标签。</span>\\n            </div>\\n          </div>\\n          <!-- !tag-note -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"!state.pullImageValidity || !config.RegistryModel.Image || config.commitInProgress\\\"\\n                ng-click=\\\"commit()\\\"\\n              >\\n                创建\\n              </button>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"容器详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table container-details-table\\\">\\n          <tbody>\\n            <tr>\\n              <td>镜像</td>\\n              <td\\n                ><a ui-sref=\\\"docker.images.image({ id: container.Image, nodeName: nodeName })\\\">{{ container.Config.Image }}@{{ container.Image }}</a></td\\n              >\\n            </tr>\\n            <tr ng-if=\\\"portBindings.length > 0\\\">\\n              <td>端口配置</td>\\n              <td>\\n                <div ng-repeat=\\\"portMapping in portBindings\\\"> {{ portMapping.host }} <i class=\\\"fa fa-long-arrow-alt-right\\\"></i> {{ portMapping.container }} </div>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>CMD</td>\\n              <td\\n                ><code>{{ container.Config.Cmd | command }}</code></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>ENTRYPOINT</td>\\n              <td\\n                ><code>{{ container.Config.Entrypoint ? (container.Config.Entrypoint | command) : 'null' }}</code></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>环境变量</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"var in container.Config.Env track by $index\\\">\\n                    <td>{{ var|key: '=' }}</td>\\n                    <td>{{ var|value: '=' }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!(container.Config.Labels | emptyobject)\\\">\\n              <td>标签</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in container.Config.Labels\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>重启策略</td>\\n              <td>\\n                <container-restart-policy\\n                  ng-if=\\\"container\\\"\\n                  name=\\\"container.HostConfig.RestartPolicy.Name\\\"\\n                  maximum-retry-count=\\\"container.HostConfig.RestartPolicy.MaximumRetryCount\\\"\\n                  update-restart-policy=\\\"updateRestartPolicy(name, maximumRetryCount)\\\"\\n                >\\n                </container-restart-policy>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!(container.HostConfig.Sysctls | emptyobject)\\\">\\n              <td>Sysctls</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in container.HostConfig.Sysctls\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"container.HostConfig.DeviceRequests.length\\\">\\n              <td>GPUS</td>\\n              <td>{{ computeDockerGPUCommand() }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"container.Mounts.length > 0\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"database\\\" feather-icon=\\\"true\\\" title-text=\\\"存储卷\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <thead>\\n            <tr>\\n              <th>主机/存储卷</th>\\n              <th>容器中的路径</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr ng-repeat=\\\"vol in container.Mounts\\\">\\n              <td ng-if=\\\"vol.Type === 'bind'\\\">{{ vol.Source }}</td>\\n              <td ng-if=\\\"vol.Type === 'volume'\\\"\\n                ><a ui-sref=\\\"docker.volumes.volume({ id: vol.Name, nodeName: nodeName })\\\">{{ vol.Name }}</a></td\\n              >\\n              <td>{{ vol.Destination }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <container-networks-datatable\\n      ng-if=\\\"container.NetworkSettings.Networks\\\"\\n      title-text=\\\"连接的网络\\\"\\n      title-icon=\\\"share-2\\\"\\n      dataset=\\\"container.NetworkSettings.Networks\\\"\\n      table-key=\\\"container-networks\\\"\\n      container=\\\"container\\\"\\n      available-networks=\\\"availableNetworks\\\"\\n      join-network-action=\\\"containerJoinNetwork\\\"\\n      join-network-action-in-progress=\\\"state.joinNetworkInProgress\\\"\\n      leave-network-action=\\\"containerLeaveNetwork\\\"\\n      leave-network-action-in-progress=\\\"state.leaveNetworkInProgress\\\"\\n      node-name=\\\"nodeName\\\"\\n    ></container-networks-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/edit/container.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///5744\n");

}),

96215:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'容器检查'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'容器', link:'docker.containers' },\\n    { \\n      label:(containerInfo.Name | trimcontainername),\\n      link: 'docker.containers.container', \\n      linkParams:containerInfo.Id\\n    }, 'Inspect']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"circle\\\" feather-icon=\\\"true\\\" title-text=\\\"Inspect\\\">\\n        <span class=\\\"btn-group btn-group-sm\\\">\\n          <label class=\\\"btn btn-light\\\" ng-model=\\\"state.DisplayTextView\\\" uib-btn-radio=\\\"false\\\"><pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon>目录</label>\\n          <label class=\\\"btn btn-light\\\" ng-model=\\\"state.DisplayTextView\\\" uib-btn-radio=\\\"true\\\"><pr-icon icon=\\\"'file'\\\" feather=\\\"true\\\"></pr-icon>文本</label>\\n        </span>\\n      </rd-widget-header>\\n      <rd-widget-body>\\n        <pre ng-show=\\\"state.DisplayTextView\\\">{{ containerInfo | json: 4 }}</pre>\\n        <json-tree ng-hide=\\\"state.DisplayTextView\\\" object=\\\"containerInfo\\\" root-name=\\\"containerInfo.Id\\\" start-expanded=\\\"true\\\"></json-tree>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/inspect/containerinspect.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///96215\n");

}),

7942:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'容器日志'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'容器', link:'docker.containers' },\\n    { \\n      label:(container.Name | trimcontainername),\\n      link: 'docker.containers.container', \\n      linkParams:container.Id\\n    }, 'Logs']\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n  data=\\\"logs\\\"\\n  ng-if=\\\"logs\\\"\\n  log-collection-change=\\\"changeLogCollection\\\"\\n  display-timestamps=\\\"state.displayTimestamps\\\"\\n  line-count=\\\"state.lineCount\\\"\\n  since-timestamp=\\\"state.sinceTimestamp\\\"\\n  resource-name=\\\"container.Name\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/containers/logs/containerlogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///7942\n");

}),

67431:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'容器统计'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'容器', link:'docker.containers' },\\n    { \\n      label:(container.Name | trimcontainername),\\n      link: 'docker.containers.container', \\n      linkParams:container.Id\\n    }, 'Stats']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-md-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"info\\\" feather-icon=\\\"true\\\" title-text=\\\"关于统计\\\"> </rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\">\\n                该视图显示关于容器 <b>{{ container.Name | trimcontainername }}</b> 的实时统计数据，以及该容器内正在运行的进程列表。\\n              </span>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> 刷新频率 </label>\\n            <div class=\\\"col-sm-3 col-md-2\\\">\\n              <select id=\\\"refreshRate\\\" ng-model=\\\"state.refreshRate\\\" ng-change=\\\"changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n                <option value=\\\"1\\\">1秒</option>\\n                <option value=\\\"3\\\">3秒</option>\\n                <option value=\\\"5\\\">5秒</option>\\n                <option value=\\\"10\\\">10秒</option>\\n                <option value=\\\"30\\\">30秒</option>\\n                <option value=\\\"60\\\">60秒</option>\\n              </select>\\n            </div>\\n            <span>\\n              <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-top: 7px; display: none\\\"></i>\\n            </span>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-if=\\\"state.networkStatsUnavailable\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\"> <i class=\\\"fa fa-exclamation-triangle orange-icon\\\" aria-hidden=\\\"true\\\"></i> 该容器的网络统计信息不可用。 </span>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-if=\\\"state.ioStatsUnavailable\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\"> <i class=\\\"fa fa-exclamation-triangle orange-icon\\\" aria-hidden=\\\"true\\\"></i> 该容器的I/O统计信息不可用。 </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"bar-chart\\\" feather-icon=\\\"true\\\" title-text=\\\"内存使用\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n          <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n\\n  <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"bar-chart\\\" feather-icon=\\\"true\\\" title-text=\\\"CPU 使用\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n          <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n\\n  <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\" ng-if=\\\"!state.networkStatsUnavailable\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"bar-chart\\\" feather-icon=\\\"true\\\" title-text=\\\"网络使用量（总和）\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n          <canvas id=\\\"networkChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n\\n  <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\" ng-if=\\\"!state.ioStatsUnavailable\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"bar-chart\\\" feather-icon=\\\"true\\\" title-text=\\\"I/O使用量（总和）\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n          <canvas id=\\\"ioChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <container-processes-datatable\\n      title-text=\\\"Processes\\\"\\n      title-icon=\\\"list\\\"\\n      dataset=\\\"processInfo.Processes\\\"\\n      headerset=\\\"processInfo.Titles\\\"\\n      table-key=\\\"container-processes\\\"\\n    ></container-processes-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/stats/containerstats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///67431\n");

}),

30357:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'仪表板'\\\" breadcrumbs=\\\"['环境总结']\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <dashboard-cluster-agent-info></dashboard-cluster-agent-info>\\n  </div>\\n</div>\\n<information-panel-offline ng-if=\\\"offlineMode\\\"></information-panel-offline>\\n<information-panel\\n  ng-if=\\\"\\n    !applicationState.UI.dismissedInfoPanels['docker-dashboard-info-01'] &&\\n    !applicationState.endpoint.mode.agentProxy &&\\n    applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\n  \\\"\\n  title-text=\\\"信息\\\"\\n  dismiss-action=\\\"dismissInformationPanel('docker-dashboard-info-01')\\\"\\n>\\n  <span class=\\\"small\\\">\\n    <p class=\\\"text-muted\\\" ng-if=\\\"applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      Portainer被连接到属于Swarm集群的节点上。 位于集群中其他节点上的一些资源可能无法进行管理，请查看\\n      <a href=\\\"http://portainer.readthedocs.io/en/stable/agent.html\\\" target=\\\"_blank\\\">我们的代理设置</a> 以了解更多细节。\\n    </p>\\n    <p class=\\\"text-muted\\\" ng-if=\\\"applicationState.endpoint.mode.role === 'WORKER'\\\">\\n      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      Portainer连接到一个工作节点。Swarm管理功能将不可用。\\n    </p>\\n  </span>\\n</information-panel>\\n\\n<div ng-if=\\\"info\\\">\\n  <div class=\\\"row\\\" ng-if=\\\"(!applicationState.endpoint.mode.agentProxy || applicationState.endpoint.mode.provider !== 'DOCKER_SWARM_MODE') && info && endpoint\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-header icon=\\\"svg-tachometer\\\" title-text=\\\"环境信息\\\"></rd-widget-header>\\n        <rd-widget-body classes=\\\"!px-5 !py-0\\\">\\n          <table class=\\\"table\\\">\\n            <tbody>\\n              <tr>\\n                <td>环境</td>\\n                <td>\\n                  {{ endpoint.Name }}\\n                  <span class=\\\"small text-muted space-left\\\">\\n                    <pr-icon icon=\\\"'cpu'\\\" feather=\\\"true\\\"></pr-icon> {{ endpoint.Snapshots[0].TotalCPU }} <pr-icon icon=\\\"'svg-memory'\\\"></pr-icon>\\n                    {{ endpoint.Snapshots[0].TotalMemory | humansize }}\\n                  </span>\\n                  <span class=\\\"small text-muted\\\">\\n                    - {{ info.Swarm && info.Swarm.NodeID !== '' ? 'Swarm' : 'Standalone' }} {{ info.ServerVersion }}\\n                    <span ng-if=\\\"endpoint.Type === 2\\\">+ <i class=\\\"fa fa-bolt\\\" aria-hidden=\\\"true\\\"></i> Agent</span></span\\n                  >\\n                </td>\\n              </tr>\\n              <tr ng-if=\\\"showEnvUrl\\\">\\n                <td>URL</td>\\n                <td>{{ endpoint.URL | stripprotocol }}</td>\\n              </tr>\\n              <tr>\\n                <td>{{ endpoint.Gpus.length <= 1 ? 'GPU' : 'GPUs' }}</td>\\n                <td>{{ gpuInfoStr }}</td>\\n              </tr>\\n              <tr>\\n                <td>标记</td>\\n                <td>{{ endpointTags }}</td>\\n              </tr>\\n              <tr ng-if=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n                <td colspan=\\\"2\\\">\\n                  <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n                    <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>转到群集可视化工具</a>\\n                  </div>\\n                </td>\\n              </tr>\\n            </tbody>\\n          </table>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"dashboard-grid mx-4\\\">\\n    <a class=\\\"no-link\\\" ui-sref=\\\"docker.stacks\\\" ng-if=\\\"showStacks\\\">\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'layers'\\\" type=\\\"'Stack'\\\" value=\\\"stackCount\\\"></dashboard-item>\\n    </a>\\n\\n    <div ng-if=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n      <a class=\\\"no-link\\\" ui-sref=\\\"docker.services\\\">\\n        <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'shuffle'\\\" type=\\\"'Service'\\\" value=\\\"serviceCount\\\"></dashboard-item>\\n      </a>\\n    </div>\\n\\n    <a class=\\\"no-link\\\" ng-if=\\\"containers\\\" ui-sref=\\\"docker.containers\\\">\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'box'\\\" type=\\\"'Container'\\\" value=\\\"containers.length\\\" children=\\\"containerStatusComponent\\\"></dashboard-item>\\n    </a>\\n\\n    <a class=\\\"no-link\\\" ng-if=\\\"images\\\" ui-sref=\\\"docker.images\\\">\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'list'\\\" type=\\\"'Image'\\\" value=\\\"images.length\\\" children=\\\"imagesTotalSizeComponent\\\"></dashboard-item>\\n    </a>\\n\\n    <a class=\\\"no-link\\\" ui-sref=\\\"docker.volumes\\\">\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'database'\\\" type=\\\"'Volume'\\\" value=\\\"volumeCount\\\"></dashboard-item>\\n    </a>\\n\\n    <a class=\\\"no-link\\\" ui-sref=\\\"docker.networks\\\">\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'share2'\\\" type=\\\"'Network'\\\" value=\\\"networkCount\\\"></dashboard-item>\\n    </a>\\n\\n    <div>\\n      <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'cpu'\\\" type=\\\"'GPU'\\\" value=\\\"endpoint.Gpus.length\\\"></dashboard-item>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/dashboard/dashboard.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///30357\n");

}),

97582:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Docker功能配置'\\\" breadcrumbs=\\\"['Docker configuration']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 主机和文件系统 </div>\\n          <div ng-if=\\\"!$ctrl.isAgent\\\" class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n              <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"space-right\\\"></pr-icon>\\n              这些功能只适用于启用代理的环境。\\n            </span>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.enableHostManagementFeatures\\\"\\n                name=\\\"'enableHostManagementFeatures'\\\"\\n                label=\\\"'启用主机管理功能'\\\"\\n                tooltip=\\\"'启用主机管理功能：主机系统浏览和高级主机细节。'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                disabled=\\\"!$ctrl.isAgent\\\"\\n                on-change=\\\"($ctrl.onChangeEnableHostManagementFeatures)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.allowVolumeBrowserForRegularUsers\\\"\\n                name=\\\"'allowVolumeBrowserForRegularUsers'\\\"\\n                label=\\\"'启用对非管理员的存储卷管理'\\\"\\n                tooltip=\\\"'启用后，普通用户将能够使用Portainer存储卷管理功能。'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeAllowVolumeBrowserForRegularUsers)\\\"\\n                disabled=\\\"!$ctrl.isAgent\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- auto update window -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 修改窗口设置 </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.state.autoUpdateSettings.Enabled\\\"\\n                name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n                label=\\\"'启用更改窗口'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                feature-id=\\\"$ctrl.limitedFeature\\\"\\n                tooltip=\\\"'指定一个时间范围，在这个环境中可以发生自动更新。'\\\"\\n                on-change=\\\"($ctrl.onToggleAutoUpdate)\\\"\\n              >\\n              </por-switch-field>\\n            </div>\\n          </div>\\n\\n          <!-- security -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Docker安全设置 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableBindMountsForRegularUsers\\\"\\n                name=\\\"'disableBindMountsForRegularUsers'\\\"\\n                label=\\\"'禁用非管理员的绑定挂载'\\\"\\n                tooltip=\\\"'启用后，普通用户在创建容器时将不能使用绑定挂载。'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableBindMountsForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disablePrivilegedModeForRegularUsers\\\"\\n                name=\\\"'disablePrivilegedModeForRegularUsers'\\\"\\n                label=\\\"'禁用非管理员的特权模式'\\\"\\n                tooltip=\\\"'启用后，普通用户在创建容器时将不能使用特权模式。'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisablePrivilegedModeForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableHostNamespaceForRegularUsers\\\"\\n                name=\\\"'disableHostNamespaceForRegularUsers'\\\"\\n                label=\\\"'禁止对非管理员使用主机PID 1'\\\"\\n                tooltip=\\\"'防止用户通过主机PID命名空间访问主机文件系统。'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableHostNamespaceForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableStackManagementForRegularUsers\\\"\\n                name=\\\"'disableStackManagementForRegularUsers'\\\"\\n                label=\\\"'禁止对非管理员使用堆栈'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableStackManagementForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableDeviceMappingForRegularUsers\\\"\\n                name=\\\"'disableDeviceMappingForRegularUsers'\\\"\\n                label=\\\"'禁用非管理员的设备映射'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableDeviceMappingForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableContainerCapabilitiesForRegularUsers\\\"\\n                name=\\\"'disableContainerCapabilitiesForRegularUsers'\\\"\\n                label=\\\"'禁用非管理员的容器功能'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableContainerCapabilitiesForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                checked=\\\"$ctrl.formValues.disableSysctlSettingForRegularUsers\\\"\\n                name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n                label=\\\"'禁用非管理员的sysctl设置'\\\"\\n                label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n                on-change=\\\"($ctrl.onChangeDisableSysctlSettingForRegularUsers)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.isContainerEditDisabled()\\\">\\n            <span class=\\\"col-sm-12 text-muted small\\\">\\n              <i class=\\\"fa fa-info-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n              注意：重新创建/复制/编辑功能目前被一个或多个安全设置所禁止（对于非管理员用户）。\\n            </span>\\n          </div>\\n          <!-- !security -->\\n\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"$ctrl.save()\\\" ng-disabled=\\\"$ctrl.state.actionInProgress\\\" button-spinner=\\\"$ctrl.state.actionInProgress\\\">\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">保存配置</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">保存中...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/docker-features-configuration/docker-features-configuration.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///97582\n");

}),

9208:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'事件列表'\\\" breadcrumbs=\\\"['Events']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <events-datatable title-text=\\\"事件\\\" title-icon=\\\"clock\\\" dataset=\\\"events\\\" table-key=\\\"events\\\" order-by=\\\"Time\\\" reverse-order=\\\"true\\\"></events-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/events/events.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9208\n");

}),

18659:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'主机浏览'\\\" breadcrumbs=\\\"['Host', {label:$ctrl.host.Name, link:'docker.host'},  'browse']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <host-browser ng-if=\\\"$ctrl.host\\\" endpoint-id=\\\"$ctrl.endpoint.Id\\\"></host-browser>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/host/host-browser-view/host-browser-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///18659\n");

}),

20927:

(function(module) {

eval("var _module_exports = \"<host-overview\\n  engine-details=\\\"$ctrl.engineDetails\\\"\\n  host-details=\\\"$ctrl.hostDetails\\\"\\n  is-agent=\\\"$ctrl.state.isAgent\\\"\\n  agent-api-version=\\\"$ctrl.state.agentApiVersion\\\"\\n  disks=\\\"$ctrl.disks\\\"\\n  devices=\\\"$ctrl.devices\\\"\\n  refresh-url=\\\"docker.host\\\"\\n  browse-url=\\\"docker.host.browser\\\"\\n  offline-mode=\\\"$ctrl.state.offlineMode\\\"\\n  host-features-enabled=\\\"$ctrl.state.enableHostManagementFeatures\\\"\\n></host-overview>\\n\";;\nvar path = 'app/docker/views/host/host-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///20927\n");

}),

14147:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'构建镜像'\\\" breadcrumbs=\\\"[{label:'镜像', link:'docker.images'}, '构建镜像']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <uib-tabset active=\\\"state.activeTab\\\">\\n          <uib-tab index=\\\"0\\\">\\n            <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'tool'\\\" feather=\\\"true\\\" class=\\\"leading-none\\\"></pr-icon> 构建 </uib-tab-heading>\\n            <form class=\\\"form-horizontal\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 命名 </div>\\n              <!-- names -->\\n              <div class=\\\"form-group\\\">\\n                <span class=\\\"col-sm-12 text-muted small\\\"> 你可以为你的镜像指定多个名称。 </span>\\n              </div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <label class=\\\"control-label text-left\\\">名称</label>\\n                  <span class=\\\"label label-default interactive\\\" class=\\\"ml-2.5\\\" ng-click=\\\"addImageName()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加名称\\n                  </span>\\n                </div>\\n              </div>\\n              <!-- !names -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"formValues.ImageNames.length === 0\\\">\\n                <span class=\\\"col-sm-12 text-danger small\\\">\\n                  <p class=\\\"vertical-center\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> 你必须至少为镜像指定一个名称。\\n                  </p>\\n                </span>\\n              </div>\\n              <!-- name-input-list -->\\n              <div ng-if=\\\"formValues.ImageNames.length > 0\\\">\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 text-muted small\\\">\\n                    必须以以下格式之一指定名称： <code>name:tag</code>, <code>repository/name:tag</code> 或\\n                    <code>registryfqdn:port/repository/name:tag</code> 格式。 如果省略标签，则假定默认 <b>latest</b> 值。\\n                  </span>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <div class=\\\"col-sm-12 form-inline\\\" class=\\\"mt-2.5\\\">\\n                      <div ng-repeat=\\\"item in formValues.ImageNames track by $index\\\" class=\\\"mt-1\\\">\\n                        <!-- name-input -->\\n                        <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                          <span class=\\\"input-group-addon\\\">名称</span>\\n                          <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"item.Name\\\" ng-change=\\\"checkName($index)\\\" placeholder=\\\"例如 my-image:my-tag\\\" auto-focus />\\n                          <span class=\\\"input-group-addon\\\" ng-if=\\\"!item.Valid\\\">\\n                            <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                          </span>\\n                          <span class=\\\"input-group-addon\\\" ng-if=\\\"item.Valid\\\">\\n                            <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                          </span>\\n                        </div>\\n                        <!-- !name-input -->\\n                        <!-- actions -->\\n                        <div class=\\\"input-group col-sm-2 input-group-sm\\\">\\n                          <button class=\\\"btn btn-dangerlight btn-only-icon\\\" type=\\\"button\\\" ng-click=\\\"removeImageName($index)\\\">\\n                            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n                          </button>\\n                        </div>\\n                        <!-- !actions -->\\n                        <div class=\\\"small text-warning\\\" ng-if=\\\"!item.Valid\\\">\\n                          <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                          <span ng-if=\\\"!item.Unique\\\">镜像名称必须是唯一的</span>\\n                          <span ng-if=\\\"item.Unique\\\"\\n                            >镜像名称必须由2至255个小写字母数字组成， '_' 或 '-' (例如 'my-name', 或 'abc-123').</span\\n                          >\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !name-input-list -->\\n              <!-- build-method -->\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 构建方法 </div>\\n              <div class=\\\"form-group\\\"></div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <div class=\\\"boxselector_wrapper\\\">\\n                    <div>\\n                      <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"state.BuildType\\\" value=\\\"editor\\\" ng-click=\\\"toggleEditor()\\\" />\\n                      <label for=\\\"method_editor\\\">\\n                        <div class=\\\"boxselector_header vertical-center\\\">\\n                          <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                          网络编辑\\n                        </div>\\n                        <p>使用我们的网页编辑器</p>\\n                      </label>\\n                    </div>\\n                    <div>\\n                      <input type=\\\"radio\\\" id=\\\"method_upload\\\" ng-model=\\\"state.BuildType\\\" value=\\\"upload\\\" ng-click=\\\"saveEditorContent()\\\" />\\n                      <label for=\\\"method_upload\\\">\\n                        <div class=\\\"boxselector_header vertical-center\\\">\\n                          <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon> 上传 </div>\\n                        <p>从你的电脑上传一个tarball或Docker文件</p>\\n                      </label>\\n                    </div>\\n                    <div>\\n                      <input type=\\\"radio\\\" id=\\\"method_url\\\" ng-model=\\\"state.BuildType\\\" value=\\\"url\\\" ng-click=\\\"saveEditorContent()\\\" />\\n                      <label for=\\\"method_url\\\">\\n                        <div class=\\\"boxselector_header vertical-center\\\">\\n                          <pr-icon icon=\\\"'globe'\\\" feather=\\\"true\\\"></pr-icon>\\n                          URL\\n                        </div>\\n                        <p>指定一个文件的URL</p>\\n                      </label>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !build-method -->\\n              <!-- web-editor -->\\n              <div ng-show=\\\"state.BuildType === 'editor'\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> Web editor </div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 text-muted small\\\">\\n                    你可以在<a href=\\\"https://docs.docker.com/engine/reference/builder/\\\" target=\\\"_blank\\\">官方文档</a>中获得更多关于Dockerfile格式的信息。\\n                  </span>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <code-editor\\n                      identifier=\\\"image-build-editor\\\"\\n                      placeholder=\\\"在这里定义或粘贴你的Dockerfile的内容\\\"\\n                      yml=\\\"false\\\"\\n                      on-change=\\\"(editorUpdate)\\\"\\n                    ></code-editor>\\n                  </div>\\n                </div>\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <div class=\\\"form-group\\\">\\n                      <span class=\\\"col-sm-12 text-muted small\\\">\\n                        你可以从你的本地计算机上传文件，以便在你的Docker文件中引用（使用ADD文件名），这样它们就会包含在你构建的镜像中。\\n                      </span>\\n                    </div>\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ngf-select=\\\"selectAdditionalFiles($files)\\\" ngf-multiple=\\\"true\\\">选择文件</button>\\n                    <span ng-repeat=\\\"item in formValues.AdditionalFiles track by $index\\\" class=\\\"mx-2\\\">\\n                      {{ item.name }}\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !web-editor -->\\n              <!-- upload -->\\n              <div ng-show=\\\"state.BuildType === 'upload'\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 text-muted small\\\">\\n                    你可以从你的电脑上传一个Docker文件或包含Docker文件的tar压缩包。当使用一个压缩包时，根文件夹将被用作构建环境。\\n                  </span>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12 vertical-center\\\">\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ngf-select ngf-min-size=\\\"10\\\" ng-model=\\\"formValues.UploadFile\\\">选择文件</button>\\n                    <span class=\\\"space-left\\\">\\n                      {{ formValues.UploadFile.name }}\\n                      <span ng-if=\\\"!formValues.UploadFile\\\"><pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon></span>\\n                    </span>\\n                  </div>\\n                </div>\\n                <div ng-if=\\\"formValues.UploadFile.type === 'application/gzip' || formValues.UploadFile.type === 'application/x-tar'\\\">\\n                  <div class=\\\"form-group\\\">\\n                    <span class=\\\"col-sm-12 text-muted small\\\"> 指明tarball中的Docker文件的路径。 </span>\\n                  </div>\\n                  <div class=\\\"form-group\\\">\\n                    <label for=\\\"image_path\\\" class=\\\"col-sm-2 control-label text-left\\\">Dockerfile 路径</label>\\n                    <div class=\\\"col-sm-10\\\">\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Path\\\" id=\\\"image_path\\\" placeholder=\\\"Dockerfile\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !upload -->\\n              <!-- url -->\\n              <div ng-show=\\\"state.BuildType === 'url'\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> URL </div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 small vertical-center\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span class=\\\"text-muted\\\"\\n                      >指定Docker文件、tarball或公共Git仓库（后缀为<b>.git</b>）的URL。当使用Git仓库的URL时，可以像 <a href=\\\"https://docs.docker.com/engine/reference/commandline/build/#git-repositories\\\">Docker 文档</a>中那样指定构建上下文。</span\\n                    >\\n                  </span>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <label for=\\\"image_url\\\" class=\\\"col-sm-2 control-label text-left\\\">URL</label>\\n                  <div class=\\\"col-sm-10\\\">\\n                    <input\\n                      type=\\\"text\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"formValues.URL\\\"\\n                      id=\\\"image_url\\\"\\n                      placeholder=\\\"https://myhost.mydomain/myimage.tar.gz or https://github.com/myname/myrepo.git#mybranch\\\"\\n                    />\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    指明tarball/repository中的Dockerfile的路径（使用Dockerfile时忽略）。\\n                  </span>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <label for=\\\"image_path\\\" class=\\\"col-sm-2 control-label text-left\\\">Dockerfile 路径</label>\\n                  <div class=\\\"col-sm-10\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Path\\\" id=\\\"image_path\\\" placeholder=\\\"Dockerfile\\\" />\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !url -->\\n              <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n                <!-- node-selection -->\\n                <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n                <!-- !node-selection -->\\n              </div>\\n              <!-- actions -->\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <button\\n                    type=\\\"button\\\"\\n                    class=\\\"btn btn-primary btn-sm\\\"\\n                    ng-disabled=\\\"state.actionInProgress\\n                    || (state.BuildType === 'editor' && formValues.DockerFileContent === '')\\n                    || (state.BuildType === 'upload' && (!formValues.UploadFile || !formValues.Path))\\n                    || (state.BuildType === 'url' && (!formValues.URL || !formValues.Path))\\n                    || (formValues.ImageNames.length === 0 || !validImageNames())\\\"\\n                    ng-click=\\\"buildImage()\\\"\\n                    button-spinner=\\\"state.actionInProgress\\\"\\n                  >\\n                    <span ng-hide=\\\"state.actionInProgress\\\">构建镜像</span>\\n                    <span ng-show=\\\"state.actionInProgress\\\">正在构建镜像...</span>\\n                  </button>\\n                  <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" class=\\\"space-left\\\">{{ state.formValidationError }}</span>\\n                </div>\\n              </div>\\n              <!-- !actions -->\\n            </form>\\n          </uib-tab>\\n          <uib-tab index=\\\"1\\\" disable=\\\"!buildLogs\\\">\\n            <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'file-text'\\\" feather=\\\"true\\\" class=\\\"leading-none\\\"></pr-icon> 输出 </uib-tab-heading>\\n            <pre class=\\\"log_viewer\\\">\\n              <div ng-repeat=\\\"line in buildLogs track by $index\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"active=!active\\\" ng-class=\\\"{'line_selected': active}\\\">{{ line }}</p></div>\\n              <div ng-if=\\\"!buildLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">无构建输出。</p></div>\\n            </pre>\\n          </uib-tab>\\n        </uib-tabset>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/build/buildimage.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///14147\n");

}),

35003:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'镜像详情'\\\" breadcrumbs=\\\"[{label:'镜像', link:'docker.images'}, image.Id]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"image.RepoTags.length > 0\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"tag\\\" feather-icon=\\\"true\\\" title-text=\\\"镜像标记\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"pull-left\\\" ng-repeat=\\\"tag in image.RepoTags\\\" style=\\\"display: table\\\">\\n                <div class=\\\"input-group col-md-1 !pr-3.5 !pl-3.5\\\">\\n                  <span class=\\\"input-group-addon\\\" style=\\\"border-right: 1px solid var(--border-input-group-addon-color); border-radius: 4px\\\" data-cy=\\\"image-tag-{{ tag }}\\\">{{\\n                    tag\\n                  }}</span>\\n                  <span class=\\\"input-group-btn\\\" style=\\\"padding: 0px 5px\\\">\\n                    <span style=\\\"margin: 0px 5px\\\" authorization=\\\"DockerImagePush\\\">\\n                      <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"推送到注册表\\\" ng-click=\\\"pushTag(tag)\\\">\\n                        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\" class=\\\"text-white\\\"></pr-icon>\\n                      </a>\\n                    </span>\\n\\n                    <span class=\\\"my-0 mx-1\\\" authorization=\\\"DockerImageCreate\\\">\\n                      <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"从注册表中拉取\\\" ng-click=\\\"pullTag(tag)\\\">\\n                        <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\" class=\\\"text-white\\\"></pr-icon>\\n                      </a>\\n                    </span>\\n\\n                    <span class=\\\"my-0 mx-1\\\" authorization=\\\"DockerImageDelete\\\">\\n                      <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"删除标记\\\" ng-click=\\\"removeTag(tag)\\\">\\n                        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class=\\\"text-white\\\"></pr-icon>\\n                      </a>\\n                    </span>\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\" authorization=\\\"DockerImageDelete\\\">\\n                注意：你可以点击上传图标 <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon> 来推送镜像或点击下载图标\\n                <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon> 来拉取一个镜像，或者点击垃圾桶图标 <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> 来删除一个标签。\\n              </span>\\n            </div>\\n            <div class=\\\"col-sm-12\\\">\\n              <span id=\\\"downloadResourceHint\\\" class=\\\"createResource ml-0\\\" style=\\\"display: none\\\">\\n                下载进行中...\\n                <i class=\\\"fa fa-circle-notch fa-spin ml-0.5\\\" aria-hidden=\\\"true\\\"></i>\\n              </span>\\n              <span id=\\\"uploadResourceHint\\\" class=\\\"createResource ml-0.5\\\" style=\\\"display: none\\\">\\n                上传中...\\n                <i class=\\\"fa fa-circle-notch fa-spin ml-0.5\\\" aria-hidden=\\\"true\\\"></i>\\n              </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"tag\\\" feather-icon=\\\"true\\\" title-text=\\\"标记镜像\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- image-and-registry -->\\n          <por-image-registry\\n            model=\\\"formValues.RegistryModel\\\"\\n            label-class=\\\"col-sm-1\\\"\\n            input-class=\\\"col-sm-11\\\"\\n            endpoint=\\\"endpoint\\\"\\n            is-admin=\\\"isAdmin\\\"\\n            set-validity=\\\"setPullImageValidity\\\"\\n            check-rate-limits=\\\"true\\\"\\n          ></por-image-registry>\\n          <!-- !image-and-registry -->\\n          <!-- tag-note -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted\\\">注意：如果你不在镜像名称中指定标签，<span class=\\\"label label-default\\\">latest</span>将被使用。</span>\\n            </div>\\n          </div>\\n          <!-- !tag-note -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!formValues.RegistryModel.Image\\\" ng-click=\\\"tagImage()\\\">标记</button>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"镜像详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>ID</td>\\n              <td>\\n                {{ image.Id }}\\n                <button authorization=\\\"DockerImageDelete\\\" class=\\\"btn btn-xs btn-danger\\\" ng-click=\\\"removeImage(image.Id)\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> 删除此镜像\\n                </button>\\n                <button\\n                  authorization=\\\"DockerImageGet\\\"\\n                  class=\\\"btn btn-xs btn-primary\\\"\\n                  ng-click=\\\"exportImage(image)\\\"\\n                  button-spinner=\\\"$ctrl.exportInProgress\\\"\\n                  ng-disabled=\\\"state.exportInProgress\\\"\\n                >\\n                  <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon>\\n                  <span ng-hide=\\\"state.exportInProgress\\\">导出此镜像</span>\\n                  <span ng-show=\\\"state.exportInProgress\\\">正在导出中...</span>\\n                </button>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"image.Parent\\\">\\n              <td>父镜像</td>\\n              <td\\n                ><a ui-sref=\\\"docker.images.image({id: image.Parent})\\\">{{ image.Parent }}</a></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>体积</td>\\n              <td>{{ image.VirtualSize | humansize }}</td>\\n            </tr>\\n            <tr>\\n              <td>创建</td>\\n              <td>{{ image.Created | getisodate }}</td>\\n            </tr>\\n            <tr>\\n              <td>构建</td>\\n              <td>Docker {{ image.DockerVersion }} on {{ image.Os }}, {{ image.Architecture }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!(image.Labels | emptyobject)\\\">\\n              <td>标签</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in image.Labels\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"image.Author\\\">\\n              <td>作者</td>\\n              <td>{{ image.Author }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Dockerfile 详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>CMD</td>\\n              <td\\n                ><code>{{ image.Command | command }}</code></td\\n              >\\n            </tr>\\n            <tr ng-if=\\\"image.Entrypoint\\\">\\n              <td>ENTRYPOINT</td>\\n              <td\\n                ><code>{{ image.Entrypoint | command }}</code></td\\n              >\\n            </tr>\\n            <tr ng-if=\\\"image.ExposedPorts.length > 0\\\">\\n              <td>映射端口</td>\\n              <td>\\n                <span class=\\\"label label-default space-right\\\" ng-repeat=\\\"port in image.ExposedPorts\\\">\\n                  {{ port }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"image.Volumes.length > 0\\\">\\n              <td>存储卷</td>\\n              <td>\\n                <span class=\\\"label label-default space-right\\\" ng-repeat=\\\"volume in image.Volumes\\\">\\n                  {{ volume }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"image.Env.length > 0\\\">\\n              <td>环境变量</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"var in image.Env\\\">\\n                    <td>{{ var|key: '=' }}</td>\\n                    <td>{{ var|value: '=' }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<div class=\\\"row\\\" ng-if=\\\"history.length > 0\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"镜像层\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table id=\\\"image-layers\\\" class=\\\"table\\\">\\n          <thead>\\n            <th class=\\\"whitespace-nowrap\\\">\\n              <table-column-header\\n                col-title=\\\"'Order'\\\"\\n                can-sort=\\\"true\\\"\\n                is-sorted=\\\"$ctrl.state.orderBy === 'Order'\\\"\\n                is-sorted-desc=\\\"$ctrl.state.orderBy === 'Order' && $ctrl.state.reverseOrder\\\"\\n                ng-click=\\\"$ctrl.changeOrderBy('Order')\\\"\\n              ></table-column-header>\\n            </th>\\n            <th>\\n              <table-column-header\\n                col-title=\\\"'Size'\\\"\\n                can-sort=\\\"true\\\"\\n                is-sorted=\\\"$ctrl.state.orderBy === 'Size'\\\"\\n                is-sorted-desc=\\\"$ctrl.state.orderBy === 'Size' && $ctrl.state.reverseOrder\\\"\\n                ng-click=\\\"$ctrl.changeOrderBy('Size')\\\"\\n              ></table-column-header>\\n            </th>\\n            <th>\\n              <table-column-header\\n                col-title=\\\"'Layer'\\\"\\n                can-sort=\\\"true\\\"\\n                is-sorted=\\\"$ctrl.state.orderBy === 'Layer'\\\"\\n                is-sorted-desc=\\\"$ctrl.state.orderBy === 'Layer' && $ctrl.state.reverseOrder\\\"\\n                ng-click=\\\"$ctrl.changeOrderBy('Layer')\\\"\\n              ></table-column-header>\\n            </th>\\n          </thead>\\n          <tbody>\\n            <tr ng-repeat=\\\"layer in history | orderBy:sortType:sortReverse\\\">\\n              <td class=\\\"whitespace-nowrap\\\">\\n                {{ layer.Order }}\\n              </td>\\n              <td class=\\\"whitespace-nowrap\\\">\\n                {{ layer.Size | humansize }}\\n              </td>\\n              <td class=\\\"expand\\\">\\n                <div ng-if=\\\"layer.CreatedBy.length > 130\\\">\\n                  <span id=\\\"layer-command-{{ $index }}-full\\\" style=\\\"display: none\\\">\\n                    {{ layer.CreatedBy | imagelayercommand }}\\n                  </span>\\n                  <span id=\\\"layer-command-{{ $index }}-short\\\">\\n                    {{ layer.CreatedBy | imagelayercommand | truncate: 130 }}\\n                    <span ng-if=\\\"layer.CreatedBy.length > 130\\\" class=\\\"ml-1\\\">\\n                      <a id=\\\"layer-command-expander{{ $index }}\\\" class=\\\"btn\\\" ng-click=\\\"toggleLayerCommand($index)\\\">\\n                        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </a>\\n                    </span>\\n                  </span>\\n                </div>\\n                <div ng-if=\\\"layer.CreatedBy.length <= 130\\\">\\n                  <span id=\\\"layer-command-{{ $index }}-full\\\">\\n                    {{ layer.CreatedBy | imagelayercommand }}\\n                  </span>\\n                </div>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/edit/image.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///35003\n");

}),

30503:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'镜像列表'\\\" breadcrumbs=\\\"['镜像']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!offlineMode\\\" authorization=\\\"DockerImageCreate\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"download\\\" feather-icon=\\\"true\\\" title-text=\\\"拉取镜像 \\\"> </rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- image-and-registry -->\\n          <por-image-registry\\n            model=\\\"formValues.RegistryModel\\\"\\n            auto-complete=\\\"true\\\"\\n            label-class=\\\"col-sm-1\\\"\\n            input-class=\\\"col-sm-11\\\"\\n            endpoint=\\\"endpoint\\\"\\n            is-admin=\\\"isAdmin\\\"\\n            set-validity=\\\"setPullImageValidity\\\"\\n            check-rate-limits=\\\"true\\\"\\n          >\\n            <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n              <!-- node-selection -->\\n              <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n              <!-- !node-selection -->\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || !state.pullRateValid\\\"\\n                  ng-click=\\\"pullImage()\\\"\\n                  button-spinner=\\\"state.actionInProgress\\\"\\n                >\\n                  <span ng-hide=\\\"state.actionInProgress\\\">拉取镜像</span>\\n                  <span ng-show=\\\"state.actionInProgress\\\">下载进行中...</span>\\n                </button>\\n              </div>\\n            </div>\\n          </por-image-registry>\\n          <!-- !image-and-registry -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<information-panel-offline ng-if=\\\"offlineMode\\\"></information-panel-offline>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <images-datatable\\n      title-text=\\\"镜像\\\"\\n      title-icon=\\\"list\\\"\\n      dataset=\\\"images\\\"\\n      table-key=\\\"images\\\"\\n      order-by=\\\"RepoTags\\\"\\n      show-host-column=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n      download-action=\\\"downloadAction\\\"\\n      remove-action=\\\"removeAction\\\"\\n      force-remove-action=\\\"confirmRemovalAction\\\"\\n      export-in-progress=\\\"state.exportInProgress\\\"\\n      offline-mode=\\\"offlineMode\\\"\\n      refresh-callback=\\\"getImages\\\"\\n    ></images-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/images.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///30503\n");

}),

26447:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'导入镜像'\\\" breadcrumbs=\\\"[{label:'镜像', link:'docker.images'}, '导入镜像']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- upload -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 text-muted small\\\"> 你可以上传一个包含你的镜像的tar档案。 </span>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12 vertical-center\\\">\\n              <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ngf-min-size=\\\"10\\\" ng-model=\\\"formValues.UploadFile\\\">选择文件</button>\\n              <span class=\\\"ml-1\\\">\\n                {{ formValues.UploadFile.name }}\\n                <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\" ng-if=\\\"!formValues.UploadFile\\\"></pr-icon>\\n              </span>\\n            </div>\\n          </div>\\n          <!-- !upload -->\\n          <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n            <!-- node-selection -->\\n            <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n            <!-- !node-selection -->\\n          </div>\\n          <div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n            <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n              <rd-widget>\\n                <rd-widget-header icon=\\\"tag\\\" feather-icon=\\\"'true'\\\" title-text=\\\"标记镜像\\\"></rd-widget-header>\\n                <rd-widget-body>\\n                  <!-- image-and-registry -->\\n                  <por-image-registry\\n                    model=\\\"formValues.RegistryModel\\\"\\n                    label-class=\\\"col-sm-1\\\"\\n                    input-class=\\\"col-sm-11\\\"\\n                    endpoint=\\\"endpoint\\\"\\n                    is-admin=\\\"isAdmin\\\"\\n                    set-validity=\\\"setPullImageValidity\\\"\\n                    check-rate-limits=\\\"true\\\"\\n                  ></por-image-registry>\\n                </rd-widget-body>\\n              </rd-widget>\\n            </div>\\n          </div>\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !formValues.UploadFile\\\"\\n                ng-click=\\\"uploadImage()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">上传</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">正在上传镜像...</span>\\n              </button>\\n              <span class=\\\"text-danger ml-1\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/import/importimage.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///26447\n");

}),

8285:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建网络'\\\" breadcrumbs=\\\"[{label:'网络', link:'docker.networks'}, '添加网络']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"networkCreationForm\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"network_name\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-10 col-lg-11\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Name\\\" id=\\\"network_name\\\" placeholder=\\\"例如 myNetwork\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 驱动程序配置 </div>\\n          <!-- driver-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"network_driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">驱动</label>\\n            <div class=\\\"col-sm-10 col-lg-11\\\">\\n              <select class=\\\"form-control\\\" ng-options=\\\"driver for driver in availableNetworkDrivers\\\" ng-model=\\\"config.Driver\\\" ng-if=\\\"availableNetworkDrivers.length > 0\\\">\\n                <option disabled hidden value=\\\"\\\">选择驱动</option>\\n              </select>\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Driver\\\" id=\\\"network_driver\\\" placeholder=\\\"例如 driverName\\\" ng-if=\\\"availableNetworkDrivers.length === 0\\\" />\\n            </div>\\n          </div>\\n          <!-- !driver-input -->\\n          <!-- driver-options -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12 mt-1\\\">\\n              <label class=\\\"control-label text-left\\\">\\n                驱动程序选项\\n                <portainer-tooltip message=\\\"'驱动程序选项是特定于所选驱动程序的。请参考所选驱动程序的文件。'\\\"></portainer-tooltip>\\n              </label>\\n            </div>\\n            <!-- driver-options-input-list -->\\n            <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n              <div ng-repeat=\\\"option in formValues.DriverOptions\\\" class=\\\"mt-1\\\">\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">名称</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.name\\\" placeholder=\\\"例如 com.docker.network.bridge.enable_icc\\\" />\\n                </div>\\n                <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">value</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.value\\\" placeholder=\\\"例如 true\\\" />\\n                  <span class=\\\"input-group-btn\\\">\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeDriverOption($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </span>\\n                </div>\\n              </div>\\n              <div class=\\\"small interactive text-muted vertical-center mt-1\\\" ng-click=\\\"addDriverOption()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> 添加驱动选项\\n              </div>\\n            </div>\\n            <!-- !driver-options-input-list -->\\n          </div>\\n          <!-- !driver-options -->\\n          <!-- macvlan-management -->\\n          <network-macvlan-form ng-show=\\\"config.Driver === 'macvlan'\\\" data=\\\"formValues.Macvlan\\\" application-state=\\\"applicationState\\\"></network-macvlan-form>\\n          <!-- !macvlan-management -->\\n          <div ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'swarm'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> IPV4 网络配置 </div>\\n            <!-- subnet-gateway-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"ipv4_network_subnet\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">子网</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.Subnet\\\" id=\\\"ipv4_network_subnet\\\" placeholder=\\\"例如 172.20.0.0/16\\\" />\\n              </div>\\n              <label for=\\\"ipv4_network_gateway\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">网关</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.Gateway\\\" id=\\\"ipv4_network_gateway\\\" placeholder=\\\"例如 172.20.10.11\\\" />\\n              </div>\\n            </div>\\n            <!-- !subnet-gateway-inputs -->\\n            <!-- iprange-auxaddr-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"ipv4_network_iprange\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IP 范围</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.IPRange\\\" id=\\\"ipv4_network_iprange\\\" placeholder=\\\"例如 172.20.10.128/25\\\" />\\n              </div>\\n            </div>\\n            <div ng-repeat=\\\"auxAddress in formValues.IPV4.AuxiliaryAddresses track by $index\\\" class=\\\"form-group\\\">\\n              <label for=\\\"ipv4_network_auxaddr_{{ $index }}\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">排除 IP</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"formValues.IPV4.AuxiliaryAddresses[$index]\\\"\\n                  ng-change=\\\"checkIPV4AuxiliaryAddress($index)\\\"\\n                  id=\\\"ipv4_network_auxaddr_{{ $index }}\\\"\\n                  placeholder=\\\"例如 my-router=172.20.10.129\\\"\\n                />\\n              </div>\\n              <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeIPV4AuxAddress($index)\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n              </button>\\n              <div class=\\\"col-sm-12 small text-warning\\\" ng-if=\\\"state.IPV4AuxiliaryAddressesError[$index]\\\">\\n                <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 排除ip不能与网关相同。</p>\\n              </div>\\n            </div>\\n            <!-- !iprange-auxaddr-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 small interactive text-muted vertical-center\\\" ng-click=\\\"addIPV4AuxAddress()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> 添加排除的IP\\n              </div>\\n            </div>\\n          </div>\\n          <div ng-show=\\\"config.Driver === 'bridge' || (config.Driver === 'macvlan' && formValues.Macvlan.Scope !== 'swarm')\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> IPV6 网络配置 </div>\\n            <!-- subnet-gateway-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"ipv6_network_subnet\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">子网</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.Subnet\\\" id=\\\"ipv6_network_subnet\\\" placeholder=\\\"例如 2001:db8::/48\\\" />\\n              </div>\\n              <label for=\\\"ipv6_network_gateway\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">网关</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.Gateway\\\" id=\\\"ipv6_network_gateway\\\" placeholder=\\\"例如 2001:db8::1\\\" />\\n              </div>\\n            </div>\\n            <!-- !subnet-gateway-inputs -->\\n            <!-- iprange-auxaddr-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"ipv6_network_iprange\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IP 范围</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.IPRange\\\" id=\\\"ipv6_network_iprange\\\" placeholder=\\\"例如 2001:db8::/64\\\" />\\n              </div>\\n            </div>\\n            <div ng-repeat=\\\"auxAddress in formValues.IPV6.AuxiliaryAddresses track by $index\\\" class=\\\"form-group\\\">\\n              <label for=\\\"ipv6_network_auxaddr_{{ $index }}\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">排除 IP</label>\\n              <div class=\\\"col-sm-4 col-lg-5\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"formValues.IPV6.AuxiliaryAddresses[$index]\\\"\\n                  ng-change=\\\"checkIPV6AuxiliaryAddress($index)\\\"\\n                  id=\\\"ipv6_network_auxaddr_{{ $index }}\\\"\\n                  placeholder=\\\"例如 my-router=2001:db8::1\\\"\\n                />\\n              </div>\\n              <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeIPV6AuxAddress($index)\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n              </button>\\n              <div class=\\\"col-sm-12 small text-warning\\\" ng-show=\\\"state.IPV6AuxiliaryAddressesError[$index]\\\">\\n                <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 排除ip不能与网关相同。</p>\\n              </div>\\n            </div>\\n            <!-- !iprange-auxaddr-inputs -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 small interactive text-muted vertical-center\\\" ng-click=\\\"addIPV6AuxAddress()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> 添加排除的IP\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 高级配置 </div>\\n          <!-- labels -->\\n          <div class=\\\"form-group\\\">\\n            <!-- labels-input-list -->\\n            <div class=\\\"col-sm-12 form-inline\\\">\\n              <div ng-repeat=\\\"label in formValues.Labels\\\" class=\\\"mt-1\\\">\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">名称</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                </div>\\n                <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">value</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                  <span class=\\\"input-group-btn\\\">\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\"> <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon> </button\\n                  ></span>\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12 small interactive text-muted vertical-center mt-1\\\" ng-click=\\\"addLabel()\\\">\\n                  <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> 增加标签\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !labels-input-list -->\\n          </div>\\n          <!-- !labels-->\\n          <!-- internal -->\\n          <div class=\\\"form-group\\\" ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'local'\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"config.Internal\\\"\\n                label=\\\"'孤立网络'\\\"\\n                tooltip=\\\"'一个孤立的网络没有入站或出站的通信。'\\\"\\n                on-change=\\\"(onChangeInternal)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !internal -->\\n          <!-- attachable -->\\n          <div class=\\\"form-group\\\" ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'local'\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"config.Attachable\\\"\\n                label=\\\"'启用手动容器附件'\\\"\\n                on-change=\\\"(onChangeAttachable)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !attachable -->\\n          <div\\n            ng-if=\\\"\\n              applicationState.endpoint.mode.agentProxy &&\\n              applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' &&\\n              config.Driver !== 'overlay' &&\\n              config.Driver !== 'macvlan'\\n            \\\"\\n          >\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n            <!-- node-selection -->\\n            <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n            <!-- !node-selection -->\\n          </div>\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !config.Name || (config.Driver === 'macvlan' && networkCreationForm.$invalid) || !isValid()\\\"\\n                ng-click=\\\"create()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">创建网络</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">正在创建网络...</span>\\n              </button>\\n              <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/networks/create/createnetwork.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///8285\n");

}),

5147:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'网络列表'\\\" breadcrumbs=\\\"['网络']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel-offline ng-if=\\\"offlineMode\\\"></information-panel-offline>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <networks-datatable\\n      title-text=\\\"网络\\\"\\n      title-icon=\\\"share-2\\\"\\n      dataset=\\\"networks\\\"\\n      table-key=\\\"networks\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"removeAction\\\"\\n      show-host-column=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n      offline-mode=\\\"offlineMode\\\"\\n      refresh-callback=\\\"getNetworks\\\"\\n    ></networks-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/networks/networks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///5147\n");

}),

52707:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'Node Browser'\\\"\\n  breadcrumbs=\\\"[\\n    {\\n      label:'swarm',\\n      link:'docker.swarm'\\n    },\\n    {\\n      label: $ctrl.node.Hostname,\\n      link: 'docker.nodes.node',\\n      linkParams: { id: $ctrl.nodeId }\\n    },\\n    'browse'\\n  ]\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <host-browser ng-if=\\\"$ctrl.node\\\" endpoint-id=\\\"$ctrl.endpoint.Id\\\"></host-browser>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/nodes/node-browser/node-browser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///52707\n");

}),

89455:

(function(module) {

eval("var _module_exports = \"<host-overview\\n  agent-api-version=\\\"$ctrl.state.agentApiVersion\\\"\\n  is-agent=\\\"$ctrl.state.isAgent\\\"\\n  host-details=\\\"$ctrl.hostDetails\\\"\\n  engine-details=\\\"$ctrl.engineDetails\\\"\\n  disks=\\\"$ctrl.disks\\\"\\n  devices=\\\"$ctrl.devices\\\"\\n  refresh-url=\\\"docker.nodes.node\\\"\\n  browse-url=\\\"docker.nodes.node.browse\\\"\\n  is-job-enabled=\\\"$ctrl.state.isAdmin && $ctrl.state.isAgent\\\"\\n  host-features-enabled=\\\"$ctrl.state.enableHostManagementFeatures\\\"\\n  job-url=\\\"docker.nodes.node.job\\\"\\n  jobs=\\\"$ctrl.jobs\\\"\\n>\\n  <swarm-node-details-panel details=\\\"$ctrl.nodeDetails\\\" original-node=\\\"$ctrl.originalNode\\\"></swarm-node-details-panel>\\n</host-overview>\\n\";;\nvar path = 'app/docker/views/nodes/node-details/node-details-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///89455\n");

}),

73675:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"$ctrl.registry\\\">\\n  <page-header title=\\\"'Registry access'\\\" breadcrumbs=\\\"[{label:'Registries', link:$ctrl.registryTo,}, $ctrl.registry.Name, 'Access management']\\\"> </page-header>\\n\\n  <registry-details registry=\\\"$ctrl.registry\\\"></registry-details>\\n\\n  <por-access-management\\n    ng-if=\\\"$ctrl.endpointGroup\\\"\\n    access-controlled-entity=\\\"$ctrl.registryEndpointAccesses\\\"\\n    entity-type=\\\"registry\\\"\\n    action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n    update-access=\\\"$ctrl.updateAccess\\\"\\n    filter-users=\\\"$ctrl.filterUsers\\\"\\n  >\\n  </por-access-management>\\n</div>\\n\";;\nvar path = 'app/docker/views/registries/access/registryAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///73675\n");

}),

13702:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create secret'\\\" breadcrumbs=\\\"[{label:'Secrets', link:'docker.secrets'}, 'Add secret']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"secret_name\\\" class=\\\"col-sm-2 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"secret_name\\\" placeholder=\\\"例如 mySecret\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- secret-data -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"secret_data\\\" class=\\\"col-sm-2 control-label text-left\\\">Secret</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <textarea class=\\\"form-control\\\" rows=\\\"5\\\" ng-model=\\\"formValues.Data\\\" ng-trim=\\\"false\\\"></textarea>\\n            </div>\\n          </div>\\n          <!-- !secret-data -->\\n          <!-- encode-secret -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"formValues.encodeSecret\\\"\\n                label=\\\"'Encode secret'\\\"\\n                on-change=\\\"(handleEncodeSecretChange)\\\"\\n                tooltip=\\\"'Secrets need to be base64 encoded. Disable this if your secret is already base64 encoded.'\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !encode-secret -->\\n          <!-- labels -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12 mt-1\\\">\\n              <label class=\\\"control-label text-left space-right\\\">标签</label>\\n              <span class=\\\"label label-default interactive vertical-center space-left\\\" ng-click=\\\"addLabel()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 增加标签\\n              </span>\\n            </div>\\n            <!-- labels-input-list -->\\n            <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n              <div ng-repeat=\\\"label in formValues.Labels\\\" class=\\\"mt-1\\\">\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">名称</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                </div>\\n                <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">value</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                  <span class=\\\"input-group-btn\\\">\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !labels-input-list -->\\n          </div>\\n          <!-- !labels-->\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !formValues.Name || !formValues.Data\\\"\\n                ng-click=\\\"create()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">Create the secret</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">Creating secret...</span>\\n              </button>\\n              <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/secrets/create/createsecret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///13702\n");

}),

12685:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Secret details'\\\" breadcrumbs=\\\"[{label:'Secrets', link:'docker.secrets', linkParams:{ id: secret.Id }}, secret.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"lock\\\" feather-icon=\\\"true\\\" title-text=\\\"Secret details\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>名称</td>\\n              <td>{{ secret.Name }}</td>\\n            </tr>\\n            <tr>\\n              <td>ID</td>\\n              <td>\\n                {{ secret.Id }}\\n                <button authorization=\\\"DockerSecretDelete\\\" class=\\\"btn btn-xs btn-dangerlight\\\" ng-click=\\\"removeSecret(secret.Id)\\\"\\n                  ><pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除此机密</button\\n                >\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>创建</td>\\n              <td>{{ secret.CreatedAt | getisodate }}</td>\\n            </tr>\\n            <tr>\\n              <td>Last updated</td>\\n              <td>{{ secret.UpdatedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!(secret.Labels | emptyobject)\\\">\\n              <td>标签</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in secret.Labels\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"secret\\\"\\n  resource-id=\\\"secret.Id\\\"\\n  resource-control=\\\"secret.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\";;\nvar path = 'app/docker/views/secrets/edit/secret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///12685\n");

}),

8809:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Secrets list'\\\" breadcrumbs=\\\"['Secrets']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <secrets-datatable\\n      title-text=\\\"Secrets\\\"\\n      title-icon=\\\"lock\\\"\\n      dataset=\\\"secrets\\\"\\n      table-key=\\\"secrets\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"removeAction\\\"\\n      refresh-callback=\\\"getSecrets\\\"\\n    ></secrets-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/secrets/secrets.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///8809\n");

}),

53566:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create service'\\\" breadcrumbs=\\\"[{label:'Services', link:'docker.services'}, 'Add service']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"service_name\\\" class=\\\"col-sm-2 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"service_name\\\" placeholder=\\\"例如 myService\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 镜像配置 </div>\\n          <!-- image-and-registry -->\\n          <por-image-registry\\n            model=\\\"formValues.RegistryModel\\\"\\n            auto-complete=\\\"true\\\"\\n            label-class=\\\"col-sm-1\\\"\\n            input-class=\\\"col-sm-11\\\"\\n            endpoint=\\\"endpoint\\\"\\n            is-admin=\\\"isAdmin\\\"\\n            check-rate-limits=\\\"true\\\"\\n            set-validity=\\\"setPullImageValidity\\\"\\n          >\\n          </por-image-registry>\\n          <!-- !image-and-registry -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 调度 </div>\\n          <!-- scheduling-mode -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <label class=\\\"control-label text-left\\\"> 调度模式 </label>\\n              <div class=\\\"btn-group btn-group-sm\\\" style=\\\"margin-left: 20px\\\">\\n                <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.Mode\\\" uib-btn-radio=\\\"'global'\\\">全局</label>\\n                <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.Mode\\\" uib-btn-radio=\\\"'replicated'\\\">复制的</label>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group form-inline\\\" ng-if=\\\"formValues.Mode === 'replicated'\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <label class=\\\"control-label text-left\\\"> 复制副本 </label>\\n              <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Replicas\\\" id=\\\"replicas\\\" placeholder=\\\"例如 3\\\" style=\\\"margin-left: 20px\\\" />\\n            </div>\\n          </div>\\n          <!-- !scheduling-mode -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 端口配置 </div>\\n          <!-- port-mapping -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n              <label class=\\\"control-label text-left\\\">端口映射</label>\\n              <span class=\\\"label label-default interactive vertical-center\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPortBinding()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 映射附加端口\\n              </span>\\n            </div>\\n            <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n              <div ng-repeat=\\\"portBinding in formValues.Ports\\\" class=\\\"mt-1\\\">\\n                <!-- host-port -->\\n                <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">主机</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.PublishedPort\\\" placeholder=\\\"例如 80 or 1.2.3.4:80 (optional)\\\" />\\n                </div>\\n                <!-- !host-port -->\\n                <span style=\\\"margin: 0 10px 0 10px\\\">\\n                  <i class=\\\"fa fa-long-arrow-alt-right\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n                <!-- container-port -->\\n                <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">容器</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.TargetPort\\\" placeholder=\\\"例如 80\\\" />\\n                </div>\\n                <!-- !container-port -->\\n                <!-- protocol-actions -->\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <div class=\\\"btn-group btn-group-sm\\\">\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.Protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.Protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n                  </div>\\n                  <div class=\\\"btn-group btn-group-sm\\\">\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.PublishMode\\\" uib-btn-radio=\\\"'ingress'\\\">Ingress</label>\\n                    <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.PublishMode\\\" uib-btn-radio=\\\"'host'\\\">主机</label>\\n                  </div>\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </div>\\n                <!-- !protocol-actions -->\\n              </div>\\n            </div>\\n            <!-- !port-mapping-input-list -->\\n          </div>\\n          <!-- !port-mapping -->\\n          <!-- create-webhook -->\\n          <div ng-if=\\\"endpoint.Type !== 4 && isAdmin\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Webhooks </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  label-class=\\\"'col-sm-2'\\\"\\n                  checked=\\\"$ctrl.formValues.Webhook\\\"\\n                  label=\\\"'Create a service webhook'\\\"\\n                  on-change=\\\"(handleWebHookChange)\\\"\\n                  tooltip=\\\"'创建一个webhook（或回调URI）来自动更新这个服务。向这个回调URI发送一个POST请求（不需要任何认证），将拉出相关图像的最新版本并重新部署这个服务。'\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !create-webhook  -->\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || !volumesAreValid()\\\"\\n                ng-click=\\\"create()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">创建服务</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">创建服务中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <ul class=\\\"nav nav-pills nav-justified\\\">\\n          <li class=\\\"active interactive\\\"><a data-target=\\\"#command\\\" data-toggle=\\\"tab\\\">命令 & 日志记录</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#volumes\\\" data-toggle=\\\"tab\\\">存储卷</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#network\\\" data-toggle=\\\"tab\\\">网络</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#env\\\" data-toggle=\\\"tab\\\">环境变量</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#labels\\\" data-toggle=\\\"tab\\\">标签</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#update-config\\\" data-toggle=\\\"tab\\\">更新配置 & 重启</a></li>\\n          <li class=\\\"interactive\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"><a data-target=\\\"#secrets\\\" data-toggle=\\\"tab\\\">机密</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#configs\\\" data-toggle=\\\"tab\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">配置</a></li>\\n          <li class=\\\"interactive\\\"><a data-target=\\\"#resources-placement\\\" data-toggle=\\\"tab\\\" ng-click=\\\"refreshSlider()\\\">资源 & 限制</a></li>\\n        </ul>\\n        <!-- tab-content -->\\n        <div class=\\\"tab-content\\\">\\n          <!-- tab-command -->\\n          <div class=\\\"tab-pane active\\\" id=\\\"command\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 命令 </div>\\n              <!-- command-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"service_command\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">命令</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Command\\\" id=\\\"service_command\\\" placeholder=\\\"例如 /usr/bin/nginx -t -c /mynginx.conf\\\" />\\n                </div>\\n              </div>\\n              <!-- !command-input -->\\n              <!-- entrypoint-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"service_entrypoint\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Entrypoint</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.EntryPoint\\\" id=\\\"service_entrypoint\\\" placeholder=\\\"例如 /bin/sh -c\\\" />\\n                </div>\\n              </div>\\n              <!-- !entrypoint-input -->\\n              <!-- workdir-user-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"service_workingdir\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">工作目录</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.WorkingDir\\\" id=\\\"service_workingdir\\\" placeholder=\\\"例如 /myapp\\\" />\\n                </div>\\n                <label for=\\\"service_user\\\" class=\\\"col-sm-1 control-label text-left\\\">用户</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.User\\\" id=\\\"service_user\\\" placeholder=\\\"例如 nginx\\\" />\\n                </div>\\n              </div>\\n              <!-- !workdir-user-input -->\\n              <div class=\\\"col-sm-12 form-section-title\\\"> 日志 </div>\\n              <!-- logging-driver -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"log-driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">驱动</label>\\n                <div class=\\\"col-sm-4\\\">\\n                  <select class=\\\"form-control\\\" ng-model=\\\"formValues.LogDriverName\\\" id=\\\"log-driver\\\">\\n                    <option selected value=\\\"\\\">默认的日志驱动</option>\\n                    <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n                    <option value=\\\"none\\\">none</option>\\n                  </select>\\n                </div>\\n                <div class=\\\"col-sm-5\\\">\\n                  <p class=\\\"small text-muted\\\">\\n                    服务的日志驱动，将覆盖默认的docker daemon驱动\\n如果你不想覆盖它，选择默认的日志驱动。支持的日志驱动\\n                    <a href=\\\"https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers\\\" target=\\\"_blank\\\">可以在 Docker文档</a>中找到。\\n                  </p>\\n                </div>\\n              </div>\\n              <!-- !logging-driver -->\\n              <!-- logging-opts -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12 mt-1\\\">\\n                  <label class=\\\"control-label text-left\\\">选项 <portainer-tooltip\\n                      position=\\\"'top'\\\"\\n                      message=\\\"'除非选择了除无或默认之外的驱动程序，否则添加按钮将被禁用。选项是特定于所选驱动程序的，请参考驱动程序文档。'\\\"\\n                    ></portainer-tooltip>\\n                  </label>\\n                  <span\\n                    class=\\\"label label-default interactive vertical-center\\\"\\n                    style=\\\"margin-left: 10px\\\"\\n                    ng-click=\\\"!formValues.LogDriverName || formValues.LogDriverName === 'none' || addLogDriverOpt(formValues.LogDriverName)\\\"\\n                  >\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 增加日志驱动选项\\n                  </span>\\n                </div>\\n                <!-- logging-opts-input-list -->\\n                <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n                  <div ng-repeat=\\\"opt in formValues.LogDriverOpts\\\" class=\\\"mt-1\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">option</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.name\\\" placeholder=\\\"例如 FOO\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- logging-opts-input-list -->\\n              </div>\\n              <!-- !logging-opts -->\\n            </form>\\n          </div>\\n          <!-- !tab-command -->\\n          <!-- tab-volume -->\\n          <div class=\\\"tab-pane\\\" id=\\\"volumes\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- volumes -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">存储卷映射</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addVolume()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加额外存储卷\\n                  </span>\\n                </div>\\n                <!-- volumes-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"volume in formValues.Volumes\\\">\\n                    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n                      <!-- volume-line1 -->\\n                      <div class=\\\"col-sm-12 form-inline\\\">\\n                        <!-- container-path -->\\n                        <div class=\\\"input-group col-sm-6\\\">\\n                          <div class=\\\"input-group input-group-sm w-full\\\">\\n                            <span class=\\\"input-group-addon\\\">容器</span>\\n                            <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.Target\\\" placeholder=\\\"例如 /path/in/container\\\" />\\n                          </div>\\n                          <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Target\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 目标是必填的。\\n                          </div>\\n                        </div>\\n                        <!-- !container-path -->\\n                        <!-- volume-type -->\\n                        <div class=\\\"input-group col-sm-5\\\" style=\\\"margin-left: 5px; vertical-align: top\\\">\\n                          <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"allowBindMounts\\\">\\n                            <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.Type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.Source = null\\\">存储卷</label>\\n                            <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.Type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.Source = null\\\">绑定</label>\\n                          </div>\\n                          <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n                            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                          </button>\\n                        </div>\\n                        <!-- !volume-type -->\\n                      </div>\\n                      <!-- !volume-line1 -->\\n                      <!-- volume-line2 -->\\n                      <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 5px\\\">\\n                        <div style=\\\"height: 30px; display: inline-block; vertical-align: top; display: inline-flex; align-items: center\\\">\\n                          <i class=\\\"fa fa-long-arrow-alt-right\\\" aria-hidden=\\\"true\\\"></i>\\n                        </div>\\n                        <!-- volume -->\\n                        <div class=\\\"col-sm-6 input-group\\\" ng-if=\\\"volume.Type === 'volume'\\\" style=\\\"float: none; padding: 0\\\">\\n                          <div class=\\\"input-group input-group-sm w-full\\\">\\n                            <span class=\\\"input-group-addon\\\">存储卷</span>\\n                            <select\\n                              class=\\\"form-control\\\"\\n                              ng-model=\\\"volume.Source\\\"\\n                              ng-options=\\\"vol as ((vol.Id|truncate:30) + ' - ' + (vol.Driver|truncate:30)) for vol in availableVolumes\\\"\\n                            >\\n                              <option selected disabled value=\\\"\\\">选择存储卷</option>\\n                            </select>\\n                          </div>\\n                          <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Source\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 源是必填项。\\n                          </div>\\n                        </div>\\n                        <!-- !volume -->\\n                        <!-- bind -->\\n                        <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.Type === 'bind'\\\">\\n                          <div class=\\\"input-group input-group-sm w-full\\\">\\n                            <span class=\\\"input-group-addon\\\">主机</span>\\n                            <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.Source\\\" placeholder=\\\"例如 /path/on/host\\\" />\\n                          </div>\\n                          <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Source\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 源是必填项。\\n                          </div>\\n                        </div>\\n                        <!-- !bind -->\\n                        <!-- read-only -->\\n                        <div class=\\\"input-group input-group-sm col-sm-5\\\" style=\\\"margin-left: 5px; vertical-align: top\\\">\\n                          <div class=\\\"btn-group btn-group-sm\\\">\\n                            <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.ReadOnly\\\" uib-btn-radio=\\\"false\\\">读写</label>\\n                            <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.ReadOnly\\\" uib-btn-radio=\\\"true\\\">只读</label>\\n                          </div>\\n                        </div>\\n                        <!-- !read-only -->\\n                      </div>\\n                      <!-- !volume-line2 -->\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- !volumes-input-list -->\\n              </div>\\n              <!-- !volumes -->\\n            </form>\\n          </div>\\n          <!-- !tab-volume -->\\n          <!-- tab-network -->\\n          <div class=\\\"tab-pane\\\" id=\\\"network\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- network-input -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"container_network\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">网络</label>\\n                <div class=\\\"col-sm-9\\\">\\n                  <select class=\\\"form-control\\\" ng-model=\\\"formValues.Network\\\">\\n                    <option selected disabled hidden value=\\\"\\\">选择一个网络</option>\\n                    <option ng-repeat=\\\"net in availableNetworks | orderBy: 'Name'\\\" ng-value=\\\"net.Name\\\">{{ net.Name }}</option>\\n                  </select>\\n                </div>\\n                <div class=\\\"col-sm-2\\\"></div>\\n              </div>\\n              <!-- !network-input -->\\n              <!-- extra-networks -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">额外的网络</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addExtraNetwork()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加额外网络\\n                  </span>\\n                </div>\\n                <!-- network-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"network in formValues.ExtraNetworks\\\" style=\\\"margin-top: 2px\\\">\\n                    <select class=\\\"form-control\\\" ng-model=\\\"network.Name\\\">\\n                      <option selected disabled hidden value=\\\"\\\">选择一个网络</option>\\n                      <option ng-repeat=\\\"net in availableNetworks\\\" ng-value=\\\"net.Name\\\">{{ net.Name }}</option>\\n                    </select>\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeExtraNetwork($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !network-input-list -->\\n              </div>\\n              <!-- !extra-networks -->\\n              <!-- extra-hosts-variables -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">主机文件条目</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addHostsEntry()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加附加条目\\n                  </span>\\n                </div>\\n                <!-- hosts-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"variable in formValues.HostsEntries\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"variable.value\\\" placeholder=\\\"例如 host:IP\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeHostsEntry($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !hosts-input-list -->\\n              </div>\\n              <!-- !extra-hosts-variables -->\\n            </form>\\n          </div>\\n          <!-- !tab-network -->\\n          <!-- tab-env -->\\n          <div class=\\\"tab-pane\\\" id=\\\"env\\\">\\n            <environment-variables-panel\\n              ng-model=\\\"formValues.Env\\\"\\n              explanation=\\\"这些值将在创建时应用于服务\\\"\\n              on-change=\\\"(handleEnvVarChange)\\\"\\n            ></environment-variables-panel>\\n          </div>\\n          <!-- !tab-env -->\\n          <!-- tab-labels -->\\n          <div class=\\\"tab-pane\\\" id=\\\"labels\\\">\\n            <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n              <!-- labels -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">服务标签</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addLabel()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加服务标签\\n                  </span>\\n                </div>\\n                <!-- labels-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"label in formValues.Labels\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">名称</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !labels-input-list -->\\n              </div>\\n              <!-- !labels-->\\n              <!-- container-labels -->\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n                  <label class=\\\"control-label text-left\\\">容器标签</label>\\n                  <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addContainerLabel()\\\">\\n                    <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加容器标签\\n                  </span>\\n                </div>\\n                <!-- container-labels-input-list -->\\n                <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                  <div ng-repeat=\\\"label in formValues.ContainerLabels\\\" style=\\\"margin-top: 2px\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">名称</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeContainerLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !container-labels-input-list -->\\n              </div>\\n              <!-- !container-labels-->\\n            </form>\\n          </div>\\n          <!-- !tab-labels -->\\n          <!-- tab-update-config -->\\n          <div class=\\\"tab-pane\\\" id=\\\"update-config\\\" ng-include=\\\"'app/docker/views/services/create/includes/update-restart.html'\\\"></div>\\n          <!-- !tab-update-config -->\\n          <!-- tab-secrets -->\\n          <div class=\\\"tab-pane\\\" id=\\\"secrets\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" ng-include=\\\"'app/docker/views/services/create/includes/secret.html'\\\"></div>\\n          <!-- !tab-secrets -->\\n          <!-- tab-configs -->\\n          <div class=\\\"tab-pane\\\" id=\\\"configs\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\" ng-include=\\\"'app/docker/views/services/create/includes/config.html'\\\"></div>\\n          <!-- !tab-configs -->\\n          <!-- tab-resources-placement -->\\n          <div class=\\\"tab-pane\\\" id=\\\"resources-placement\\\" ng-include=\\\"'app/docker/views/services/create/includes/resources-placement.html'\\\"></div>\\n          <!-- !tab-resources-placement -->\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/create/createservice.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53566\n");

}),

98876:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n      <label class=\\\"control-label text-left\\\">配置</label>\\n      <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addConfig()\\\">\\n        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加配置\\n      </span>\\n    </div>\\n    <!-- info message -->\\n    <div class=\\\"form-group\\\" ng-show=\\\"formValues.Configs.$invalid\\\" style=\\\"margin-bottom: 0px\\\">\\n      <div class=\\\"col-sm-12 small text-warning\\\" style=\\\"padding-left: 35px; padding-top: 20px\\\">\\n        <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> {{ formValues.Configs.$error }}\\n      </div>\\n    </div>\\n    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n      <div ng-repeat=\\\"config in formValues.Configs\\\" style=\\\"margin-top: 2px\\\">\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">配置</span>\\n          <select class=\\\"form-control\\\" ng-change=\\\"checkIfConfigDuplicated()\\\" ng-model=\\\"config.model\\\" ng-options=\\\"config.Name for config in availableConfigs | orderBy: 'Name'\\\">\\n            <option value=\\\"\\\" selected=\\\"selected\\\">选择配置</option>\\n          </select>\\n        </div>\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">容器中的路径</span>\\n          <input class=\\\"form-control\\\" ng-model=\\\"config.FileName\\\" placeholder=\\\"例如 /path/in/container\\\" />\\n        </div>\\n        <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeConfig($index)\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </div>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/config.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98876\n");

}),

14714:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Resources </div>\\n  <!-- memory-reservation-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> Memory reservation </label>\\n    <div class=\\\"col-sm-3\\\">\\n      <slider model=\\\"formValues.MemoryReservation\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxMemory\\\" step=\\\"256\\\" ng-if=\\\"state.sliderMaxMemory\\\"></slider>\\n    </div>\\n    <div class=\\\"col-sm-2\\\">\\n      <input type=\\\"number\\\" min=\\\"0\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MemoryReservation\\\" />\\n    </div>\\n    <div class=\\\"col-sm-4\\\">\\n      <p class=\\\"small text-muted\\\" style=\\\"margin-top: 7px\\\"> Minimum memory available on a node to run a task (<b>MB</b>) </p>\\n    </div>\\n  </div>\\n  <!-- !memory-reservation-input -->\\n  <!-- memory-limit-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> Memory limit </label>\\n    <div class=\\\"col-sm-3\\\">\\n      <slider model=\\\"formValues.MemoryLimit\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxMemory\\\" step=\\\"256\\\" ng-if=\\\"state.sliderMaxMemory\\\"></slider>\\n    </div>\\n    <div class=\\\"col-sm-2\\\">\\n      <input type=\\\"number\\\" min=\\\"0\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MemoryLimit\\\" />\\n    </div>\\n    <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 7px\\\">\\n      <p class=\\\"small text-muted\\\"> Maximum memory usage per task (<b>MB</b>) </p>\\n    </div>\\n  </div>\\n  <!-- !memory-limit-input -->\\n  <!-- cpu-reservation-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"cpu-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU reservation </label>\\n    <div class=\\\"col-sm-5\\\">\\n      <slider model=\\\"formValues.CpuReservation\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxCpu\\\" step=\\\"0.25\\\" precision=\\\"2\\\" ng-if=\\\"state.sliderMaxCpu\\\"></slider>\\n    </div>\\n    <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 20px\\\">\\n      <p class=\\\"small text-muted\\\"> Minimum CPU available on a node to run a task </p>\\n    </div>\\n  </div>\\n  <!-- !cpu-reservation-input -->\\n  <!-- cpu-limit-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU limit </label>\\n    <div class=\\\"col-sm-5\\\">\\n      <slider model=\\\"formValues.CpuLimit\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxCpu\\\" step=\\\"0.25\\\" precision=\\\"2\\\" ng-if=\\\"state.sliderMaxCpu\\\"></slider>\\n    </div>\\n    <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 20px\\\">\\n      <p class=\\\"small text-muted\\\"> Maximum CPU usage per task </p>\\n    </div>\\n  </div>\\n  <!-- !cpu-limit-input -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Placement </div>\\n  <!-- placement-constraints -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n      <label class=\\\"control-label text-left\\\">Placement constraints</label>\\n      <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPlacementConstraint()\\\">\\n        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> placement constraint\\n      </span>\\n    </div>\\n    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n      <div ng-repeat=\\\"constraint in formValues.PlacementConstraints\\\" style=\\\"margin-top: 2px\\\">\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">名称</span>\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.key\\\" placeholder=\\\"例如 node.role\\\" />\\n        </div>\\n        <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n          <select name=\\\"constraintOperator\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.operator\\\">\\n            <option value=\\\"==\\\">==</option>\\n            <option value=\\\"!=\\\">!=</option>\\n          </select>\\n        </div>\\n        <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">value</span>\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.value\\\" placeholder=\\\"例如 manager\\\" />\\n        </div>\\n        <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementConstraint($index)\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !placement-constraints -->\\n  <!-- placement-preferences -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n      <label class=\\\"control-label text-left\\\">Placement preferences</label>\\n      <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPlacementPreference()\\\">\\n        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> placement preference\\n      </span>\\n    </div>\\n    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n      <div ng-repeat=\\\"preference in formValues.PlacementPreferences\\\" style=\\\"margin-top: 2px\\\">\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">strategy</span>\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"preference.strategy\\\" placeholder=\\\"例如 spread\\\" />\\n        </div>\\n        <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">value</span>\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"preference.value\\\" placeholder=\\\"例如 node.labels.datacenter\\\" />\\n        </div>\\n        <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementPreference($index)\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !placement-preferences -->\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/resources-placement.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///14714\n");

}),

61573:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12 small text-muted\\\">\\n      By default, secrets will be available under <code>/run/secrets/$SECRET_NAME</code> in containers (Linux) or\\n      <code>C:\\\\ProgramData\\\\Docker\\\\secrets\\\\$SECRET_NAME</code> (Windows).</div\\n    >\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n      <label class=\\\"control-label text-left\\\">Secrets</label>\\n      <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addSecret()\\\">\\n        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> add a secret\\n      </span>\\n    </div>\\n    <!-- info message -->\\n    <div class=\\\"form-group\\\" ng-show=\\\"formValues.Secrets.$invalid\\\" style=\\\"margin-bottom: 0px\\\">\\n      <div class=\\\"col-sm-12 small text-warning\\\" style=\\\"padding-left: 35px; padding-top: 20px\\\">\\n        <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> {{ formValues.Secrets.$error }}\\n      </div>\\n    </div>\\n    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n      <div ng-repeat=\\\"secret in formValues.Secrets track by $index\\\" style=\\\"margin-top: 4px\\\">\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">secret</span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"secret.model\\\" ng-change=\\\"checkIfSecretDuplicated()\\\" ng-options=\\\"secret.Name for secret in availableSecrets | orderBy: 'Name'\\\">\\n            <option value=\\\"\\\" selected=\\\"selected\\\">Select a secret</option>\\n          </select>\\n        </div>\\n        <div class=\\\"input-group col-sm-4 input-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && secret.overrideTarget\\\">\\n          <span class=\\\"input-group-addon\\\">target</span>\\n          <input class=\\\"form-control\\\" ng-model=\\\"secret.target\\\" placeholder=\\\"/path/in/container\\\" />\\n        </div>\\n        <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n          <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n            <label class=\\\"btn btn-light\\\" ng-model=\\\"secret.overrideTarget\\\" uib-btn-radio=\\\"false\\\">Default location</label>\\n            <label class=\\\"btn btn-light\\\" ng-model=\\\"secret.overrideTarget\\\" uib-btn-radio=\\\"true\\\">覆盖</label>\\n          </div>\\n          <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeSecret($index)\\\">\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/secret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///61573\n");

}),

74827:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Update config </div>\\n  <!-- parallelism-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"parallelism\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update parallelism</label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Parallelism\\\" id=\\\"parallelism\\\" placeholder=\\\"例如 1\\\" />\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Maximum number of tasks to be updated simultaneously (0 to update all at once). </p>\\n    </div>\\n  </div>\\n  <!-- !parallelism-input -->\\n  <!-- delay-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"update-delay\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Update delay\\n      <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.UpdateDelay\\\" id=\\\"update-delay\\\" placeholder=\\\"例如 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Amount of time between updates expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 0s, 0 seconds. </p>\\n    </div>\\n  </div>\\n  <!-- !delay-input -->\\n  <!-- failureAction-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"failure-action\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update failure action</label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <div class=\\\"btn-group btn-group-sm\\\">\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.FailureAction\\\" uib-btn-radio=\\\"'continue'\\\">Continue</label>\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.FailureAction\\\" uib-btn-radio=\\\"'pause'\\\">Pause</label>\\n      </div>\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Action taken on failure to start after update. </p>\\n    </div>\\n  </div>\\n  <!-- !failureAction-input -->\\n  <!-- order-input -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.29\\\">\\n    <label for=\\\"update-order\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update order</label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <div class=\\\"btn-group btn-group-sm\\\">\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.UpdateOrder\\\" uib-btn-radio=\\\"'start-first'\\\">start-first</label>\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.UpdateOrder\\\" uib-btn-radio=\\\"'stop-first'\\\">stop-first</label>\\n      </div>\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Operation order on failure. </p>\\n    </div>\\n  </div>\\n  <!-- !order-input -->\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Restart policy </div>\\n  <!-- restartCondition-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"restart-condition\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Restart condition</label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <div class=\\\"btn-group btn-group-sm\\\">\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'none'\\\">None</label>\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'on-failure'\\\">On-failure</label>\\n        <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'any'\\\">Any</label>\\n      </div>\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Restart when condition is met (default condition \\\"any\\\"). </p>\\n    </div>\\n  </div>\\n  <!-- !restartCondition-input -->\\n  <!-- restartDelay-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"restart-delay\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Restart delay\\n      <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartDelay\\\" id=\\\"restart-delay\\\" placeholder=\\\"例如 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Delay between restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 5s, 5 seconds. </p>\\n    </div>\\n  </div>\\n  <!-- !restartDelay-input -->\\n  <!-- restartMaxAttempts-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"restart-max-attempts\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Restart max attempts</label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartMaxAttempts\\\" id=\\\"restart-max-attempts\\\" placeholder=\\\"例如 0\\\" />\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\"> Maximum attempts to restart a given task before giving up (default value is 0, which means unlimited). </p>\\n    </div>\\n  </div>\\n  <!-- !restartMaxAttempts-input -->\\n  <!-- restartWindow-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"restart-window\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Restart window\\n      <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-4 col-lg-3\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartWindow\\\" id=\\\"restart-window\\\" placeholder=\\\"例如 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n    </div>\\n    <div class=\\\"col-sm-5\\\">\\n      <p class=\\\"small text-muted\\\">\\n        Time window to evaluate restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 0 seconds, which is unbounded.\\n      </p>\\n    </div>\\n  </div>\\n  <!-- !restartWindow-input -->\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/update-restart.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///74827\n");

}),

74612:

(function(module) {

eval("var _module_exports = \"<form ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\" id=\\\"service-configs\\\" ng-submit=\\\"updateService(service)\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"配置\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        添加配置:\\n        <select class=\\\"form-control\\\" ng-options=\\\"config.Name for config in configs | orderBy: 'Name'\\\" ng-model=\\\"newConfig\\\">\\n          <option selected disabled hidden value=\\\"\\\">选择配置</option>\\n        </select>\\n        <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"addConfig(service, newConfig)\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加配置 </a>\\n      </div>\\n      <table class=\\\"table\\\" style=\\\"margin-top: 5px\\\">\\n        <thead>\\n          <tr>\\n            <th>名称</th>\\n            <th>容器中的路径</th>\\n            <th>UID</th>\\n            <th>GID</th>\\n            <th>模式</th>\\n            <th></th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"config in service.ServiceConfigs\\\">\\n            <td\\n              ><a ui-sref=\\\"docker.configs.config({id: config.Id})\\\">{{ config.Name }}</a></td\\n            >\\n            <td>\\n              <input\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"config.FileName\\\"\\n                ng-change=\\\"updateConfig(service)\\\"\\n                placeholder=\\\"例如 /path/in/container\\\"\\n                required\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>{{ config.Uid }}</td>\\n            <td>{{ config.Gid }}</td>\\n            <td>{{ config.Mode }}</td>\\n            <td authorization=\\\"DockerServiceUpdate\\\">\\n              <button class=\\\"btn btn-dangerlight pull-right\\\" type=\\\"button\\\" ng-click=\\\"removeConfig(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n              </button>\\n            </td>\\n          </tr>\\n          <tr ng-if=\\\"service.ServiceConfigs.length === 0\\\">\\n            <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有与此服务关联的配置。</td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceConfigs'])\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceConfigs'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/configs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///74612\n");

}),

17590:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"service.ServiceConstraints\\\" id=\\\"service-placement-constraints\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Placement constraints\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addPlacementConstraint(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> placement constraint\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.ServiceConstraints.length === 0\\\">\\n      <p>这项服务没有安置限制。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.ServiceConstraints.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>名称</th>\\n            <th>Operator</th>\\n            <th>Value</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"constraint in service.ServiceConstraints\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"constraint.key\\\"\\n                  placeholder=\\\"例如 node.role\\\"\\n                  ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <select\\n                  name=\\\"constraintOperator\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"constraint.operator\\\"\\n                  ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                >\\n                  <option value=\\\"==\\\">==</option>\\n                  <option value=\\\"!=\\\">!=</option>\\n                </select>\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"constraint.value\\\"\\n                  placeholder=\\\"例如 manager\\\"\\n                  ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementConstraint(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceConstraints'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceConstraints'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/constraints.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///17590\n");

}),

83431:

(function(module) {

eval("var _module_exports = \"<div>\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"容器规格\\\"></rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <tbody>\\n          <tr>\\n            <td>CMD</td>\\n            <td\\n              ><code ng-if=\\\"service.Command\\\">{{ service.Command | command }}</code></td\\n            >\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 要执行的命令。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>参数</td>\\n            <td\\n              ><code ng-if=\\\"service.Arguments\\\">{{ service.Arguments }}</code></td\\n            >\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 传递给容器中命令的参数。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>用户</td>\\n            <td>{{ service.User }}</td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 用户名或UID。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>工作目录</td>\\n            <td>{{ service.Dir }}</td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 容器内的工作目录。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>停止宽限时间</td>\\n            <td>{{ service.StopGracePeriod }}</td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 强制终止一个容器之前的等待时间（默认为无）。 </p>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/container-specs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83431\n");

}),

33964:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-container-labels\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"容器标签\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addContainerLabel(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 容器标签\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.ServiceContainerLabels.length === 0\\\">\\n      <p>这项服务没有容器标签。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.ServiceContainerLabels.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>Label</th>\\n            <th>Value</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"label in service.ServiceContainerLabels\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">名称</span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"label.key\\\"\\n                  placeholder=\\\"例如 com.example.foo\\\"\\n                  ng-change=\\\"updateContainerLabel(service, label)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"label.value\\\"\\n                  placeholder=\\\"例如 bar\\\"\\n                  ng-change=\\\"updateContainerLabel(service, label)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeContainerLabel(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceContainerLabels'])\\\" ng-click=\\\"updateService(service)\\\"\\n            >应用更改</button\\n          >\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceContainerLabels'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/containerlabels.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///33964\n");

}),

73631:

(function(module) {

eval("var _module_exports = \"<ng-form ng-if=\\\"service.EnvironmentVariables\\\" id=\\\"service-env-variables\\\" name=\\\"serviceEnvForm\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"环境变量\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addEnvironmentVariable(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 环境变量\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.EnvironmentVariables.length === 0\\\">\\n      <p>这个服务没有环境变量。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.EnvironmentVariables.length > 0\\\">\\n      <environment-variables-panel is-name-disabled=\\\"true\\\" ng-model=\\\"service.EnvironmentVariables\\\" on-change=\\\"(onChangeEnvVars)\\\"></environment-variables-panel>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-primary btn-sm\\\"\\n            ng-disabled=\\\"!hasChanges(service, ['EnvironmentVariables']) || serviceEnvForm.$invalid\\\"\\n            ng-click=\\\"updateService(service)\\\"\\n          >\\n            应用变更\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['EnvironmentVariables'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</ng-form>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/environmentvariables.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///73631\n");

}),

49394:

(function(module) {

eval("var _module_exports = \"<div>\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"主机文件条目\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addHostsEntry(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加主机条目\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"!service.Hosts || service.Hosts.length === 0\\\">\\n      <p>Hosts文件没有额外的条目。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.Hosts.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>主机名</th>\\n            <th>IP</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"entry in service.Hosts\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"entry.hostname\\\"\\n                  placeholder=\\\"例如 example.com\\\"\\n                  ng-change=\\\"updateHostsEntry(service, entry)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"entry.ip\\\"\\n                  placeholder=\\\"例如 10.0.1.1\\\"\\n                  ng-change=\\\"updateHostsEntry(service, entry)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeHostsEntry(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Hosts'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['Hosts'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/hosts.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///49394\n");

}),

69480:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-container-image\\\" authorization=\\\"DockerServiceUpdate\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Change container image\\\"> </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"!isUpdating\\\">\\n      <form class=\\\"form-horizontal\\\">\\n        <por-image-registry\\n          model=\\\"formValues.RegistryModel\\\"\\n          auto-complete=\\\"true\\\"\\n          label-class=\\\"col-sm-1\\\"\\n          input-class=\\\"col-sm-11\\\"\\n          endpoint=\\\"endpoint\\\"\\n          is-admin=\\\"isAdmin\\\"\\n          check-rate-limits=\\\"true\\\"\\n          set-validity=\\\"setPullImageValidity\\\"\\n        >\\n        </por-image-registry>\\n      </form>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"isUpdating\\\">\\n      <p>在服务更新时，镜像修改被禁用。</p>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Image'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['Image'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/image.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///69480\n");

}),

47300:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-logging-driver\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Logging driver\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        驱动:\\n        <select class=\\\"form-control\\\" ng-model=\\\"service.LogDriverName\\\" ng-change=\\\"updateLogDriverName(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <option selected value=\\\"\\\">默认的日志驱动</option>\\n          <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n          <option value=\\\"none\\\">none</option>\\n        </select>\\n        <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"!service.LogDriverName || service.LogDriverName === 'none' || addLogDriverOpt(service)\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 增加日志驱动选项\\n        </a>\\n      </div>\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>Option</th>\\n            <th>Value</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"option in service.LogDriverOpts\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">名称</span>\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.key\\\" ng-disabled=\\\"option.added || isUpdating\\\" placeholder=\\\"例如 FOO\\\" />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"option.value\\\"\\n                  ng-change=\\\"updateLogDriverOpt(service, option)\\\"\\n                  placeholder=\\\"例如 bar\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n          <tr ng-if=\\\"service.LogDriverOpts.length === 0\\\">\\n            <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有与此日志驱动相关的选项。</td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['LogDriverName', 'LogDriverOpts'])\\\" ng-click=\\\"updateService(service)\\\"\\n            >应用更改</button\\n          >\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['LogDriverName', 'LogDriverOpts'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/logging.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///47300\n");

}),

95765:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"service.ServiceMounts\\\" id=\\\"service-mounts\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Mounts\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addMount(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> mount\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.ServiceMounts.length === 0\\\">\\n      <p>此服务没有装载。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.ServiceMounts.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th ng-if=\\\"isAdmin || allowBindMounts\\\">类别</th>\\n            <th>源</th>\\n            <th>目标</th>\\n            <th authorization=\\\"DockerServiceUpdate\\\">只读</th>\\n            <th authorization=\\\"DockerServiceUpdate\\\">操作</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"mount in service.ServiceMounts\\\">\\n            <td ng-if=\\\"isAdmin || allowBindMounts\\\">\\n              <select\\n                name=\\\"mountType\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"mount.Type\\\"\\n                ng-change=\\\"onChangeMountType(service, mount)\\\"\\n                ng-disabled=\\\"isUpdating\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              >\\n                <option value=\\\"volume\\\">存储卷</option>\\n                <option value=\\\"bind\\\">绑定</option>\\n              </select>\\n            </td>\\n            <td>\\n              <select\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"mount.Source\\\"\\n                ng-change=\\\"updateMount(service, mount)\\\"\\n                ng-options=\\\"vol.Id as ((vol.Id|truncate:30) + ' - ' + (vol.Driver|truncate:30))  for vol in availableVolumes\\\"\\n                ng-if=\\\"mount.Type === 'volume'\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              >\\n                <option selected disabled hidden value=\\\"\\\">选择存储卷</option>\\n              </select>\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                name=\\\"\\\"\\n                ng-model=\\\"mount.Source\\\"\\n                placeholder=\\\"例如 /tmp/portainer/data\\\"\\n                ng-change=\\\"updateMount(service, mount)\\\"\\n                ng-disabled=\\\"isUpdating || (!isAdmin && !allowBindMounts && mount.Type === 'bind')\\\"\\n                ng-if=\\\"mount.Type === 'bind'\\\"\\n              />\\n              <div class=\\\"col-sm-12 small text-warning\\\" ng-show=\\\"!mount.Source\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 源是必填项。\\n              </div>\\n            </td>\\n            <td>\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"mount.Target\\\"\\n                placeholder=\\\"例如 /tmp/portainer/data\\\"\\n                ng-change=\\\"updateMount(service, mount)\\\"\\n                ng-disabled=\\\"isUpdating\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n              <div class=\\\"col-sm-12 small text-warning\\\" ng-show=\\\"!mount.Target\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 目标是必填的。\\n              </div>\\n            </td>\\n            <td authorization=\\\"DockerServiceUpdate\\\">\\n              <input type=\\\"checkbox\\\" class=\\\"form-control\\\" ng-model=\\\"mount.ReadOnly\\\" ng-change=\\\"updateMount(service, mount)\\\" ng-disabled=\\\"isUpdating\\\" />\\n            </td>\\n            <td authorization=\\\"DockerServiceUpdate\\\">\\n              <span class=\\\"input-group-btn\\\">\\n                <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeMount(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                </button>\\n              </span>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!mountsAreValid() || !hasChanges(service, ['ServiceMounts'])\\\" ng-click=\\\"updateService(service)\\\">\\n            应用变更\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceMounts'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/mounts.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///95765\n");

}),

2224:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-network-specs\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"网络\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addNetwork(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 网络\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"!service.Networks || service.Networks.length === 0\\\">\\n      <p>这项服务没有连接到任何网络。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.Networks && service.Networks.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>名称</th>\\n            <th>ID</th>\\n            <th>IP 地址</th>\\n            <th>操作</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"network in service.Networks\\\">\\n            <td>\\n              <select\\n                ng-if=\\\"network.Editable\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"network.Id\\\"\\n                ng-change=\\\"updateNetwork(service)\\\"\\n                ng-options=\\\"net.Id as net.Name for net in filterNetworks(swarmNetworks, network)\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n                style=\\\"width: initial; min-width: 50%\\\"\\n              >\\n                <option disabled value=\\\"\\\" selected>选择一个网络</option>\\n              </select>\\n              <span ng-if=\\\"!network.Editable\\\">{{ network.Name }}</span>\\n            </td>\\n            <td>\\n              <a ui-sref=\\\"docker.networks.network({id: network.Id})\\\">{{ network.Id }}</a>\\n            </td>\\n            <td>\\n              {{ network.Addr }}\\n            </td>\\n            <td ng-if=\\\"network.Editable\\\" authorization=\\\"DockerServiceUpdate\\\">\\n              <span class=\\\"input-group-btn\\\">\\n                <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeNetwork(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                </button>\\n              </span>\\n            </td>\\n            <td ng-if=\\\"!network.Editable\\\"></td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"isUpdating || !hasChanges(service, ['Networks'])\\\" ng-click=\\\"updateService(service)\\\">\\n            应用变更\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['Networks'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/networks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2224\n");

}),

82292:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"service.ServicePreferences\\\" id=\\\"service-placement-preferences\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Placement preferences\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addPlacementPreference(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 安置优先权\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.ServicePreferences.length === 0\\\">\\n      <p>这项服务没有安置的优先权。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.ServicePreferences.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>Strategy</th>\\n            <th>Value</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"preference in service.ServicePreferences\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"preference.strategy\\\"\\n                  placeholder=\\\"例如 node.role\\\"\\n                  ng-change=\\\"updatePlacementPreference(service, preference)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"preference.value\\\"\\n                  placeholder=\\\"例如 manager\\\"\\n                  ng-change=\\\"updatePlacementPreference(service, preference)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementPreference(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServicePreferences'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServicePreferences'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/placementPreferences.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///82292\n");

}),

31402:

(function(module) {

eval("var _module_exports = \"<div>\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"已发布端口\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addPublishedPort(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 端口映射\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"!service.Ports || service.Ports.length === 0\\\">\\n      <p>这项服务没有公布任何端口。</p>\\n    </rd-widget-body>\\n    <rd-widget-body ng-if=\\\"service.Ports && service.Ports.length > 0\\\" classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th>主机端口</th>\\n            <th>容器端口</th>\\n            <th>协议</th>\\n            <th>发布模式</th>\\n            <th authorization=\\\"DockerServiceUpdate\\\">操作</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"portBinding in service.Ports\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon\\\">主机</span>\\n                <input\\n                  type=\\\"number\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"portBinding.PublishedPort\\\"\\n                  placeholder=\\\"例如 8080\\\"\\n                  ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon\\\">容器</span>\\n                <input\\n                  type=\\\"number\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"portBinding.TargetPort\\\"\\n                  placeholder=\\\"例如 80\\\"\\n                  ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <select\\n                  class=\\\"selectpicker form-control\\\"\\n                  ng-model=\\\"portBinding.Protocol\\\"\\n                  ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                >\\n                  <option value=\\\"tcp\\\">tcp</option>\\n                  <option value=\\\"udp\\\">udp</option>\\n                </select>\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <select\\n                  class=\\\"selectpicker form-control\\\"\\n                  ng-model=\\\"portBinding.PublishMode\\\"\\n                  ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                >\\n                  <option value=\\\"ingress\\\">ingress</option>\\n                  <option value=\\\"host\\\">主机</option>\\n                </select>\\n              </div>\\n            </td>\\n            <td authorization=\\\"DockerServiceUpdate\\\">\\n              <span class=\\\"input-group-btn\\\">\\n                <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePortPublishedBinding(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                </button>\\n              </span>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Ports'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['Ports'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/ports.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///31402\n");

}),

95266:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-resources\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Resource limits and reservations\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <tbody>\\n          <tr>\\n            <td style=\\\"vertical-align: middle\\\"> 保留的内存（MB） </td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"number\\\"\\n                step=\\\"0.125\\\"\\n                min=\\\"0\\\"\\n                ng-model=\\\"service.ReservationMemoryBytes\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'ReservationMemoryBytes')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <p class=\\\"small text-muted\\\"> 节点上运行任务的最小可用内存（设置为0表示无限制）。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td style=\\\"vertical-align: middle\\\"> 内存限制（MB） </td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"number\\\"\\n                step=\\\"0.125\\\"\\n                min=\\\"0\\\"\\n                ng-model=\\\"service.LimitMemoryBytes\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'LimitMemoryBytes')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <p class=\\\"small text-muted\\\"> 每个任务的最大内存使用量（设置为0表示无限制）。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <div> CPU保留 </div>\\n            </td>\\n            <td>\\n              <slider\\n                model=\\\"service.ReservationNanoCPUs\\\"\\n                floor=\\\"0\\\"\\n                ceil=\\\"state.sliderMaxCpu\\\"\\n                step=\\\"0.25\\\"\\n                precision=\\\"2\\\"\\n                ng-if=\\\"service && state.sliderMaxCpu\\\"\\n                on-change=\\\"updateServiceAttribute(service, 'ReservationNanoCPUs')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              ></slider>\\n            </td>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <p class=\\\"small text-muted\\\"> 节点上可用来运行任务的最小CPU </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <div> CPU限制 </div>\\n            </td>\\n            <td>\\n              <slider\\n                model=\\\"service.LimitNanoCPUs\\\"\\n                floor=\\\"0\\\"\\n                ceil=\\\"state.sliderMaxCpu\\\"\\n                step=\\\"0.25\\\"\\n                precision=\\\"2\\\"\\n                ng-if=\\\"service && state.sliderMaxCpu\\\"\\n                on-change=\\\"updateServiceAttribute(service, 'LimitNanoCPUs')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              ></slider>\\n            </td>\\n            <td style=\\\"vertical-align: middle\\\">\\n              <p class=\\\"small text-muted\\\"> 每个任务的最大CPU使用率 </p>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-primary btn-sm\\\"\\n            ng-disabled=\\\"!hasChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])\\\"\\n            ng-click=\\\"updateService(service)\\\"\\n            >应用更改</button\\n          >\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/resources.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///95266\n");

}),

418:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-restart-policy\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Restart policy\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <tbody>\\n          <tr>\\n            <td>重启条件</td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <select\\n                  class=\\\"selectpicker form-control\\\"\\n                  ng-model=\\\"service.RestartCondition\\\"\\n                  ng-change=\\\"updateServiceAttribute(service, 'RestartCondition')\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                >\\n                  <option value=\\\"none\\\">无</option>\\n                  <option value=\\\"on-failure\\\">On failure</option>\\n                  <option value=\\\"any\\\">Any</option>\\n                </select>\\n              </div>\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 重新启动的条件。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>重新启动延迟</td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"text\\\"\\n                ng-model=\\\"service.RestartDelay\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'RestartDelay')\\\"\\n                ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                重启尝试之间的延迟，用数字和单位（ns|us|ms|s|m|h）表示。默认值是5s，5秒。\\n              </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>重新启动的最大尝试</td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"number\\\"\\n                ng-model=\\\"service.RestartMaxAttempts\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'RestartMaxAttempts')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 在放弃之前，重新启动一个给定任务的最大尝试（默认值是0，这意味着无限）。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>重启窗口</td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"text\\\"\\n                ng-model=\\\"service.RestartWindow\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'RestartWindow')\\\"\\n                ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                评估重启尝试的时间窗口，用数字和单位（ns|us|ms|s|m|h）表示。默认值是0秒，不受限制。\\n              </p>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-primary btn-sm\\\"\\n            ng-disabled=\\\"!hasChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])\\\"\\n            ng-click=\\\"updateService(service)\\\"\\n            >应用更改</button\\n          >\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/restart.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///418\n");

}),

13269:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" id=\\\"service-secrets\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Secrets\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        Add a secret:\\n        <select class=\\\"form-control\\\" ng-options=\\\"secret.Name for secret in secrets | orderBy: 'Name'\\\" ng-model=\\\"state.addSecret.secret\\\">\\n          <option selected disabled hidden value=\\\"\\\">Select a secret</option>\\n        </select>\\n        <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && state.addSecret.override\\\">\\n          Target:\\n          <input class=\\\"form-control\\\" ng-model=\\\"state.addSecret.target\\\" placeholder=\\\"/path/in/container\\\" />\\n        </div>\\n        <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n          <label class=\\\"btn btn-light\\\" ng-model=\\\"state.addSecret.override\\\" uib-btn-radio=\\\"false\\\">Default location</label>\\n          <label class=\\\"btn btn-light\\\" ng-model=\\\"state.addSecret.override\\\" uib-btn-radio=\\\"true\\\">覆盖</label>\\n        </div>\\n        <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"addSecret(service, state.addSecret)\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> add secret </a>\\n      </div>\\n      <table class=\\\"table\\\" style=\\\"margin-top: 5px\\\">\\n        <thead>\\n          <tr>\\n            <th>名称</th>\\n            <th>File name</th>\\n            <th>UID</th>\\n            <th>GID</th>\\n            <th>Mode</th>\\n            <th></th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"secret in service.ServiceSecrets\\\">\\n            <td\\n              ><a ui-sref=\\\"docker.secrets.secret({id: secret.Id})\\\">{{ secret.Name }}</a></td\\n            >\\n            <td>{{ secret.FileName }}</td>\\n            <td>{{ secret.Uid }}</td>\\n            <td>{{ secret.Gid }}</td>\\n            <td>{{ secret.Mode }}</td>\\n            <td authorization=\\\"DockerServiceUpdate\\\">\\n              <button class=\\\"btn btn-dangerlight pull-right\\\" type=\\\"button\\\" ng-click=\\\"removeSecret(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n              </button>\\n            </td>\\n          </tr>\\n          <tr ng-if=\\\"service.ServiceSecrets.length === 0\\\">\\n            <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">No secrets associated to this service.</td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceSecrets'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceSecrets'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/secrets.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///13269\n");

}),

91082:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-labels\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Service labels\\\">\\n      <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n        <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addLabel(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> label\\n        </a>\\n      </div>\\n    </rd-widget-header>\\n    <rd-widget-body ng-if=\\\"service.ServiceLabels.length === 0\\\">\\n      <p>这项服务没有任何标签。</p>\\n    </rd-widget-body>\\n    <rd-widget-body classes=\\\"no-padding\\\" ng-if=\\\"service.ServiceLabels.length > 0\\\">\\n      <table class=\\\"table\\\">\\n        <thead>\\n          <tr>\\n            <th> Label </th>\\n            <th> Value </th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr ng-repeat=\\\"label in service.ServiceLabels\\\">\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">名称</span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"label.key\\\"\\n                  placeholder=\\\"例如 com.example.foo\\\"\\n                  ng-change=\\\"updateLabel(service, label)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n              </div>\\n            </td>\\n            <td>\\n              <div class=\\\"input-group input-group-sm\\\">\\n                <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"label.value\\\"\\n                  placeholder=\\\"例如 bar\\\"\\n                  ng-change=\\\"updateLabel(service, label)\\\"\\n                  ng-disabled=\\\"isUpdating\\\"\\n                  disable-authorization=\\\"DockerServiceUpdate\\\"\\n                />\\n                <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                  </button>\\n                </span>\\n              </div>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceLabels'])\\\" ng-click=\\\"updateService(service)\\\">应用更改</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['ServiceLabels'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/servicelabels.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///91082\n");

}),

72493:

(function(module) {

eval("var _module_exports = \"<div ng-if=\\\"tasks.length > 0 && nodes\\\" id=\\\"service-tasks\\\">\\n  <tasks-datatable\\n    title-text=\\\"Tasks\\\"\\n    title-icon=\\\"list\\\"\\n    dataset=\\\"tasks\\\"\\n    table-key=\\\"service-tasks\\\"\\n    order-by=\\\"Updated\\\"\\n    reverse-order=\\\"true\\\"\\n    nodes=\\\"nodes\\\"\\n    show-slot-column=\\\"service.Mode !== 'global'\\\"\\n    show-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n    agent-proxy=\\\"applicationState.endpoint.mode.agentProxy\\\"\\n  ></tasks-datatable>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/tasks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///72493\n");

}),

87512:

(function(module) {

eval("var _module_exports = \"<div id=\\\"service-update-config\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"list\\\" feather-icon=\\\"true\\\" title-text=\\\"Update configuration\\\"> </rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <table class=\\\"table\\\">\\n        <tbody>\\n          <tr>\\n            <td>Update Parallelism</td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"number\\\"\\n                ng-model=\\\"service.UpdateParallelism\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'UpdateParallelism')\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 同时更新的最大任务数（0表示一次全部更新）。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>更新延迟</td>\\n            <td>\\n              <input\\n                class=\\\"input-sm\\\"\\n                type=\\\"text\\\"\\n                ng-model=\\\"service.UpdateDelay\\\"\\n                ng-change=\\\"updateServiceAttribute(service, 'UpdateDelay')\\\"\\n                ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n                disable-authorization=\\\"DockerServiceUpdate\\\"\\n              />\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 更新之间的时间量，用数字和单位（ns|us|ms|s|m|h）表示。例如：1m。 </p>\\n            </td>\\n          </tr>\\n          <tr>\\n            <td>更新失败的操作</td>\\n            <td>\\n              <div class=\\\"form-group\\\">\\n                <label class=\\\"radio-inline\\\">\\n                  <input\\n                    type=\\\"radio\\\"\\n                    name=\\\"failure_action\\\"\\n                    ng-model=\\\"service.UpdateFailureAction\\\"\\n                    value=\\\"continue\\\"\\n                    ng-change=\\\"updateServiceAttribute(service, 'UpdateFailureAction')\\\"\\n                    disable-authorization=\\\"DockerServiceUpdate\\\"\\n                  />\\n                  继续\\n                </label>\\n                <label class=\\\"radio-inline\\\">\\n                  <input\\n                    type=\\\"radio\\\"\\n                    name=\\\"failure_action\\\"\\n                    ng-model=\\\"service.UpdateFailureAction\\\"\\n                    value=\\\"pause\\\"\\n                    ng-change=\\\"updateServiceAttribute(service, 'UpdateFailureAction')\\\"\\n                    disable-authorization=\\\"DockerServiceUpdate\\\"\\n                  />\\n                  暂停\\n                </label>\\n              </div>\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 对更新后未能启动采取的操作。 </p>\\n            </td>\\n          </tr>\\n          <tr ng-if=\\\"applicationState.endpoint.apiVersion >= 1.29\\\">\\n            <td>排序</td>\\n            <td>\\n              <div class=\\\"form-group\\\">\\n                <label class=\\\"radio-inline\\\">\\n                  <input\\n                    type=\\\"radio\\\"\\n                    name=\\\"updateconfig_order\\\"\\n                    ng-model=\\\"service.UpdateOrder\\\"\\n                    value=\\\"start-first\\\"\\n                    ng-change=\\\"updateServiceAttribute(service, 'UpdateOrder')\\\"\\n                    disable-authorization=\\\"DockerServiceUpdate\\\"\\n                  />\\n                  先启动\\n                </label>\\n                <label class=\\\"radio-inline\\\">\\n                  <input\\n                    type=\\\"radio\\\"\\n                    name=\\\"updateconfig_order\\\"\\n                    ng-model=\\\"service.UpdateOrder\\\"\\n                    value=\\\"stop-first\\\"\\n                    ng-change=\\\"updateServiceAttribute(service, 'UpdateOrder')\\\"\\n                    disable-authorization=\\\"DockerServiceUpdate\\\"\\n                  />\\n                  先启动\\n                </label>\\n              </div>\\n            </td>\\n            <td>\\n              <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 失败时的操作顺序。 </p>\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </rd-widget-body>\\n    <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n      <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n        <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-primary btn-sm\\\"\\n            ng-disabled=\\\"!hasChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])\\\"\\n            ng-click=\\\"updateService(service)\\\"\\n            >应用更改</button\\n          >\\n          <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n            <span class=\\\"caret\\\"></span>\\n          </button>\\n          <ul class=\\\"dropdown-menu\\\">\\n            <li><a ng-click=\\\"cancelChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])\\\">重置变更</a></li>\\n            <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n          </ul>\\n        </div>\\n      </div>\\n    </rd-widget-footer>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/updateconfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///87512\n");

}),

66973:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'服务细节'\\\" breadcrumbs=\\\"[{label:'Services', link:'docker.services'}, service.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div ng-if=\\\"isUpdating\\\" class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <div class=\\\"alert alert-info\\\" role=\\\"alert\\\" id=\\\"service-update-alert\\\">\\n      <p>这项服务正在更新中。编辑这项服务目前是禁用的。</p>\\n      <a ui-sref=\\\"docker.services.service({id: service.Id}, {reload: true})\\\">刷新以查看该服务是否已完成更新。</a>\\n    </div>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-9 col-md-9 col-xs-9\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"shuffle\\\" feather-icon=\\\"true\\\" title-text=\\\"Service details\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>名称</td>\\n              <td ng-if=\\\"applicationState.endpoint.apiVersion <= 1.24\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"service.Name\\\" ng-change=\\\"updateServiceAttribute(service, 'Name')\\\" ng-disabled=\\\"isUpdating\\\" />\\n              </td>\\n              <td ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\">\\n                {{ service.Name }}\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>ID</td>\\n              <td>\\n                {{ service.Id }}\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"service.CreatedAt\\\">\\n              <td>创建于</td>\\n              <td>{{ service.CreatedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"service.UpdatedAt\\\">\\n              <td>最后更新于</td>\\n              <td>{{ service.UpdatedAt | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"service.Version\\\">\\n              <td>版本</td>\\n              <td>{{ service.Version }}</td>\\n            </tr>\\n            <tr>\\n              <td>调度模式</td>\\n              <td>{{ service.Mode }}</td>\\n            </tr>\\n            <tr ng-if=\\\"service.Mode === 'replicated'\\\">\\n              <td>复制副本</td>\\n              <td>\\n                <span ng-if=\\\"service.Mode === 'replicated'\\\">\\n                  <input\\n                    class=\\\"input-sm\\\"\\n                    type=\\\"number\\\"\\n                    ng-model=\\\"service.Replicas\\\"\\n                    ng-change=\\\"updateServiceAttribute(service, 'Replicas')\\\"\\n                    disable-authorization=\\\"DockerServiceUpdate\\\"\\n                  />\\n                </span>\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>镜像</td>\\n              <td>{{ service.Image }}</td>\\n            </tr>\\n            <tr ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n              <td colspan=\\\"{{ webhookURL ? '1' : '2' }}\\\">\\n                <por-switch-field\\n                  tooltip=\\\"'用于自动更新此服务的Webhook（或回调URI）。向这个回调URI发送一个POST请求（不需要任何认证）将拉出相关图像的最新版本并重新部署这个服务。'\\\"\\n                  checked=\\\"WebhookExists\\\"\\n                  disabled=\\\"!isAdmin\\\"\\n                  on-change=\\\"(onWebhookChange)\\\"\\n                  label=\\\"'Service webhook'\\\"\\n                ></por-switch-field>\\n              </td>\\n              <td ng-if=\\\"webhookURL\\\">\\n                <span class=\\\"text-muted\\\">{{ webhookURL | truncatelr }}</span>\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary btn-sm space-left\\\" ng-if=\\\"webhookURL\\\" ng-click=\\\"copyWebhook()\\\">\\n                  <span><i class=\\\"fa fa-copy space-right\\\" aria-hidden=\\\"true\\\"></i>复制链接</span>\\n                </button>\\n                <span>\\n                  <i id=\\\"copyNotification\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-left: 7px; display: none\\\"></i>\\n                </span>\\n              </td>\\n            </tr>\\n            <tr authorization=\\\"DockerServiceLogs, DockerServiceUpdate, DockerServiceDelete\\\">\\n              <td colspan=\\\"2\\\">\\n                <p class=\\\"small text-muted\\\" authorization=\\\"DockerServiceUpdate\\\">\\n                  注意：你只能回滚一级的变化。点击回滚按钮而不做新的修改，将撤消你之前的回滚。 </p\\n                ><p>\\n                  <a\\n                    authorization=\\\"DockerServiceLogs\\\"\\n                    ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"\\n                    class=\\\"btn btn-primary btn-sm\\\"\\n                    type=\\\"button\\\"\\n                    ui-sref=\\\"docker.services.service.logs({id: service.Id})\\\"\\n                    ><i class=\\\"fa fa-file-alt space-right\\\" aria-hidden=\\\"true\\\"></i>服务日志</a\\n                  >\\n                  <button\\n                    authorization=\\\"DockerServiceUpdate\\\"\\n                    type=\\\"button\\\"\\n                    class=\\\"btn btn-primary btn-sm\\\"\\n                    ng-disabled=\\\"state.updateInProgress || isUpdating\\\"\\n                    ng-click=\\\"forceUpdateService(service)\\\"\\n                    button-spinner=\\\"state.updateInProgress\\\"\\n                    ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n                  >\\n                    <span ng-hide=\\\"state.updateInProgress\\\"><i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i>更新服务</span>\\n                    <span ng-show=\\\"state.updateInProgress\\\">正在更新中...</span>\\n                  </button>\\n                  <button\\n                    authorization=\\\"DockerServiceUpdate\\\"\\n                    type=\\\"button\\\"\\n                    class=\\\"btn btn-primary btn-sm\\\"\\n                    ng-disabled=\\\"state.rollbackInProgress || isUpdating\\\"\\n                    ng-click=\\\"rollbackService(service)\\\"\\n                    button-spinner=\\\"state.rollbackInProgress\\\"\\n                    ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n                  >\\n                    <span ng-hide=\\\"state.rollbackInProgress\\\"><i class=\\\"fa fa-undo space-right\\\" aria-hidden=\\\"true\\\"></i>回滚服务</span>\\n                    <span ng-show=\\\"state.rollbackInProgress\\\">回滚过程中...</span>\\n                  </button>\\n                  <button\\n                    authorization=\\\"DockerServiceDelete\\\"\\n                    type=\\\"button\\\"\\n                    class=\\\"btn btn-danger btn-sm\\\"\\n                    ng-disabled=\\\"state.deletionInProgress || isUpdating\\\"\\n                    ng-click=\\\"removeService()\\\"\\n                    button-spinner=\\\"state.deletionInProgress\\\"\\n                  >\\n                    <span ng-hide=\\\"state.deletionInProgress\\\"><i class=\\\"fa fa-trash-alt space-right\\\" aria-hidden=\\\"true\\\"></i>删除该服务</span>\\n                    <span ng-show=\\\"state.deletionInProgress\\\">正在删除...</span>\\n                  </button>\\n                </p></td\\n              >\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n      <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n        <p class=\\\"small text-muted\\\">\\n          你需要帮助吗？在 <a href=\\\"https://docs.docker.com/engine/reference/commandline/service_update/\\\" target=\\\"self\\\">此处</a>查看Docker服务文档。\\n        </p>\\n        <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n          <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-disabled=\\\"!hasChanges(service, ['Mode', 'Replicas', 'Name', 'Webhooks'])\\\" ng-click=\\\"updateService(service)\\\"\\n              >应用更改</button\\n            >\\n            <button type=\\\"button\\\" class=\\\"btn btn-default dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n              <span class=\\\"caret\\\"></span>\\n            </button>\\n            <ul class=\\\"dropdown-menu\\\">\\n              <li><a ng-click=\\\"cancelChanges(service, ['Mode', 'Replicas', 'Name'])\\\">重置变更</a></li>\\n              <li><a ng-click=\\\"cancelChanges(service)\\\">重置所有更改</a></li>\\n            </ul>\\n          </div>\\n        </div>\\n      </rd-widget-footer>\\n    </rd-widget>\\n  </div>\\n\\n  <div class=\\\"col-lg-3 col-md-3 col-xs-3\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-bars\\\" title-text=\\\"快速导航\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <ul class=\\\"nav nav-pills nav-stacked\\\">\\n          <li><a href ng-click=\\\"goToItem('service-env-variables')\\\">环境变量</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-container-image')\\\">容器镜像</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-container-labels')\\\">容器标签</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-mounts')\\\">挂载</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-network-specs')\\\">网络 &amp; 已发布端口</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-resources')\\\">资源限制 &amp; 保留</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-placement-constraints')\\\">放置限制</a></li>\\n          <li ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"><a href ng-click=\\\"goToItem('service-placement-preferences')\\\">放置首选项</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-restart-policy')\\\">重新启动政策</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-update-config')\\\">更新配置</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-logging')\\\">日志</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-labels')\\\">服务标签</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-configs')\\\">配置</a></li>\\n          <li ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"><a href ng-click=\\\"goToItem('service-secrets')\\\">Secrets</a></li>\\n          <li><a href ng-click=\\\"goToItem('service-tasks')\\\">任务</a></li>\\n        </ul>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"service\\\"\\n  resource-id=\\\"service.Id\\\"\\n  resource-control=\\\"service.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\">\\n  <hr />\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <h3 id=\\\"container-specs\\\">容器规格</h3>\\n    <div id=\\\"service-container-spec\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/container-specs.html'\\\"></div>\\n    <div id=\\\"service-container-image\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/image.html'\\\"></div>\\n    <div id=\\\"service-env-variables\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/environmentvariables.html'\\\"></div>\\n    <div id=\\\"service-container-labels\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/containerlabels.html'\\\"></div>\\n    <div id=\\\"service-mounts\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/mounts.html'\\\"></div>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <hr />\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <h3 id=\\\"service-network-specs\\\">网络 &amp; 端口</h3>\\n    <div id=\\\"service-networks\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/networks.html'\\\"></div>\\n    <div id=\\\"service-published-ports\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/ports.html'\\\"></div>\\n    <div id=\\\"service-hosts-entries\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/hosts.html'\\\"></div>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <hr />\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <h3 id=\\\"service-specs\\\">服务规范</h3>\\n    <div id=\\\"service-resources\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/resources.html'\\\"></div>\\n    <div id=\\\"service-placement-constraints\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/constraints.html'\\\"></div>\\n    <div\\n      id=\\\"service-placement-preferences\\\"\\n      ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"\\n      class=\\\"padding-top\\\"\\n      ng-include=\\\"'app/docker/views/services/edit/includes/placementPreferences.html'\\\"\\n    ></div>\\n    <div id=\\\"service-restart-policy\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/restart.html'\\\"></div>\\n    <div id=\\\"service-update-config\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/updateconfig.html'\\\"></div>\\n    <div id=\\\"service-logging\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/logging.html'\\\"></div>\\n    <div id=\\\"service-labels\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/servicelabels.html'\\\"></div>\\n    <div id=\\\"service-configs\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/configs.html'\\\"></div>\\n    <div id=\\\"service-secrets\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/secrets.html'\\\"></div>\\n    <div id=\\\"service-tasks\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/tasks.html'\\\"></div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/service.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///66973\n");

}),

42382:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'服务日志'\\\"\\n  breadcrumbs=\\\"[\\n    {\\n      label: 'Services',\\n      link: 'docker.services'\\n    },\\n    {\\n      label: service.Name,\\n      link: 'docker.services.service',\\n      linkParams: { id: service.Id }\\n    },\\n    'Logs'\\n  ]\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n  data=\\\"logs\\\"\\n  ng-if=\\\"logs\\\"\\n  log-collection-change=\\\"changeLogCollection\\\"\\n  display-timestamps=\\\"state.displayTimestamps\\\"\\n  line-count=\\\"state.lineCount\\\"\\n  since-timestamp=\\\"state.sinceTimestamp\\\"\\n  resource-name=\\\"service.Name\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/services/logs/servicelogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///42382\n");

}),

3903:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'服务清单'\\\" breadcrumbs=\\\"['Services']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"services\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <services-datatable\\n      title-text=\\\"服务\\\"\\n      title-icon=\\\"shuffle\\\"\\n      dataset=\\\"services\\\"\\n      table-key=\\\"services\\\"\\n      order-by=\\\"Name\\\"\\n      nodes=\\\"nodes\\\"\\n      agent-proxy=\\\"applicationState.endpoint.mode.agentProxy\\\"\\n      show-update-action=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n      show-task-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n      show-add-action=\\\"true\\\"\\n      show-stack-column=\\\"true\\\"\\n      refresh-callback=\\\"getServices\\\"\\n      endpoint-public-url=\\\"endpoint.PublicURL\\\"\\n      endpoint-id=\\\"endpoint.Id\\\"\\n    ></services-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/services.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///3903\n");

}),

12367:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Cluster overview'\\\" breadcrumbs=\\\"['Swarm']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"trello\\\" feather-icon=\\\"true\\\" title-text=\\\"Cluster status\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>Nodes</td>\\n              <td>{{ info.Swarm.Nodes }}</td>\\n            </tr>\\n            <tr>\\n              <td>Docker API version</td>\\n              <td>{{ docker.ApiVersion }}</td>\\n            </tr>\\n            <tr>\\n              <td>Total CPU</td>\\n              <td>{{ totalCPU }}</td>\\n            </tr>\\n            <tr>\\n              <td>Total memory</td>\\n              <td>{{ totalMemory | humansize: 2 }}</td>\\n            </tr>\\n            <tr>\\n              <td colspan=\\\"2\\\">\\n                <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n                  <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>Go to cluster visualizer</a>\\n                </div>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <nodes-datatable\\n      title-text=\\\"Nodes\\\"\\n      title-icon=\\\"trello\\\"\\n      dataset=\\\"nodes\\\"\\n      table-key=\\\"nodes\\\"\\n      order-by=\\\"Hostname\\\"\\n      show-ip-address-column=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n      access-to-node-details=\\\"isAdmin\\\"\\n      refresh-callback=\\\"getNodes\\\"\\n    ></nodes-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/swarm/swarm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///12367\n");

}),

40640:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Swarm visualizer'\\\" breadcrumbs=\\\"[{label:'Swarm', link:'docker.swarm'}, {label:'Cluster visualizer', link:'docker.swarm.visualizer'}]\\\" reload=\\\"true\\\">\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"trello\\\" feather-icon=\\\"true\\\" title-text=\\\"Cluster information\\\">\\n        <div class=\\\"pull-right\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"changeShowInformationPanel(true)\\\" ng-if=\\\"!state.ShowInformationPanel\\\">显示</button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"changeShowInformationPanel(false)\\\" ng-if=\\\"state.ShowInformationPanel\\\">隐藏</button>\\n        </div>\\n      </rd-widget-header>\\n      <rd-widget-body ng-if=\\\"state.ShowInformationPanel\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>节点</td>\\n              <td>{{ nodes.length }}</td>\\n            </tr>\\n            <tr>\\n              <td>服务</td>\\n              <td>{{ services.length }}</td>\\n            </tr>\\n            <tr>\\n              <td>任务</td>\\n              <td>{{ tasks.length }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\">选项 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"state.DisplayOnlyRunningTasks\\\"\\n                label=\\\"'Only display running tasks'\\\"\\n                on-change=\\\"(handleChangeDisplayOnlyRunningTasks)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-2'\\\"\\n                checked=\\\"state.DisplayNodeLabels\\\"\\n                label=\\\"'Display node labels'\\\"\\n                on-change=\\\"(handleChangeDisplayNodeLabels)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n        </form>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 刷新 </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"refreshRate\\\" class=\\\"col-sm-2 margin-sm-top control-label text-left\\\">\\n              速率\\n              <i id=\\\"refreshRateChange\\\" class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"display: none\\\"></i>\\n            </label>\\n            <div class=\\\"col-sm-2\\\">\\n              <select id=\\\"refreshRate\\\" ng-model=\\\"state.refreshRate\\\" ng-change=\\\"changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n                <option value=\\\"5\\\">5s</option>\\n                <option value=\\\"10\\\">10s</option>\\n                <option value=\\\"30\\\">30s</option>\\n                <option value=\\\"60\\\">60s</option>\\n              </select>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"visualizerData\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"trello\\\" feather-icon=\\\"true\\\" title-text=\\\"集群显示仪\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <div class=\\\"visualizer_container\\\">\\n          <div class=\\\"node\\\" ng-repeat=\\\"node in visualizerData.nodes | orderBy : ['Role', 'Hostname'] track by $index\\\">\\n            <div class=\\\"node_info\\\">\\n              <div>\\n                <div>\\n                  <b>{{ node.Name || node.Hostname }}</b>\\n                  <span class=\\\"node_platform\\\">\\n                    <i class=\\\"fab fa-linux\\\" aria-hidden=\\\"true\\\" ng-if=\\\"node.PlatformOS === 'linux'\\\"></i>\\n                    <i class=\\\"fab fa-windows\\\" aria-hidden=\\\"true\\\" ng-if=\\\"node.PlatformOS === 'windows'\\\"></i>\\n                  </span>\\n                </div>\\n              </div>\\n              <div>{{ node.Role }}</div>\\n              <div>CPU: {{ node.CPUs / 1000000000 }}</div>\\n              <div>内存: {{ node.Memory | humansize: 2 }}</div>\\n              <div\\n                ><span class=\\\"label label-{{ node.Status | nodestatusbadge }}\\\">{{ node.Status }}</span></div\\n              >\\n              <div class=\\\"node_labels\\\" ng-if=\\\"node.Labels.length > 0 && state.DisplayNodeLabels\\\">\\n                <div>标签</div>\\n                <div class=\\\"node_label\\\" ng-repeat=\\\"label in node.Labels\\\">\\n                  <span class=\\\"label_key\\\">\\n                    {{ label.key }}\\n                  </span>\\n                  <span class=\\\"label_value\\\" ng-if=\\\"label.value\\\"> = {{ label.value }} </span>\\n                </div>\\n              </div>\\n            </div>\\n            <div class=\\\"tasks\\\">\\n              <div\\n                class=\\\"task task_{{ task.Status.State | visualizerTask }}\\\"\\n                style=\\\"border: 2px solid {{ task.ServiceId | visualizerTaskBorderColor }}\\\"\\n                ng-repeat=\\\"task in node.Tasks | orderBy: 'ServiceName' | filter: (state.DisplayOnlyRunningTasks || '') && { Status: { State: 'running' } }\\\"\\n              >\\n                <div class=\\\"service_name\\\">{{ task.ServiceName }}</div>\\n                <div>镜像: {{ task.Spec.ContainerSpec.Image | hideshasum }}</div>\\n                <div>状态: {{ task.Status.State }}</div>\\n                <div>更新: {{ task.Updated | getisodate }}</div>\\n                <div ng-if=\\\"task.Spec.Resources.Limits.MemoryBytes\\\">内存现在: {{ task.Spec.Resources.Limits.MemoryBytes | humansize: 2:2 }}</div>\\n                <div ng-if=\\\"task.Spec.Resources.Limits.NanoCPUs\\\">CPU 限制: {{ task.Spec.Resources.Limits.NanoCPUs / 1000000000 }}</div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/swarm/visualizer/swarmvisualizer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///40640\n");

}),

32240:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'任务详情'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Services', link:'docker.services' },\\n    { \\n      label: service.Name,\\n      link: 'docker.services.service', \\n      linkParams:{ id: service.Id }\\n    }, task.Id]\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"task && service\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-tasks\\\" title-text=\\\"Task status\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>ID</td>\\n              <td>{{ task.Id }}</td>\\n            </tr>\\n            <tr>\\n              <td>状态</td>\\n              <td\\n                ><span class=\\\"label label-{{ task.Status.State | taskstatusbadge }}\\\">{{ task.Status.State }}</span></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>状态消息</td>\\n              <td>{{ task.Status.Message }}</td>\\n            </tr>\\n            <tr ng-if=\\\"task.Status.Err\\\">\\n              <td>错误消息</td>\\n              <td\\n                ><code>{{ task.Status.Err }}</code></td\\n              >\\n            </tr>\\n            <tr>\\n              <td>镜像</td>\\n              <td>{{ task.Spec.ContainerSpec.Image | hideshasum }}</td>\\n            </tr>\\n            <tr ng-if=\\\"service.Mode !== 'global'\\\">\\n              <td>Slot</td>\\n              <td>{{ task.Slot }}</td>\\n            </tr>\\n            <tr>\\n              <td>创建</td>\\n              <td>{{ task.Created | getisodate }}</td>\\n            </tr>\\n            <tr ng-if=\\\"task.Status.ContainerStatus.ContainerID\\\">\\n              <td>容器 ID</td>\\n              <td>{{ task.Status.ContainerStatus.ContainerID }}</td>\\n            </tr>\\n            <tr ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && task.Status.State | taskhaslogs\\\">\\n              <td colspan=\\\"2\\\"\\n                ><a class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\" ui-sref=\\\"docker.tasks.task.logs({id: task.Id})\\\"\\n                  ><i class=\\\"fa fa-file-alt space-right\\\" aria-hidden=\\\"true\\\"></i>任务日志</a\\n                ></td\\n              >\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/tasks/edit/task.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///32240\n");

}),

62770:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'任务详情'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Services', link:'docker.services' },\\n    { \\n      label:service.Name,\\n      link:'docker.services.service', \\n      linkParams:{ id: service.Id }\\n    }, \\n    { \\n      label:task.Id,\\n      link:'docker.tasks.task', \\n      linkParams:{ id: task.Id }\\n    },\\n    'Logs']\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n  data=\\\"logs\\\"\\n  ng-if=\\\"logs\\\"\\n  log-collection-change=\\\"changeLogCollection\\\"\\n  display-timestamps=\\\"state.displayTimestamps\\\"\\n  line-count=\\\"state.lineCount\\\"\\n  since-timestamp=\\\"state.sinceTimestamp\\\"\\n  resource-name=\\\"task.Id\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/tasks/logs/tasklogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62770\n");

}),

90347:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'存储卷浏览'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'存储卷', link:'docker.volumes' },\\n    { \\n      label:volumeId,\\n      link: 'docker.volumes.volume', \\n      linkParams:{ id: volumeId }\\n    }, 'browse']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <volume-browser volume-id=\\\"volumeId\\\" node-name=\\\"nodeName\\\" is-upload-enabled=\\\"agentApiVersion > 1\\\" endpoint-id=\\\"endpointId\\\"></volume-browser>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/browse/browsevolume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///90347\n");

}),

9713:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建存储卷'\\\" breadcrumbs=\\\"[{label:'存储卷', link:'docker.volumes'}, '添加存储卷']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"volumeCreationForm\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"volume_name\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-10 col-md-11\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"volume_name\\\" placeholder=\\\"例如 myVolume\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 驱动程序配置 </div>\\n          <!-- driver-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"volume_driver\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">Driver</label>\\n            <div class=\\\"col-sm-10 col-md-11\\\">\\n              <select class=\\\"form-control\\\" ng-options=\\\"driver for driver in availableVolumeDrivers\\\" ng-model=\\\"formValues.Driver\\\" ng-if=\\\"availableVolumeDrivers.length > 0\\\">\\n                <option disabled hidden value=\\\"\\\">选择驱动</option>\\n              </select>\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Driver\\\" id=\\\"volume_driver\\\" placeholder=\\\"例如 driverName\\\" ng-if=\\\"availableVolumeDrivers.length === 0\\\" />\\n            </div>\\n          </div>\\n          <!-- !driver-input -->\\n          <!-- driver-options -->\\n          <div class=\\\"form-group\\\" ng-hide=\\\"formValues.CIFSData.useCIFS || formValues.NFSData.useNFS\\\">\\n            <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n              <label class=\\\"control-label text-left\\\">\\n                驱动选项\\n                <portainer-tooltip message=\\\"'驱动程序选项是特定于所选驱动程序的。请参考所选驱动程序的文件。'\\\"></portainer-tooltip>\\n              </label>\\n              <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addDriverOption()\\\">\\n                <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> 添加驱动选项\\n              </span>\\n            </div>\\n            <!-- driver-options-input-list -->\\n            <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n              <div ng-repeat=\\\"option in formValues.DriverOptions\\\" style=\\\"margin-top: 2px\\\">\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">名称</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.name\\\" placeholder=\\\"例如 mountpoint\\\" />\\n                </div>\\n                <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                  <span class=\\\"input-group-addon\\\">value</span>\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.value\\\" placeholder=\\\"例如 /path/on/host\\\" />\\n                </div>\\n                <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeDriverOption($index)\\\">\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !driver-options-input-list -->\\n          </div>\\n          <!-- !driver-options -->\\n          <!-- nfs-management -->\\n          <div class=\\\"form-group col-md-12\\\">\\n            <por-switch-field checked=\\\"formValues.NFSData.useNFS\\\" label=\\\"'使用 NFS 存储卷'\\\" on-change=\\\"(onUseNFSChange)\\\"></por-switch-field>\\n            <div ng-if=\\\"formValues.NFSData.useNFS\\\" class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 确保<code>nfs-utils</code>已安装在你的宿主机上。 </div>\\n          </div>\\n          <volumes-nfs-form data=\\\"formValues.NFSData\\\" ng-show=\\\"formValues.Driver === 'local'\\\"></volumes-nfs-form>\\n          <!-- !nfs-management -->\\n          <!-- cifs-management -->\\n          <div class=\\\"form-group col-md-12\\\">\\n            <por-switch-field checked=\\\"formValues.CIFSData.useCIFS\\\" label=\\\"'使用 CIFS 存储卷'\\\" on-change=\\\"(onUseCIFSChange)\\\"></por-switch-field>\\n            <div ng-if=\\\"formValues.CIFSData.useCIFS\\\" class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> 确保<code>cifs-utils</code>已安装在你的宿主机上。 </div>\\n          </div>\\n          <volumes-cifs-form data=\\\"formValues.CIFSData\\\" ng-show=\\\"formValues.Driver === 'local'\\\"></volumes-cifs-form>\\n          <!-- !cifs-management -->\\n          <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && formValues.Driver === 'local'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 部署 </div>\\n            <!-- node-selection -->\\n            <node-selector model=\\\"formValues.NodeName\\\"> </node-selector>\\n            <!-- !node-selection -->\\n          </div>\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-click=\\\"create()\\\"\\n                ng-disabled=\\\"state.actionInProgress || (formValues.NFSData.useNFS && !volumeCreationForm.nfsInformationForm.$valid) || (formValues.CIFSData.useCIFS && !volumeCreationForm.cifsInformationForm.$valid)\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">创建存储卷</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">存储卷创建中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/create/createvolume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9713\n");

}),

10577:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'存储卷详情'\\\" breadcrumbs=\\\"[{label:'存储卷', link:'docker.volumes'}, volume.Id]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"volume\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"database\\\" feather-icon=\\\"true\\\" title-text=\\\"存储卷详情\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>ID</td>\\n              <td>\\n                {{ volume.Id }}\\n                <button authorization=\\\"DockerVolumeDelete\\\" class=\\\"btn btn-xs btn-danger\\\" ng-click=\\\"removeVolume()\\\"\\n                  ><pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class=\\\"leading-none\\\"></pr-icon> 删除此存储卷</button\\n                >\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>创建</td>\\n              <td>{{ volume.CreatedAt | getisodate }}</td>\\n            </tr>\\n            <tr>\\n              <td>挂载路径</td>\\n              <td>{{ volume.Mountpoint }}</td>\\n            </tr>\\n            <tr>\\n              <td>驱动</td>\\n              <td>{{ volume.Driver }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!(volume.Labels | emptyobject)\\\">\\n              <td>标签</td>\\n              <td>\\n                <table class=\\\"table table-bordered table-condensed\\\">\\n                  <tr ng-repeat=\\\"(k, v) in volume.Labels\\\">\\n                    <td>{{ k }}</td>\\n                    <td>{{ v }}</td>\\n                  </tr>\\n                </table>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"volume\\\"\\n  resource-id=\\\"volume.ResourceId\\\"\\n  resource-control=\\\"volume.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\" ng-if=\\\"!(volume.Options | emptyobject)\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"settings\\\" feather-icon=\\\"true\\\" title-text=\\\"存储卷选项\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr ng-repeat=\\\"(key, value) in volume.Options\\\">\\n              <td>{{ key }}</td>\\n              <td>{{ value }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<div class=\\\"row\\\" ng-if=\\\"containersUsingVolume.length > 0\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"box\\\" feather-icon=\\\"true\\\" title-text=\\\"容器使用存储卷\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <thead>\\n            <th>容器名称</th>\\n            <th>挂载路径</th>\\n            <th>只读</th>\\n          </thead>\\n          <tbody>\\n            <tr ng-repeat=\\\"container in containersUsingVolume\\\">\\n              <td\\n                ><a ui-sref=\\\"docker.containers.container({ id: container.Id, nodeName: container.NodeName })\\\">{{ container | containername }}</a></td\\n              >\\n              <td>{{ container.volumeData.Destination }}</td>\\n              <td>{{ !container.volumeData.RW }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/edit/volume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10577\n");

}),

95290:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'存储卷列表'\\\" breadcrumbs=\\\"['存储卷']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel-offline ng-if=\\\"offlineMode\\\"></information-panel-offline>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <volumes-datatable\\n      title-text=\\\"存储卷\\\"\\n      title-icon=\\\"database\\\"\\n      dataset=\\\"volumes\\\"\\n      table-key=\\\"volumes\\\"\\n      order-by=\\\"Id\\\"\\n      remove-action=\\\"removeAction\\\"\\n      show-host-column=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n      show-browse-action=\\\"showBrowseAction\\\"\\n      offline-mode=\\\"offlineMode\\\"\\n      refresh-callback=\\\"getVolumes\\\"\\n    ></volumes-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/volumes.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///95290\n");

}),

31140:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle\\\"> <i class=\\\"fa\\\" ng-class=\\\"$ctrl.titleIcon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i> {{ $ctrl.titleText }} </div>\\n      </div>\\n      <div class=\\\"searchBar\\\">\\n        <i class=\\\"fa fa-search searchIcon\\\" aria-hidden=\\\"true\\\"></i>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          auto-focus\\n          placeholder=\\\"搜索...\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <a ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"> 名称 <i class=\\\"fa fa-sort-alpha-down\\\" aria-hidden=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'Name' && !$ctrl.state.reverseOrder\\\"></i>\\n                  <i class=\\\"fa fa-sort-alpha-up\\\" aria-hidden=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"></i>\\n                </a>\\n              </th>\\n              <th>\\n                <a ng-click=\\\"$ctrl.changeOrderBy('GroupName')\\\">\\n                  Group\\n                  <i class=\\\"fa fa-sort-alpha-down\\\" aria-hidden=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'GroupName' && !$ctrl.state.reverseOrder\\\"></i>\\n                  <i class=\\\"fa fa-sort-alpha-up\\\" aria-hidden=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'GroupName' && $ctrl.state.reverseOrder\\\"></i>\\n                </a>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in $ctrl.state.filteredDataSet | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n              total-items=\\\"$ctrl.state.totalFilteredDataSet\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span>{{ item.Name }}</span>\\n              </td>\\n\\n              <td>{{ item.GroupName }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.loading\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No environment available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onPageChange(newPageNumber, oldPageNumber)\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/associated-endpoints-datatable/associatedEndpointsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///31140\n");

}),

7422:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal -mt-4\\\" name=\\\"edgeJobForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Edge job configuration </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group mt-4\\\">\\n    <label for=\\\"edgejob_name\\\" class=\\\"col-sm-2 control-label text-left required\\\">Name </label>\\n    <div class=\\\"col-sm-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.model.Name\\\"\\n        ng-pattern=\\\"/^[a-zA-Z0-9][a-zA-Z0-9_.-]+$/\\\"\\n        id=\\\"edgejob_name\\\"\\n        name=\\\"edgejob_name\\\"\\n        placeholder=\\\"例如 backup-app-prod\\\"\\n        required\\n        auto-focus\\n      />\\n      <div class=\\\"help-block\\\" ng-show=\\\"edgeJobForm.edgejob_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"edgeJobForm.edgejob_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> 本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n              <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> 允许的字符包括： [a-zA-Z0-9_.-]\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <!-- !name-input -->\\n  <!-- cron-input -->\\n  <!-- edge-job-method-select -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Edge job configuration </div>\\n  <div class=\\\"form-group\\\"></div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"boxselector_wrapper !mt-0\\\">\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"config_basic\\\" ng-model=\\\"$ctrl.formValues.cronMethod\\\" value=\\\"basic\\\" />\\n          <label for=\\\"config_basic\\\">\\n            <div class=\\\"boxselector_header vertical-center\\\">\\n              <pr-icon icon=\\\"'calendar'\\\" feather=\\\"true\\\"></pr-icon>\\n              Basic configuration\\n            </div>\\n            <p>Select date from calendar</p>\\n          </label>\\n        </div>\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"config_advanced\\\" ng-model=\\\"$ctrl.formValues.cronMethod\\\" value=\\\"advanced\\\" />\\n          <label for=\\\"config_advanced\\\">\\n            <div class=\\\"boxselector_header vertical-center\\\">\\n              <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n              Advanced configuration\\n            </div>\\n            <p>Write your own cron rule</p>\\n          </label>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !edge-job-method-select -->\\n  <!-- basic-edge-job -->\\n  <div ng-if=\\\"$ctrl.formValues.cronMethod === 'basic'\\\">\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"recurring\\\" class=\\\"col-sm-2 control-label text-left\\\">Recurring Edge job</label>\\n      <div class=\\\"col-sm-10\\\">\\n        <label class=\\\"switch\\\"><input type=\\\"checkbox\\\" name=\\\"recurring\\\" ng-model=\\\"$ctrl.model.Recurring\\\" /><span class=\\\"slider round\\\"></span></label>\\n      </div>\\n    </div>\\n    <!-- not-recurring -->\\n    <div ng-if=\\\"!$ctrl.model.Recurring\\\">\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"edgejob_cron\\\" class=\\\"col-sm-2 control-label text-left\\\">Schedule date</label>\\n        <div class=\\\"col-sm-10\\\">\\n          <input class=\\\"form-control\\\" moment-picker ng-model=\\\"$ctrl.formValues.datetime\\\" format=\\\"YYYY-MM-DD HH:mm\\\" />\\n        </div>\\n        <div class=\\\"col-sm-12 small text-muted mt-2.5\\\"> Time should be set according to the chosen environments' timezone. </div>\\n        <div ng-show=\\\"edgeJobForm.datepicker.$invalid\\\">\\n          <div class=\\\"col-sm-12 small text-warning\\\">\\n            <div ng-messages=\\\"edgeJobForm.datepicker.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> 本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !not-recurring -->\\n    <!-- recurring -->\\n    <div ng-if=\\\"$ctrl.model.Recurring\\\">\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"edgejob_value\\\" class=\\\"col-sm-2 control-label text-left\\\">Edge job time</label>\\n        <div class=\\\"col-sm-10\\\">\\n          <select\\n            id=\\\"edgejob_value\\\"\\n            name=\\\"edgejob_value\\\"\\n            class=\\\"form-control\\\"\\n            ng-model=\\\"$ctrl.formValues.scheduleValue\\\"\\n            ng-options=\\\"value.displayed for value in $ctrl.scheduleValues\\\"\\n            required\\n          ></select>\\n        </div>\\n        <div ng-show=\\\"edgeJobForm.edgejob_value.$invalid\\\">\\n          <div class=\\\"col-sm-12 small text-warning\\\">\\n            <div ng-messages=\\\"edgeJobForm.edgejob_value.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> 本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !recurring -->\\n  </div>\\n  <!-- !basic-edge-job -->\\n  <!-- advanced-schedule -->\\n  <div ng-if=\\\"$ctrl.formValues.cronMethod === 'advanced'\\\">\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"edgejob_cron\\\" class=\\\"col-sm-2 control-label text-left\\\">Cron rule</label>\\n      <div class=\\\"col-sm-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          ng-model=\\\"$ctrl.model.CronExpression\\\"\\n          id=\\\"edgejob_cron\\\"\\n          name=\\\"edgejob_cron\\\"\\n          placeholder=\\\"例如 0 2 * * *\\\"\\n          required\\n          ng-pattern=\\\"$ctrl.cronRegex\\\"\\n        />\\n        <div class=\\\"help-block\\\" ng-show=\\\"edgeJobForm.edgejob_cron.$invalid && edgeJobForm.edgejob_cron.$dirty\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"edgeJobForm.edgejob_cron.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> 本栏为必填项。\\n              </p>\\n              <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n                <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span> This field format is invalid.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"col-sm-12 small text-muted mt-2.5\\\"> Time should be set according to the chosen environments' timezone. </div>\\n    </div>\\n  </div>\\n  <!-- !advanced-schedule -->\\n\\n  <!-- execution-method -->\\n  <div ng-if=\\\"!$ctrl.model.Id\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> Job content </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"boxselector_wrapper\\\">\\n          <div>\\n            <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"$ctrl.formValues.method\\\" value=\\\"editor\\\" />\\n            <label for=\\\"method_editor\\\">\\n              <div class=\\\"boxselector_header vertical-center\\\">\\n                <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                Web editor\\n              </div>\\n              <p>使用我们的网页编辑器</p>\\n            </label>\\n          </div>\\n          <div>\\n            <input type=\\\"radio\\\" id=\\\"method_upload\\\" ng-model=\\\"$ctrl.formValues.method\\\" value=\\\"upload\\\" />\\n            <label for=\\\"method_upload\\\">\\n              <div class=\\\"boxselector_header vertical-center\\\">\\n                <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon> 上传 </div>\\n              <p>从你的电脑上传</p>\\n            </label>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !execution-method -->\\n  <!-- web-editor -->\\n  <div ng-show=\\\"$ctrl.formValues.method === 'editor'\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> Web editor </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <code-editor\\n          identifier=\\\"execute-edge-job-editor\\\"\\n          placeholder=\\\"# Define or paste the content of your script file here\\\"\\n          on-change=\\\"($ctrl.editorUpdate)\\\"\\n          value=\\\"$ctrl.model.FileContent\\\"\\n        ></code-editor>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !web-editor -->\\n  <!-- upload -->\\n  <div ng-show=\\\"$ctrl.formValues.method === 'upload'\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n    <div class=\\\"form-group\\\">\\n      <span class=\\\"col-sm-12 text-muted small\\\"> You can upload a script file from your computer. </span>\\n    </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.model.File\\\">选择文件</button>\\n        <span class=\\\"space-left\\\">\\n          {{ $ctrl.model.File.name }}\\n          <span ng-if=\\\"!$ctrl.model.File\\\"><pr-icon icon=\\\"'x'\\\" class-name=\\\"'icon icon-danger'\\\" feather=\\\"true\\\"></pr-icon></span>\\n        </span>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !upload -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Target environments </div>\\n  <!-- node-selection -->\\n  <associated-endpoints-selector\\n    endpoint-ids=\\\"$ctrl.model.Endpoints\\\"\\n    tags=\\\"$ctrl.tags\\\"\\n    groups=\\\"$ctrl.groups\\\"\\n    has-backend-pagination=\\\"true\\\"\\n    on-associate=\\\"($ctrl.associateEndpoint)\\\"\\n    on-dissociate=\\\"($ctrl.dissociateEndpoint)\\\"\\n  ></associated-endpoints-selector>\\n  <!-- !node-selection -->\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !edgeJobForm.$valid\\n        || $ctrl.model.Endpoints.length === 0\\n        || ($ctrl.formValues.method === 'upload' && !$ctrl.model.File)\\n        || ($ctrl.formValues.method === 'editor' && !$ctrl.model.FileContent)\\n        \\\"\\n        ng-click=\\\"$ctrl.action()\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n      <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n        {{ $ctrl.state.formValidationError }}\\n      </span>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/edge/components/edge-job-form/edgeJobForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///7422\n");

}),

88832:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable edge-job-results-datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <span><pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon></span>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar\\\">\\n          <span><pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon></span>\\n          <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" placeholder=\\\"搜索...\\\" auto-focus ng-model-options=\\\"{ debounce: 300 }\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover table-filters nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <a ng-click=\\\"$ctrl.changeOrderBy('Endpoint')\\\">\\n                  环境\\n                  <span><pr-icon icon=\\\"'arrow-down'\\\" feather=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'Endpoint' && !$ctrl.state.reverseOrder\\\"></pr-icon></span>\\n                  <span><pr-icon icon=\\\"'arrow-up'\\\" feather=\\\"true\\\" ng-if=\\\"$ctrl.state.orderBy === 'Endpoint' && $ctrl.state.reverseOrder\\\"></pr-icon></span>\\n                </a>\\n              </th>\\n              <th> 操作 </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td>\\n                {{ item.Endpoint.Name }}\\n              </td>\\n              <td>\\n                <button ng-if=\\\"item.LogsStatus === 0 || item.LogsStatus === 1\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.collectLogs(item.EndpointId)\\\"> Retrieve logs </button>\\n                <button ng-if=\\\"item.LogsStatus === 3\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.onDownloadLogsClick(item.EndpointId)\\\"> 下载日志 </button>\\n                <button ng-if=\\\"item.LogsStatus === 3\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.onClearLogsClick(item.EndpointId)\\\"> 清除日志 </button>\\n                <span ng-if=\\\"item.LogsStatus === 2\\\"> 日志标记为要收集，请等待日志可用。 </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"9\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"9\\\" class=\\\"text-center text-muted\\\">无可用结果。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-job-results-datatable/edgeJobResultsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///88832\n");

}),

14186:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon> {{ $ctrl.titleText }} </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n          <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" placeholder=\\\"搜索...\\\" auto-focus ng-model-options=\\\"{ debounce: 300 }\\\" />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\" ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\">\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Remove\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"edge.jobs.new\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>Add Edge job </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'CronExpression'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CronExpression'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CronExpression' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CronExpression')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Created'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Created'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Created' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Created')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"edge.jobs.job({id: item.Id})\\\">{{ item.Name }}</a>\\n              </td>\\n              <td>\\n                {{ item.CronExpression }}\\n              </td>\\n              <td>{{ item.Created | getisodatefromtimestamp }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No Edge job available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-jobs-datatable/edgeJobsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///14186\n");

}),

23423:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Deployment type </div>\\n<box-selector radio-name=\\\"'deploymentType'\\\" value=\\\"$ctrl.value\\\" options=\\\"$ctrl.deploymentOptions\\\" on-change=\\\"($ctrl.onChange)\\\"></box-selector>\\n\";;\nvar path = 'app/edge/components/edge-stack-deployment-type-selector/edge-stack-deployment-type-selector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///23423\n");

}),

77656:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon> {{ $ctrl.titleText }} </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            auto-focus\\n            placeholder=\\\"搜索...\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Status'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Error'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Error'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Error' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Error')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in $ctrl.state.filteredDataSet | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n              total-items=\\\"$ctrl.state.totalFilteredDataSet\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>{{ item.Name }}</td>\\n              <td>{{ $ctrl.endpointStatusLabel(item.Id) }}</td>\\n              <td>{{ $ctrl.endpointStatusError(item.Id) }}</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.loading\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No environment available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onPageChange(newPageNumber, oldPageNumber)\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-stack-endpoints-datatable/edgeStackEndpointsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///77656\n");

}),

53501:

(function(module) {

eval("var _module_exports = \"<span class=\\\"status\\\" title=\\\"Acknowledged environments\\\"><i class=\\\"acknowledged icon\\\"></i>{{ $ctrl.status.acknowledged || 0 }}</span>\\n<span class=\\\"status\\\" title=\\\"Successful environments\\\"><i class=\\\"ok icon\\\"></i>{{ $ctrl.status.ok || 0 }}</span>\\n<span class=\\\"status\\\" title=\\\"Failed environments\\\"><i class=\\\"error icon\\\"></i>{{ $ctrl.status.error || 0 }}</span>\\n\";;\nvar path = 'app/edge/components/edge-stack-status/edgeStackStatus.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53501\n");

}),

3942:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon> Edge Stacks </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-danger\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"edgeStack-removeStackButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> Remove\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"edge.stacks.new\\\" data-cy=\\\"edgeStack-addStackButton\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> Add stack\\n          </button>\\n        </div>\\n        <div class=\\\"settings !w-2.5\\\" data-cy=\\\"edgeStack-stackTableSettings\\\">\\n          <span class=\\\"setting mr-0\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> <pr-icon icon=\\\"'settings'\\\" feather=\\\"true\\\"></pr-icon> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input\\n                        id=\\\"setting_auto_refresh\\\"\\n                        type=\\\"checkbox\\\"\\n                        ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n                        ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                        data-cy=\\\"edgeStack-autoRefreshCheckbox\\\"\\n                      />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span class=\\\"inline-block w-3\\\">\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" style=\\\"display: none\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\"> Close </a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"edgeStack-stackTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th> Status </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Creation Date'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"edge.stacks.edit({ stackId: item.Id })\\\">\\n                  {{ item.Name }}\\n                </a>\\n              </td>\\n              <td><edge-stack-status stack-status=\\\"item.Status\\\"></edge-stack-status></td>\\n              <td>{{ item.CreationDate | getisodatefromtimestamp }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\" data-cy=\\\"edgeStack-loadingRow\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\" data-cy=\\\"edgeStack-noStackRow\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\"> No stack available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-stacks-datatable/edgeStacksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///3942\n");

}),

51367:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Edge Groups </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <edge-groups-selector value=\\\"$ctrl.model.EdgeGroups\\\" items=\\\"$ctrl.edgeGroups\\\" on-change=\\\"($ctrl.onChangeGroups)\\\"></edge-groups-selector>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.validateEndpointsForDeployment()\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"small text-muted space-right text-warning\\\">\\n        <i class=\\\"fa fa-exclamation-triangle orange-icon\\\" aria-hidden=\\\"true\\\"></i>\\n        One or more of the selected Edge group contains Edge Docker endpoints that cannot be used with a Kubernetes Edge stack.\\n      </div>\\n    </div>\\n  </div>\\n\\n  <edge-stack-deployment-type-selector\\n    value=\\\"$ctrl.model.DeploymentType\\\"\\n    has-docker-endpoint=\\\"$ctrl.hasDockerEndpoint\\\"\\n    on-change=\\\"($ctrl.onChangeDeploymentType)\\\"\\n  ></edge-stack-deployment-type-selector>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.DeploymentType === 0 && $ctrl.hasKubeEndpoint()\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"small text-muted space-right\\\">\\n        <i class=\\\"fa fa-exclamation-triangle orange-icon\\\" aria-hidden=\\\"true\\\"></i>\\n        Portainer uses <a href=\\\"https://kompose.io/\\\" target=\\\"_blank\\\">Kompose</a> to convert your Compose manifest to a Kubernetes compliant manifest. Be wary that not all the\\n        Compose format options are supported by Kompose at the moment.\\n      </div>\\n    </div>\\n  </div>\\n\\n  <web-editor-form\\n    ng-if=\\\"$ctrl.model.DeploymentType === 0\\\"\\n    value=\\\"$ctrl.model.StackFileContent\\\"\\n    yml=\\\"true\\\"\\n    identifier=\\\"compose-editor\\\"\\n    placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n    on-change=\\\"($ctrl.onChangeComposeConfig)\\\"\\n  >\\n    <editor-description>\\n      <div>\\n        你可以在\\n                <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> 官方文档</a>\\n                中获得更多有关 Compose 文件格式的信息。\\n      </div>\\n    </editor-description>\\n  </web-editor-form>\\n\\n  <web-editor-form\\n    ng-if=\\\"$ctrl.model.DeploymentType === 1\\\"\\n    value=\\\"$ctrl.model.StackFileContent\\\"\\n    yml=\\\"true\\\"\\n    identifier=\\\"kube-manifest-editor\\\"\\n    placeholder=\\\"# Define or paste the content of your manifest here\\\"\\n    on-change=\\\"($ctrl.onChangeKubeManifest)\\\"\\n  >\\n    <editor-description>\\n      <p>\\n        You can get more information about Kubernetes file format in the\\n        <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n      </p>\\n    </editor-description>\\n  </web-editor-form>\\n\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.isFormValid()\\\"\\n        ng-click=\\\"$ctrl.submitAction()\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">更新堆栈</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在更新中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/edge/components/edit-edge-stack-form/editEdgeStackForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///51367\n");

}),

68393:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"EdgeGroupForm\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"group_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\"> 名称 </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        id=\\\"group_name\\\"\\n        name=\\\"group_name\\\"\\n        ng-model=\\\"$ctrl.model.Name\\\"\\n        required\\n        auto-focus\\n        data-cy=\\\"edgeGroupCreate-groupNameInput\\\"\\n        placeholder=\\\"例如 mygroup\\\"\\n      />\\n      <div class=\\\"help-block\\\" ng-show=\\\"EdgeGroupForm.group_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"EdgeGroupForm.group_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 组类型 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"boxselector_wrapper\\\">\\n        <div class=\\\"boxselector\\\">\\n          <input type=\\\"radio\\\" id=\\\"static-group\\\" ng-model=\\\"$ctrl.model.Dynamic\\\" ng-value=\\\"false\\\" ng-checked=\\\"!$ctrl.model.Dynamic\\\" />\\n          <label for=\\\"static-group\\\">\\n            <div class=\\\"boxselector_header vertical-center\\\">\\n              <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon>\\n              静态\\n            </div>\\n            <p>手动选择边缘环境</p>\\n          </label>\\n        </div>\\n        <div class=\\\"boxselector\\\">\\n          <input type=\\\"radio\\\" id=\\\"dynamic-group\\\" ng-model=\\\"$ctrl.model.Dynamic\\\" ng-value=\\\"true\\\" ng-checked=\\\"$ctrl.model.Dynamic\\\" />\\n          <label for=\\\"dynamic-group\\\">\\n            <div class=\\\"boxselector_header vertical-center\\\">\\n              <pr-icon icon=\\\"'tag'\\\" feather=\\\"true\\\"></pr-icon>\\n              动态\\n            </div>\\n            <p>通过标记自动关联环境</p>\\n          </label>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <!-- StaticGroup -->\\n  <div ng-if=\\\"!$ctrl.model.Dynamic\\\">\\n    <div ng-if=\\\"!$ctrl.noEndpoints\\\">\\n      <!-- environments -->\\n      <div class=\\\"col-sm-12 form-section-title\\\"> 相关环境 </div>\\n      <div class=\\\"form-group\\\">\\n        <associated-endpoints-selector\\n          endpoint-ids=\\\"$ctrl.model.Endpoints\\\"\\n          tags=\\\"$ctrl.tags\\\"\\n          groups=\\\"$ctrl.groups\\\"\\n          has-backend-pagination=\\\"true\\\"\\n          on-associate=\\\"($ctrl.associateEndpoint)\\\"\\n          on-dissociate=\\\"($ctrl.dissociateEndpoint)\\\"\\n        ></associated-endpoints-selector>\\n      </div>\\n    </div>\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.noEndpoints\\\">\\n      <div class=\\\"col-sm-12 small text-muted\\\">\\n        没有可用的边缘环境。请到 <a ui-sref=\\\"portainer.endpoints\\\">环境视图</a> 中添加环境。\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !StaticGroup -->\\n\\n  <!-- DynamicGroup -->\\n  <div ng-if=\\\"$ctrl.model.Dynamic\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> 标记 </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"boxselector_wrapper\\\">\\n          <div class=\\\"boxselector\\\">\\n            <input type=\\\"radio\\\" id=\\\"or-selector\\\" ng-model=\\\"$ctrl.model.PartialMatch\\\" ng-value=\\\"true\\\" ng-checked=\\\"$ctrl.model.PartialMatch\\\" />\\n            <label for=\\\"or-selector\\\">\\n              <div class=\\\"boxselector_header vertical-center\\\">\\n                <pr-icon icon=\\\"'tag'\\\" feather=\\\"true\\\"></pr-icon>\\n                部分匹配\\n              </div>\\n              <p>关联任何与所选标签中的至少一个相匹配的环境</p>\\n            </label>\\n          </div>\\n          <div class=\\\"boxselector\\\">\\n            <input type=\\\"radio\\\" id=\\\"and-selector\\\" ng-model=\\\"$ctrl.model.PartialMatch\\\" ng-value=\\\"false\\\" ng-checked=\\\"!$ctrl.model.PartialMatch\\\" />\\n            <label for=\\\"and-selector\\\">\\n              <div class=\\\"boxselector_header vertical-center\\\">\\n                <pr-icon icon=\\\"'tag'\\\" feather=\\\"true\\\"></pr-icon>\\n                完全匹配\\n              </div>\\n              <p>关联任何符合所有选定标签的环境</p>\\n            </label>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <tag-selector ng-if=\\\"$ctrl.model.TagIds\\\" value=\\\"$ctrl.model.TagIds\\\" on-change=\\\"($ctrl.onChangeTags)\\\"> </tag-selector>\\n\\n    <div class=\\\"table-in-row\\\">\\n      <group-association-table\\n        loaded=\\\"$ctrl.loaded\\\"\\n        page-type=\\\"$ctrl.pageType\\\"\\n        table-type=\\\"associated\\\"\\n        retrieve-page=\\\"$ctrl.getDynamicEndpoints\\\"\\n        dataset=\\\"$ctrl.endpoints.value\\\"\\n        pagination-state=\\\"$ctrl.endpoints.state\\\"\\n        empty-dataset-message=\\\"No associated endpoint\\\"\\n        tags=\\\"$ctrl.tags\\\"\\n        show-tags=\\\"true\\\"\\n        groups=\\\"$ctrl.groups\\\"\\n        show-groups=\\\"true\\\"\\n        has-backend-pagination=\\\"true\\\"\\n        title=\\\"按标签划分的相关环境\\\"\\n      ></group-association-table>\\n    </div>\\n  </div>\\n  <!-- !DynamicGroup -->\\n\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !EdgeGroupForm.$valid || (!$ctrl.model.Dynamic && !$ctrl.model.Endpoints.length) || ($ctrl.model.Dynamic && !$ctrl.model.TagIds.length)\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        data-cy=\\\"edgeGroupCreate-addGroupButton\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n</form>\\n\";;\nvar path = 'app/edge/components/group-form/groupForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///68393\n");

}),

48384:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"'grid'\\\" feather=\\\"true\\\"></pr-icon> Edge Groups </div>\\n        <div class=\\\"searchBar vertical-center leading-none\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"edgeGroup-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-danger\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"edgeGroup-removeEdgeGroupButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> Remove\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"edge.groups.new\\\" data-cy=\\\"edgeGroup-addEdgeGroupButton\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> Add Edge group\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"edgeGroup-edgeGroupTable\\\">\\n          <thead>\\n            <tr>\\n              <th class=\\\"flex\\\">\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"edgeGroup-selectAllCheckbox\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Environments Count'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Endpoints.length'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Endpoints.length' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Endpoints.length')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Group Type'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Dynamic'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Dynamic' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Dynamic')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-disabled=\\\"item.HasEdgeStack\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"edge.groups.edit({groupId: item.Id})\\\">{{ item.Name }}</a>\\n                <span ng-if=\\\"item.HasEdgeStack\\\" class=\\\"label label-info image-tag space-left\\\">in use</span>\\n              </td>\\n              <td>{{ item.Endpoints.length }}</td>\\n              <td>{{ item.Dynamic ? 'Dynamic' : 'Static' }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\"> No Edge group available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/groups-datatable/groupsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48384\n");

}),

4690:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create edge group'\\\" breadcrumbs=\\\"[{label:'Edge groups', link:'edge.groups'}, 'Add edge group']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <edge-group-form\\n          loaded=\\\"$ctrl.state.loaded\\\"\\n          page-type=\\\"create\\\"\\n          form-action-label=\\\"Add edge group\\\"\\n          form-action=\\\"$ctrl.createGroup\\\"\\n          groups=\\\"$ctrl.endpointGroups\\\"\\n          model=\\\"$ctrl.model\\\"\\n        ></edge-group-form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///4690\n");

}),

52934:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edge Groups'\\\" breadcrumbs=\\\"['Edge Groups']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <edge-groups-datatable title-icon=\\\"fa-object-group\\\" table-key=\\\"EdgeGroups\\\" order-by=\\\"Name\\\" dataset=\\\"$ctrl.items\\\" remove-action=\\\"$ctrl.removeAction\\\"></edge-groups-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/edgeGroupsView/edgeGroupsView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///52934\n");

}),

25575:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edit edge group'\\\" breadcrumbs=\\\"[{label:'Edge Groups', link:'edge.groups'}, $ctrl.model.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.model\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <edge-group-form\\n          loaded=\\\"$ctrl.state.loaded\\\"\\n          page-type=\\\"edit\\\"\\n          form-action-label=\\\"Save edge group\\\"\\n          form-action=\\\"$ctrl.updateGroup\\\"\\n          endpoints=\\\"$ctrl.endpoints\\\"\\n          groups=\\\"$ctrl.endpointGroups\\\"\\n          model=\\\"$ctrl.model\\\"\\n        ></edge-group-form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///25575\n");

}),

4913:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create Edge job'\\\" breadcrumbs=\\\"[{label:'Edge Jobs', link:'edge.jobs'}, 'Create Edge job']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <edge-job-form\\n          model=\\\"$ctrl.model\\\"\\n          groups=\\\"$ctrl.groups\\\"\\n          tags=\\\"$ctrl.tags\\\"\\n          form-action=\\\"$ctrl.create\\\"\\n          form-action-label=\\\"Create edge job\\\"\\n          action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n          is-editor-dirty=\\\"$ctrl.state.isEditorDirty\\\"\\n        ></edge-job-form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///4913\n");

}),

14399:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edge job details'\\\" breadcrumbs=\\\"[{label:'Edge jobs', link:'edge.jobs'}, $ctrl.edgeJob.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <uib-tabset active=\\\"$ctrl.state.activeTab\\\">\\n          <uib-tab index=\\\"0\\\" select=\\\"$ctrl.showEditor()\\\">\\n            <uib-tab-heading>\\n              <span><pr-icon icon=\\\"'tool'\\\" feather=\\\"true\\\"></pr-icon></span> Configuration\\n            </uib-tab-heading>\\n\\n            <edge-job-form\\n              ng-if=\\\"$ctrl.edgeJob && $ctrl.state.showEditorTab\\\"\\n              model=\\\"$ctrl.edgeJob\\\"\\n              endpoints=\\\"endpoints\\\"\\n              groups=\\\"$ctrl.groups\\\"\\n              tags=\\\"$ctrl.tags\\\"\\n              form-action=\\\"$ctrl.update\\\"\\n              form-action-label=\\\"Update Edge job\\\"\\n              action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n              is-editor-dirty=\\\"$ctrl.state.isEditorDirty\\\"\\n            ></edge-job-form>\\n          </uib-tab>\\n\\n          <uib-tab index=\\\"1\\\">\\n            <uib-tab-heading>\\n              <span><pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon></span> Results\\n            </uib-tab-heading>\\n\\n            <edge-job-results-datatable\\n              ng-if=\\\"$ctrl.results\\\"\\n              title-text=\\\"Results\\\"\\n              title-icon=\\\"list\\\"\\n              dataset=\\\"$ctrl.results\\\"\\n              table-key=\\\"edge-job-results\\\"\\n              order-by=\\\"Status\\\"\\n              reverse-order=\\\"true\\\"\\n              refresh-callback=\\\"$ctrl.refresh\\\"\\n              on-download-logs-click=\\\"($ctrl.downloadLogs)\\\"\\n              on-collect-logs-click=\\\"($ctrl.collectLogs)\\\"\\n              on-clear-logs-click=\\\"($ctrl.clearLogs)\\\"\\n            ></edge-job-results-datatable>\\n          </uib-tab>\\n        </uib-tabset>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/edgeJob/edgeJob.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///14399\n");

}),

53684:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edge Jobs'\\\" breadcrumbs=\\\"['Edge Jobs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Information\\\">\\n  <span class=\\\"small\\\">\\n    <p class=\\\"text-muted\\\">Edge Jobs requires Docker Standalone and a cron implementation that reads jobs from <code>/etc/cron.d</code></p>\\n  </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <edge-jobs-datatable\\n      title-text=\\\"Edge jobs\\\"\\n      title-icon=\\\"clock\\\"\\n      dataset=\\\"$ctrl.edgeJobs\\\"\\n      table-key=\\\"edgeJobs\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"$ctrl.removeAction\\\"\\n    ></edge-jobs-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/edgeJobsView/edgeJobsView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53684\n");

}),

71818:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create Edge stack'\\\" breadcrumbs=\\\"[{label:'Edge Stacks', link:'edge.stacks'}, 'Create Edge stack']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left required\\\"> 名称 </label>\\n            <div class=\\\"col-sm-11\\\">\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"$ctrl.formValues.Name\\\"\\n                id=\\\"stack_name\\\"\\n                name=\\\"nameField\\\"\\n                placeholder=\\\"例如 mystack\\\"\\n                auto-focus\\n                required\\n                data-cy=\\\"edgeStackCreate-nameInput\\\"\\n              />\\n              <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.form.$invalid\\\">\\n                <div class=\\\"small text-warning\\\">\\n                  <div ng-messages=\\\"$ctrl.form.$error\\\">\\n                    <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 名称是必填项。 </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Edge Groups </div>\\n          <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.edgeGroups\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <edge-groups-selector ng-if=\\\"!$ctrl.noGroups\\\" value=\\\"$ctrl.formValues.Groups\\\" on-change=\\\"($ctrl.onChangeGroups)\\\" items=\\\"$ctrl.edgeGroups\\\"></edge-groups-selector>\\n            </div>\\n            <div ng-if=\\\"$ctrl.noGroups\\\" class=\\\"col-sm-12 small text-muted\\\">\\n              No Edge groups are available. Head over to the <a ui-sref=\\\"edge.groups\\\">Edge groups view</a> to create one.\\n            </div>\\n          </div>\\n\\n          <edge-stack-deployment-type-selector\\n            value=\\\"$ctrl.formValues.DeploymentType\\\"\\n            has-docker-endpoint=\\\"$ctrl.hasDockerEndpoint\\\"\\n            on-change=\\\"($ctrl.onChangeDeploymentType)\\\"\\n          ></edge-stack-deployment-type-selector>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"small text-muted space-right\\\" ng-if=\\\"$ctrl.formValues.DeploymentType === 0 && $ctrl.hasKubeEndpoint()\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                Portainer uses <a href=\\\"https://kompose.io/\\\" target=\\\"_blank\\\">Kompose</a> to convert your Compose manifest to a Kubernetes compliant manifest. Be wary that not all\\n                the Compose format options are supported by Kompose at the moment.\\n              </div>\\n            </div>\\n          </div>\\n\\n          <edge-stacks-docker-compose-form ng-if=\\\"$ctrl.formValues.DeploymentType == 0\\\" form-values=\\\"$ctrl.formValues\\\" state=\\\"$ctrl.state\\\"></edge-stacks-docker-compose-form>\\n\\n          <edge-stacks-kube-manifest-form ng-if=\\\"$ctrl.formValues.DeploymentType == 1\\\" form-values=\\\"$ctrl.formValues\\\" state=\\\"$ctrl.state\\\"></edge-stacks-kube-manifest-form>\\n\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"$ctrl.state.actionInProgress || $ctrl.formIsInvalid()\\\"\\n                ng-click=\\\"$ctrl.createStack()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n                analytics-on\\n                analytics-event=\\\"edge-stack-creation\\\"\\n                analytics-category=\\\"edge\\\"\\n                analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n                data-cy=\\\"edgeStackCreate-createStackButton\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">部署堆栈</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">部署进行中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n                {{ $ctrl.state.formValidationError }}\\n              </span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///71818\n");

}),

2892:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n<box-selector radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.Method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n<web-editor-form\\n  ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n  identifier=\\\"stack-creation-editor\\\"\\n  value=\\\"$ctrl.formValues.StackFileContent\\\"\\n  on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n  ng-required=\\\"true\\\"\\n  yml=\\\"true\\\"\\n  placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n>\\n  <editor-description>\\n    你可以在\\n                <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> 官方文档</a>\\n                中获得更多有关 Compose 文件格式的信息。\\n  </editor-description>\\n</web-editor-form>\\n\\n<file-upload-form ng-if=\\\"$ctrl.state.Method === 'upload'\\\" file=\\\"$ctrl.formValues.StackFile\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n  <file-upload-description> 你可以从你的电脑上传一个 Compose 文件。 </file-upload-description>\\n</file-upload-form>\\n\\n<git-form ng-if=\\\"$ctrl.state.Method === 'repository'\\\" model=\\\"$ctrl.formValues\\\" on-change=\\\"($ctrl.onChangeFormValues)\\\" hide-rebuild-info=\\\"true\\\"></git-form>\\n\\n<!-- template -->\\n<div ng-if=\\\"$ctrl.state.Method === 'template'\\\">\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"stack_template\\\" class=\\\"col-sm-1 control-label text-left\\\"> Template </label>\\n    <div class=\\\"col-sm-11\\\">\\n      <select\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.selectedTemplate\\\"\\n        ng-options=\\\"template as template.label for template in $ctrl.templates\\\"\\n        ng-change=\\\"$ctrl.onChangeTemplate($ctrl.selectedTemplate)\\\"\\n      >\\n        <option value=\\\"\\\" label=\\\"Select an Edge stack template\\\" disabled selected=\\\"selected\\\"> </option>\\n      </select>\\n    </div>\\n  </div>\\n  <!-- description -->\\n  <div ng-if=\\\"$ctrl.selectedTemplate.note\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.selectedTemplate.note\\\"></div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !description -->\\n\\n  <web-editor-form\\n    ng-if=\\\"$ctrl.selectedTemplate && $ctrl.formValues.StackFileContent\\\"\\n    identifier=\\\"template-content-editor\\\"\\n    value=\\\"$ctrl.formValues.StackFileContent\\\"\\n    on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n    yml=\\\"true\\\"\\n    placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n    ng-required=\\\"true\\\"\\n  >\\n  </web-editor-form>\\n\\n  <!-- !template -->\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2892\n");

}),

87700:

(function(module) {

eval("var _module_exports = \"<div>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</div>\\n<div>\\n  You can get more information about Kubernetes file format in the\\n  <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/kube-deploy-description.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///87700\n");

}),

65398:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n<box-selector radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.Method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n<web-editor-form\\n  ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n  identifier=\\\"stack-creation-editor\\\"\\n  value=\\\"$ctrl.formValues.StackFileContent\\\"\\n  on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n  yml=\\\"true\\\"\\n  placeholder=\\\"# Define or paste the content of your manifest here\\\"\\n  ng-required=\\\"true\\\"\\n>\\n  <editor-description>\\n    <kube-deploy-description></kube-deploy-description>\\n  </editor-description>\\n</web-editor-form>\\n\\n<file-upload-form ng-if=\\\"$ctrl.state.Method === 'upload'\\\" file=\\\"$ctrl.formValues.StackFile\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n  <file-upload-description>\\n    <kube-deploy-description></kube-deploy-description>\\n  </file-upload-description>\\n</file-upload-form>\\n\\n<git-form\\n  ng-if=\\\"$ctrl.state.Method === 'repository'\\\"\\n  deploy-method=\\\"kubernetes\\\"\\n  model=\\\"$ctrl.formValues\\\"\\n  on-change=\\\"($ctrl.onChangeFormValues)\\\"\\n  hide-rebuild-info=\\\"true\\\"\\n></git-form>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///65398\n");

}),

51919:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edge Stacks list'\\\" breadcrumbs=\\\"['Edge Stacks']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <edge-stacks-datatable\\n      title-text=\\\"Edge Stacks\\\"\\n      title-icon=\\\"layers\\\"\\n      dataset=\\\"$ctrl.stacks\\\"\\n      table-key=\\\"edgeStacks\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"$ctrl.removeAction\\\"\\n      refresh-callback=\\\"$ctrl.getStacks\\\"\\n    ></edge-stacks-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/edgeStacksView/edgeStacksView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///51919\n");

}),

48023:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edit Edge stack'\\\" breadcrumbs=\\\"[{label:'Edge Stacks', link:'edge.stacks'}, $ctrl.stack.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.stack\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <uib-tabset active=\\\"$ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n          <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\">\\n            <uib-tab-heading>\\n              <span><pr-icon icon=\\\"'layers'\\\" feather=\\\"true\\\"></pr-icon></span> 堆栈 </uib-tab-heading>\\n\\n            <div style=\\\"padding: 20px\\\">\\n              <edit-edge-stack-form\\n                edge-groups=\\\"$ctrl.edgeGroups\\\"\\n                model=\\\"$ctrl.formValues\\\"\\n                action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n                submit-action=\\\"$ctrl.deployStack\\\"\\n                is-editor-dirty=\\\"$ctrl.state.isEditorDirty\\\"\\n              ></edit-edge-stack-form>\\n            </div>\\n          </uib-tab>\\n          <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\">\\n            <uib-tab-heading>\\n              <span><pr-icon icon=\\\"'hard-drive'\\\" feather=\\\"true\\\"></pr-icon></span> Environments\\n            </uib-tab-heading>\\n\\n            <div style=\\\"margin-top: 25px\\\">\\n              <edge-stack-endpoints-datatable\\n                title-text=\\\"Environments Status\\\"\\n                dataset=\\\"$ctrl.endpoints\\\"\\n                title-icon=\\\"hard-drive\\\"\\n                table-key=\\\"edgeStackEndpoints\\\"\\n                order-by=\\\"Name\\\"\\n                retrieve-page=\\\"$ctrl.getPaginatedEndpoints\\\"\\n                edge-stack-id=\\\"$ctrl.stack.Id\\\"\\n                endpoints-status=\\\"$ctrl.stack.Status\\\"\\n              >\\n              </edge-stack-endpoints-datatable>\\n            </div>\\n          </uib-tab>\\n        </uib-tabset>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48023\n");

}),

15879:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle flex\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"'server'\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          <span>\\n            {{ $ctrl.titleText }}\\n          </span>\\n        </div>\\n        <div class=\\\"searchBar\\\">\\n          <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput ml-1\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索应用程序...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"k8sAppDetail-containerTable\\\">\\n          <thead>\\n            <tr>\\n              <th ng-if=\\\"!$ctrl.isPod\\\">\\n                <table-column-header\\n                  col-title=\\\"'Pod'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'PodName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'PodName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('PodName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'名称'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'镜像'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'镜像拉取策略'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ImagePullPolicy'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ImagePullPolicy' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ImagePullPolicy')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'状态'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'节点'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Node'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Node' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Node')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Pod IP'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IP'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IP' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IP')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建日期'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>操作</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n              pagination-id=\\\"$ctrl.tableKey\\\"\\n            >\\n              <td ng-if=\\\"!$ctrl.isPod\\\">{{ item.PodName }}</td>\\n              <td>{{ item.Name }}</td>\\n              <td title=\\\"{{ item.Image }}\\\">{{ item.Image | truncate: 64 }}</td>\\n              <td>{{ item.ImagePullPolicy }}</td>\\n              <td\\n                ><span class=\\\"label label-{{ item.Status | kubernetesPodStatusColor }}\\\">{{ item.Status }}</span></td\\n              >\\n              <td>\\n                <span ng-if=\\\"item.Node\\\">\\n                  <a ui-sref=\\\"kubernetes.cluster.node({ name: item.Node })\\\">\\n                    {{ item.Node }}\\n                  </a>\\n                </span>\\n                <span ng-if=\\\"!item.Node\\\">-</span>\\n              </td>\\n              <td>{{ item.PodIP }}</td>\\n              <td>{{ item.CreationDate | getisodate }}</td>\\n              <td>\\n                <a\\n                  ng-if=\\\"item.Status === 'Running' && $ctrl.useServerMetrics\\\"\\n                  ui-sref=\\\"kubernetes.applications.application.stats({ pod: item.PodName, container: item.Name })\\\"\\n                  class=\\\"vertical-center mr-1\\\"\\n                >\\n                  <pr-icon icon=\\\"'bar-chart'\\\" feather=\\\"true\\\"></pr-icon>统计\\n                </a>\\n                <a ui-sref=\\\"kubernetes.applications.application.logs({ pod: item.PodName, container: item.Name })\\\" class=\\\"vertical-center mr-1\\\">\\n                  <pr-icon icon=\\\"'file-text'\\\" feather=\\\"true\\\"></pr-icon>日志\\n                </a>\\n                <a\\n                  ng-if=\\\"item.Status === 'Running'\\\"\\n                  ui-sref=\\\"kubernetes.applications.application.console({ pod: item.PodName, container: item.Name })\\\"\\n                  class=\\\"vertical-center mr-1\\\"\\n                >\\n                  <pr-icon icon=\\\"'terminal'\\\" feather=\\\"true\\\"></pr-icon>控制台\\n                </a>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">No pod available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/application/containers-datatable/containersDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///15879\n");

}),

99055:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-xs-12 text-[13px] !px-0 !py-1\\\"> Secrets </div>\\n<table style=\\\"width: 50%\\\">\\n  <tbody>\\n    <tr>\\n      <td>\\n        <sensitive-details ng-repeat=\\\"secret in $ctrl.state.secrets\\\" key=\\\"{{ secret.key }}\\\" value=\\\"{{ secret.value }}\\\"> </sensitive-details>\\n      </td>\\n    </tr>\\n  </tbody>\\n</table>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///99055\n");

}),

57257:

(function(module) {

eval("var _module_exports = \"<div class=\\\"published-url-container\\\">\\n  <div class=\\\"text-muted\\\"> Published URL </div>\\n  <a ng-href=\\\"{{ $ctrl.publishedUrl }}\\\" target=\\\"_blank\\\" class=\\\"publish-url-link vertical-center\\\">\\n    <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\"></pr-icon>\\n    {{ $ctrl.publishedUrl }}\\n  </a>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-datatable-url/applications-datatable-url.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///57257\n");

}),

69333:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <!-- toolbar header actions and settings -->\\n  <div ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"toolBar !flex-col gap-1\\\">\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"'box'\\\" feather=\\\"true\\\"></pr-icon>\\n        </div>\\n        应用\\n      </div>\\n      <div class=\\\"searchBar vertical-center !mr-0 min-w-[280px]\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索应用程序...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n          data-cy=\\\"k8sApp-searchApplicationsInput\\\"\\n        />\\n      </div>\\n      <div class=\\\"actionBar !gap-3 !mr-0\\\" ng-if=\\\"!$ctrl.offlineMode\\\">\\n        <button\\n          ng-if=\\\"$ctrl.isPrimary\\\"\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n          ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n          ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n          data-cy=\\\"k8sApp-removeAppButton\\\"\\n        >\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n          删除\\n        </button>\\n        <button\\n          ng-if=\\\"$ctrl.isPrimary\\\"\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-secondary h-fit vertical-center !ml-0\\\"\\n          ui-sref=\\\"kubernetes.applications.new\\\"\\n          data-cy=\\\"k8sApp-addApplicationButton\\\"\\n        >\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>添加表单\\n        </button>\\n        <button\\n          ng-if=\\\"$ctrl.isPrimary\\\"\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n          ui-sref=\\\"kubernetes.deploy\\\"\\n          data-cy=\\\"k8sApp-deployFromManifestButton\\\"\\n        >\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>从清单创建\\n        </button>\\n      </div>\\n      <div class=\\\"settings\\\" data-cy=\\\"k8sApp-tableSettings\\\">\\n        <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n          <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n            <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n          </span>\\n          <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n            <div class=\\\"tableMenu\\\">\\n              <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n              <div class=\\\"menuContent\\\">\\n                <div>\\n                  <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                    <input id=\\\"applications_setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n                    <label for=\\\"applications_setting_show_system\\\">显示系统资源</label>\\n                  </div>\\n                  <div class=\\\"md-checkbox\\\">\\n                    <input\\n                      id=\\\"setting_auto_refresh\\\"\\n                      type=\\\"checkbox\\\"\\n                      ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n                      ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                      data-cy=\\\"k8sApp-autoRefreshCheckbox\\\"\\n                    />\\n                    <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                  </div>\\n                  <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                    <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                    <select\\n                      id=\\\"settings_refresh_rate\\\"\\n                      ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\"\\n                      ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                      class=\\\"small-select\\\"\\n                      data-cy=\\\"k8sApp-refreshRateDropdown\\\"\\n                    >\\n                      <option value=\\\"10\\\">10s</option>\\n                      <option value=\\\"30\\\">30s</option>\\n                      <option value=\\\"60\\\">1min</option>\\n                      <option value=\\\"120\\\">2min</option>\\n                      <option value=\\\"300\\\">5min</option>\\n                    </select>\\n                    <span>\\n                      <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <div>\\n                <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sApp-tableSettingsCloseButton\\\">关闭</a>\\n              </div>\\n            </div>\\n          </div>\\n        </span>\\n      </div>\\n    </div>\\n    <div class=\\\"flex flex-row w-full\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n      <span class=\\\"small text-muted mt-1 vertical-center\\\">\\n        <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n        系统资源是隐藏的，这可以在表设置中更改。\\n      </span>\\n    </div>\\n  </div>\\n  <!-- data table content -->\\n  <div ng-class=\\\"{ 'table-responsive': $ctrl.isPrimary, 'inner-datatable': !$ctrl.isPrimary }\\\">\\n    <table class=\\\"table table-hover table-filters nowrap-cells\\\" data-cy=\\\"k8sApp-appTable\\\">\\n      <thead ng-class=\\\"{ 'secondary-heading': !$ctrl.isPrimary }\\\">\\n        <tr role=\\\"row\\\">\\n          <th role=\\\"columnheader\\\" class=\\\"datatable-wide dropdown\\\">\\n            <div ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"flex no-wrap min-w-max\\\">\\n              <span class=\\\"md-checkbox vertical-center\\\">\\n                <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"k8sApp-selectAllCheckbox\\\" />\\n                <label for=\\\"select_all\\\"></label>\\n              </span>\\n              <div class=\\\"cursor-pointer vertical-center\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n                <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n                <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n              </div>\\n            </div>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Name'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Stack'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Namespace'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('ResourcePool')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Image'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\">\\n            <div class=\\\"flex flex-row no-wrap gap-2\\\">\\n              <table-column-header\\n                col-title=\\\"'Application Type'\\\"\\n                can-sort=\\\"true\\\"\\n                is-sorted=\\\"$ctrl.state.orderBy === 'ApplicationType'\\\"\\n                is-sorted-desc=\\\"$ctrl.state.orderBy === 'ApplicationType' && $ctrl.state.reverseOrder\\\"\\n                ng-click=\\\"$ctrl.changeOrderBy('ApplicationType')\\\"\\n              ></table-column-header>\\n              <div class=\\\"flex flex-row no-wrap gap-1 items-center\\\" uib-dropdown-toggle>\\n                <span class=\\\"table-filter\\\">筛选</span>\\n                <pr-icon ng-if=\\\"!$ctrl.filters.state.enabled\\\" icon=\\\"'filter'\\\" feather=\\\"true\\\"></pr-icon>\\n                <pr-icon ng-if=\\\"$ctrl.filters.state.enabled\\\" icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon>\\n              </div>\\n              <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n                <div class=\\\"tableMenu\\\">\\n                  <div class=\\\"menuHeader\\\"> 按应用程序类型筛选 </div>\\n                  <div class=\\\"menuContent\\\">\\n                    <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.filters.state.values track by $index\\\">\\n                      <input id=\\\"filter_state_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"filter.display\\\" ng-change=\\\"$ctrl.onStateFilterChange()\\\" />\\n                      <label for=\\\"filter_state_{{ $index }}\\\">{{ filter.type | kubernetesApplicationTypeText }}</label>\\n                    </div>\\n                  </div>\\n                  <div>\\n                    <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">关闭</a>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </th>\\n          <th>\\n            <table-column-header col-title=\\\"'Status'\\\" can-sort=\\\"false\\\"></table-column-header>\\n            <!-- Status -->\\n          </th>\\n          <th>\\n            <table-column-header col-title=\\\"'Published'\\\" can-sort=\\\"false\\\"></table-column-header>\\n            <!-- Published -->\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Created'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n            ></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          ng-click=\\\"$ctrl.expandItem(item, !$ctrl.isItemExpanded(item))\\\"\\n          dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.applyFilters | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          ng-class=\\\"{ active: item.Checked, interactive: $ctrl.isExpandable(item), 'secondary-body': !$ctrl.isPrimary }\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <td class=\\\"h-[50px]\\\">\\n            <span ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"md-checkbox vertical-center\\\">\\n              <input\\n                id=\\\"select_{{ $index }}\\\"\\n                type=\\\"checkbox\\\"\\n                ng-model=\\\"item.Checked\\\"\\n                ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation()\\\"\\n                ng-disabled=\\\"$ctrl.isSystemNamespace(item)\\\"\\n              />\\n              <label for=\\\"select_{{ $index }}\\\"></label>\\n            </span>\\n            <div ng-if=\\\"$ctrl.isExpandable(item)\\\" class=\\\"vertical-center\\\">\\n              <pr-icon ng-if=\\\"$ctrl.isItemExpanded(item)\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n              <pr-icon ng-if=\\\"!$ctrl.isItemExpanded(item)\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n            </div>\\n          </td>\\n          <td>\\n            <a\\n              ng-if=\\\"item.KubernetesApplications\\\"\\n              ui-sref=\\\"kubernetes.helm({ name: item.Name, namespace: item.ResourcePool })\\\"\\n              ng-click=\\\"$event.stopPropagation()\\\"\\n              class=\\\"hyperlink\\\"\\n              >{{ item.Name }}\\n            </a>\\n            <a\\n              ng-if=\\\"!item.KubernetesApplications\\\"\\n              ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\"\\n              ng-click=\\\"$event.stopPropagation()\\\"\\n              class=\\\"hyperlink\\\"\\n              >{{ item.Name }}\\n            </a>\\n            <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">系统</span>\\n            <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalApplication(item)\\\">外部的</span>\\n          </td>\\n          <td>{{ item.StackName || '-' }}</td>\\n          <td>\\n            <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\" ng-click=\\\"$event.stopPropagation()\\\">{{ item.ResourcePool }}</a>\\n          </td>\\n          <td title=\\\"{{ item.Image }}\\\"\\n            >{{ item.Image | truncate: 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n          >\\n          <td>{{ item.ApplicationType | kubernetesApplicationTypeText }}</td>\\n          <td ng-if=\\\"item.ApplicationType !== $ctrl.KubernetesApplicationTypes.POD\\\">\\n            <status-indicator ok=\\\"(item.TotalPodsCount > 0 && item.TotalPodsCount === item.RunningPodsCount) || item.Status === 'Ready'\\\"></status-indicator>\\n            <span ng-if=\\\"item.DeploymentType === $ctrl.KubernetesApplicationDeploymentTypes.REPLICATED\\\">已复制</span>\\n            <span ng-if=\\\"item.DeploymentType === $ctrl.KubernetesApplicationDeploymentTypes.GLOBAL\\\">全局</span>\\n            <span ng-if=\\\"item.RunningPodsCount >= 0 && item.TotalPodsCount >= 0\\\"\\n              ><code>{{ item.RunningPodsCount }}</code> / <code>{{ item.TotalPodsCount }}</code></span\\n            >\\n            <span ng-if=\\\"item.KubernetesApplications\\\">{{ item.Status }}</span>\\n          </td>\\n          <td ng-if=\\\"item.ApplicationType === $ctrl.KubernetesApplicationTypes.POD\\\">\\n            {{ item.Pods[0].Status }}\\n          </td>\\n          <td>\\n            <span>\\n              {{ item.Services.length === 0 ? 'No' : 'Yes' }}\\n            </span>\\n          </td>\\n          <td>{{ item.CreationDate | getisodate }} {{ item.ApplicationOwner ? 'by ' + item.ApplicationOwner : '' }}</td>\\n        </tr>\\n        <tr dir-paginate-end ng-show=\\\"$ctrl.isExpandable(item) && $ctrl.isItemExpanded(item)\\\" ng-class=\\\"{ 'secondary-body': $ctrl.isPrimary && !item.KubernetesApplications }\\\">\\n          <td></td>\\n          <td colspan=\\\"8\\\" class=\\\"datatable-padding-vertical\\\">\\n            <span ng-if=\\\"item.KubernetesApplications\\\">\\n              <kubernetes-applications-datatable\\n                dataset=\\\"item.KubernetesApplications\\\"\\n                table-key=\\\"{{ item.Id }}_table\\\"\\n                settings-key=\\\"{{ $ctrl.tableKey }}\\\"\\n                order-by=\\\"Name\\\"\\n                remove-action=\\\"$ctrl.removeAction\\\"\\n                refresh-callback=\\\"$ctrl.refreshCallback\\\"\\n                on-publishing-mode-click=\\\"($ctrl.onPublishingModeClick)\\\"\\n                is-primary=\\\"false\\\"\\n              >\\n              </kubernetes-applications-datatable>\\n            </span>\\n            <span ng-if=\\\"!item.KubernetesApplications\\\">\\n              <kubernetes-applications-datatable-url ng-if=\\\"$ctrl.getPublishedUrl(item)\\\" published-url=\\\"{{ $ctrl.getPublishedUrl(item) }}\\\"></kubernetes-applications-datatable-url>\\n              <kubernetes-applications-datatable-details\\n                ng-if=\\\"$ctrl.hasConfigurationSecrets(item)\\\"\\n                configurations=\\\"item.Configurations\\\"\\n              ></kubernetes-applications-datatable-details>\\n            </span>\\n          </td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"8\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"8\\\" class=\\\"text-center text-muted\\\">没有可用的应用程序。</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-datatable/applicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///69333\n");

}),

13181:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <!-- table title and action menu -->\\n  <div class=\\\"toolBar !flex-col gap-1\\\">\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n      <!-- title -->\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"'svg-dataflow'\\\" class-name=\\\"'[&>*]:mr-0.5'\\\"></pr-icon>\\n        </div>\\n        端口映射\\n      </div>\\n      <div class=\\\"searchBar vertical-center !mr-0 min-w-[300px]\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'icon !h-3'\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索端口映射...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <!-- actions -->\\n      <div data-cy=\\\"k8sApp-portTableSettings\\\" class=\\\"settings\\\">\\n        <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n          <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n            <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'icon !mr-0 !h-4'\\\"></pr-icon>\\n          </span>\\n          <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n            <div class=\\\"tableMenu\\\">\\n              <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n              <div class=\\\"menuContent\\\">\\n                <div>\\n                  <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                    <input id=\\\"applications_setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n                    <label for=\\\"applications_setting_show_system\\\">显示系统资源</label>\\n                  </div>\\n                  <div class=\\\"md-checkbox\\\">\\n                    <input\\n                      id=\\\"setting_auto_refresh\\\"\\n                      type=\\\"checkbox\\\"\\n                      ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n                      ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                      data-cy=\\\"k8sApp-autoRefreshCheckbox-port\\\"\\n                    />\\n                    <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                  </div>\\n                  <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                    <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                    <select\\n                      id=\\\"settings_refresh_rate\\\"\\n                      ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\"\\n                      ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                      class=\\\"small-select\\\"\\n                      data-cy=\\\"k8sApp-refreshRateDropdown-port\\\"\\n                    >\\n                      <option value=\\\"10\\\">10s</option>\\n                      <option value=\\\"30\\\">30s</option>\\n                      <option value=\\\"60\\\">1min</option>\\n                      <option value=\\\"120\\\">2min</option>\\n                      <option value=\\\"300\\\">5min</option>\\n                    </select>\\n                    <span>\\n                      <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <div>\\n                <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sApp-tableSettingsCloseButton-port\\\">关闭</a>\\n              </div>\\n            </div>\\n          </div>\\n        </span>\\n      </div>\\n    </div>\\n    <!-- info text -->\\n    <div class=\\\"flex flex-row w-full\\\">\\n      <span class=\\\"small text-muted mt-1 vertical-center\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n        <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n        系统资源是隐藏的，这可以在表设置中更改。\\n      </span>\\n    </div>\\n  </div>\\n  <!-- table -->\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th>\\n            <div class=\\\"cursor-pointer vertical-center\\\" ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\" class=\\\"flex no-wrap min-w-max\\\">\\n              <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n              <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n            </div>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Application'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header col-title=\\\"'Publishing mode'\\\" can-sort=\\\"false\\\"></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Exposed port'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'TargetPort'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'TargetPort' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('TargetPort')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Container port'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Port'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Port' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Port')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header col-title=\\\"'HTTP route'\\\" can-sort=\\\"false\\\"></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <!-- main rows -->\\n        <!-- dir-paginate-start track by $index -->\\n        <tr\\n          dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter: $ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n          ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <!-- expandable -->\\n          <td>\\n            <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\">\\n              <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n              <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n            </div>\\n          </td>\\n          <!-- Application -->\\n          <td>\\n            <a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a>\\n            <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">系统</span>\\n            <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalApplication(item)\\\">外部的</span>\\n          </td>\\n          <!-- Publishing mode -->\\n          <td>\\n            <!-- LB -->\\n            <span ng-if=\\\"item.ServiceType === $ctrl.KubernetesServiceTypes.LOAD_BALANCER\\\">\\n              <span><pr-icon icon=\\\"'share-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon> 负载均衡器 </span>\\n              <span class=\\\"text-muted small ml-5\\\">\\n                <span ng-if=\\\"item.LoadBalancerIPAddress\\\">{{ item.LoadBalancerIPAddress }}</span>\\n                <span ng-if=\\\"!item.LoadBalancerIPAddress\\\">待定</span>\\n              </span>\\n            </span>\\n            <!-- Internal -->\\n            <span ng-if=\\\"item.ServiceType === $ctrl.KubernetesServiceTypes.CLUSTER_IP\\\"> <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon> ClusterIP </span>\\n            <!-- Cluster -->\\n            <span ng-if=\\\"item.ServiceType === $ctrl.KubernetesServiceTypes.NODE_PORT\\\"> <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon> NodePort </span>\\n          </td>\\n          <!-- Exposed port -->\\n          <td>\\n            <span ng-if=\\\"!$ctrl.itemCanExpand(item)\\\">\\n              {{ item.Ports[0].Port }}\\n              <a class=\\\"vertical-center\\\" ng-if=\\\"item.LoadBalancerIPAddress\\\" ng-href=\\\"http://{{ item.LoadBalancerIPAddress }}:{{ item.Ports[0].Port }}\\\" target=\\\"_blank\\\" class=\\\"ml-1\\\">\\n                <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\" class-name=\\\"'icon'\\\"></pr-icon> 访问\\n              </a>\\n            </span>\\n          </td>\\n          <!-- Container port -->\\n          <td>\\n            <span ng-if=\\\"!$ctrl.itemCanExpand(item)\\\"> {{ item.Ports[0].TargetPort }}/{{ item.Ports[0].Protocol }} </span>\\n          </td>\\n          <!-- HTTP route -->\\n          <td>\\n            <span ng-if=\\\"!$ctrl.itemCanExpand(item)\\\">\\n              <span ng-if=\\\"!$ctrl.portHasIngressRules(item.Ports[0])\\\">-</span>\\n              <span ng-if=\\\"$ctrl.portHasIngressRules(item.Ports[0])\\\">\\n                <span\\n                  ng-if=\\\"!$ctrl.ruleCanBeDisplayed(item.Ports[0].IngressRules[0])\\\"\\n                  class=\\\"text-muted cursor-pointer\\\"\\n                  tooltip-append-to-body=\\\"true\\\"\\n                  tooltip-placement=\\\"bottom\\\"\\n                  tooltip-class=\\\"portainer-tooltip\\\"\\n                  uib-tooltip=\\\"Ingress controller IP address not available yet\\\"\\n                  >待定\\n                </span>\\n                <span ng-if=\\\"$ctrl.ruleCanBeDisplayed(item.Ports[0].IngressRules[0])\\\">\\n                  <a ng-href=\\\"{{ $ctrl.buildIngressRuleURL(item.Ports[0].IngressRules[0]) }}\\\" target=\\\"_blank\\\">\\n                    {{ $ctrl.buildIngressRuleURL(item.Ports[0].IngressRules[0]) | stripprotocol }}\\n                  </a>\\n                </span>\\n              </span>\\n            </span>\\n          </td>\\n        </tr>\\n        <!-- sub rows -->\\n        <tr ng-show=\\\"item.Expanded\\\" ng-repeat-start=\\\"port in item.Ports\\\" ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\">\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\"></td>\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\">-</td>\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\">-</td>\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\">\\n            {{ port.Port }}\\n            <a ng-if=\\\"item.LoadBalancerIPAddress\\\" ng-href=\\\"http://{{ item.LoadBalancerIPAddress }}:{{ port.Port }}\\\" target=\\\"_blank\\\" class=\\\"ml-1\\\">\\n              <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\"></pr-icon> 访问\\n            </a>\\n          </td>\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\">{{ port.TargetPort }}/{{ port.Protocol }}</td>\\n          <td ng-if=\\\"!$ctrl.portHasIngressRules(port)\\\">-</td>\\n        </tr>\\n        <tr\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat-end\\n          ng-repeat=\\\"rule in port.IngressRules\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td></td>\\n          <td>-</td>\\n          <td>-</td>\\n          <td>\\n            {{ port.Port }}\\n            <a ng-if=\\\"item.LoadBalancerIPAddress\\\" ng-href=\\\"http://{{ item.LoadBalancerIPAddress }}:{{ port.Port }}\\\" target=\\\"_blank\\\" class=\\\"ml-1\\\">\\n              <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\"></pr-icon>访问\\n            </a>\\n          </td>\\n          <td>{{ port.TargetPort }}/{{ port.Protocol }}</td>\\n          <td>\\n            <span\\n              ng-if=\\\"!$ctrl.ruleCanBeDisplayed(rule)\\\"\\n              class=\\\"text-muted cursor-pointer\\\"\\n              tooltip-append-to-body=\\\"true\\\"\\n              tooltip-placement=\\\"bottom\\\"\\n              tooltip-class=\\\"portainer-tooltip\\\"\\n              uib-tooltip=\\\"Ingress controller IP address not available yet\\\"\\n              >待定\\n            </span>\\n            <span ng-if=\\\"$ctrl.ruleCanBeDisplayed(rule)\\\">\\n              <a ng-href=\\\"{{ $ctrl.buildIngressRuleURL(rule) }}\\\" target=\\\"_blank\\\">\\n                {{ $ctrl.buildIngressRuleURL(rule) | stripprotocol }}\\n              </a>\\n            </span>\\n          </td>\\n        </tr>\\n        <tr class=\\\"!h-0\\\" dir-paginate-end></tr>\\n        <!-- no dataset -->\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <!-- no values in filtered dataset -->\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有可用的应用程序端口映射。</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-ports-datatable/applicationsPortsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///13181\n");

}),

35558:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <!-- table title and action menu -->\\n  <div class=\\\"toolBar !flex-col gap-1\\\">\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n      <!-- title -->\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon>\\n        </div>\\n        堆栈\\n      </div>\\n      <!-- actions -->\\n      <div class=\\\"searchBar vertical-center\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput min-w-min self-start\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索堆栈...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"actionBar !gap-3 !mr-0\\\">\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n          ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n          ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n          data-cy=\\\"k8sApp-removeStackButton\\\"\\n        >\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n          删除\\n        </button>\\n        <div class=\\\"settings\\\" data-cy=\\\"k8sApp-StackTableSettings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle>\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                      <input id=\\\"applications_setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n                      <label for=\\\"applications_setting_show_system\\\">显示系统资源</label>\\n                    </div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input\\n                        id=\\\"setting_auto_refresh\\\"\\n                        type=\\\"checkbox\\\"\\n                        ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n                        ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                        data-cy=\\\"k8sApp-autoRefreshCheckbox-stack\\\"\\n                      />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select\\n                        id=\\\"settings_refresh_rate\\\"\\n                        ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\"\\n                        ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n                        class=\\\"small-select\\\"\\n                        data-cy=\\\"k8sApp-refreshRateDropdown-stack\\\"\\n                      >\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sApp-tableSettingsCloseButton-stack\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- info text -->\\n    <div class=\\\"flex flex-row w-full\\\">\\n      <span class=\\\"small text-muted mt-1 vertical-center\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n        <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n        系统资源被隐藏，这可以在表格设置中改变。\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th class=\\\"w-20 dropdown\\\">\\n            <div class=\\\"flex no-wrap h-full items-center\\\">\\n              <span class=\\\"md-checkbox\\\">\\n                <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                <label for=\\\"select_all\\\"></label>\\n              </span>\\n              <div class=\\\"cursor-pointer\\\" ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n                <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n                <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n              </div>\\n            </div>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Stack'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Namespace'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('ResourcePool')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Applications'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Applications.length'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Applications.length' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Applications.length')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter: $ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n          ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <td>\\n            <div class=\\\"flex no-wrap items-center\\\">\\n              <span class=\\\"md-checkbox\\\">\\n                <input\\n                  id=\\\"select_{{ $index }}\\\"\\n                  type=\\\"checkbox\\\"\\n                  ng-model=\\\"item.Checked\\\"\\n                  ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation();\\\"\\n                  ng-disabled=\\\"!$ctrl.allowSelection(item)\\\"\\n                />\\n                <label for=\\\"select_{{ $index }}\\\"></label>\\n              </span>\\n              <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n                <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n                <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n              </div>\\n            </div>\\n          </td>\\n          <td>\\n            {{ item.Name }}\\n          </td>\\n          <td>\\n            <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\" ng-click=\\\"$event.stopPropagation();\\\">{{ item.ResourcePool }}</a>\\n            <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item.ResourcePool)\\\">系统</span>\\n          </td>\\n          <td>{{ item.Applications.length }}</td>\\n          <td>\\n            <a class=\\\"vertical-center\\\" ui-sref=\\\"kubernetes.stacks.stack.logs({ namespace: item.ResourcePool, name: item.Name })\\\">\\n              <pr-icon icon=\\\"'file-text'\\\" size=\\\"'md'\\\" title=\\\"Logs\\\" feather=\\\"true\\\"></pr-icon>\\n              Logs\\n            </a>\\n          </td>\\n        </tr>\\n        <tr\\n          dir-paginate-end\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat=\\\"app in item.Applications\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td></td>\\n          <td colspan=\\\"4\\\">\\n            <a ui-sref=\\\"kubernetes.applications.application({ name: app.Name, namespace: app.ResourcePool })\\\">{{ app.Name }}</a>\\n            <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"!$ctrl.isSystemNamespace(app.ResourcePool) && $ctrl.isExternalApplication(app)\\\"\\n              >外部</span\\n            >\\n          </td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">没有可用堆栈。</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///35558\n");

}),

62178:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <!-- table title and action menu -->\\n      <div class=\\\"toolBar !flex-col gap-1\\\">\\n        <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !px-0 !py-1 w-full\\\">\\n          <div class=\\\"toolBarTitle\\\">\\n            <div class=\\\"widget-icon space-right\\\">\\n              <pr-icon icon=\\\"'lock'\\\" feather=\\\"true\\\"></pr-icon>\\n            </div>\\n            配置映射 & Secrets\\n          </div>\\n          <div class=\\\"searchBar vertical-center w-72 !mr-0\\\">\\n            <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'icon !h-3'\\\"></pr-icon>\\n            <input\\n              type=\\\"text\\\"\\n              class=\\\"searchInput\\\"\\n              ng-model=\\\"$ctrl.state.textFilter\\\"\\n              ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n              placeholder=\\\"搜索配置映射和机密...\\\"\\n              auto-focus\\n              ng-model-options=\\\"{ debounce: 300 }\\\"\\n              data-cy=\\\"k8sConfig-searchInput\\\"\\n            />\\n          </div>\\n          <!-- actions -->\\n          <div class=\\\"actionBar !gap-3 !mr-0\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-dangerlight !ml-0 vertical-center\\\"\\n              ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n              ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n              data-cy=\\\"k8sConfig-removeConfigButton\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-secondary !ml-0 vertical-center\\\" ui-sref=\\\"kubernetes.configurations.new\\\" data-cy=\\\"k8sConfig-addConfigWithFormButton\\\">\\n              <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>添加表单\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary !ml-0 vertical-center\\\" ui-sref=\\\"kubernetes.deploy\\\" data-cy=\\\"k8sConfig-deployFromManifestButton\\\">\\n              <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>从清单创建\\n            </button>\\n          </div>\\n          <div class=\\\"settings\\\">\\n            <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n              <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n                <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'icon !mr-0 !h-4'\\\"></pr-icon>\\n              </span>\\n              <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n                <div class=\\\"tableMenu\\\">\\n                  <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                  <div class=\\\"menuContent\\\">\\n                    <div>\\n                      <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                        <input\\n                          id=\\\"setting_show_system\\\"\\n                          type=\\\"checkbox\\\"\\n                          ng-model=\\\"$ctrl.settings.showSystem\\\"\\n                          ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\"\\n                          data-cy=\\\"k8sConfig-systemResourceCheckbox\\\"\\n                        />\\n                        <label for=\\\"setting_show_system\\\">显示系统资源</label>\\n                      </div>\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                        <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                      </div>\\n                      <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                        <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                        <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                          <option value=\\\"10\\\">10s</option>\\n                          <option value=\\\"30\\\">30s</option>\\n                          <option value=\\\"60\\\">1min</option>\\n                          <option value=\\\"120\\\">2min</option>\\n                          <option value=\\\"300\\\">5min</option>\\n                        </select>\\n                        <span>\\n                          <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <div>\\n                    <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sConfig-closeSettingsButton\\\">关闭</a>\\n                  </div>\\n                </div>\\n              </div>\\n            </span>\\n          </div>\\n        </div>\\n        <div ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\" class=\\\"flex flex-row w-full\\\">\\n          <span class=\\\"small text-muted mt-1 vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n            <div> 系统资源被隐藏，这可以在表格设置中改变。 </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"k8sConfig-tableSettingsButtonconfigsTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"flex flex-nowrap items-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Namespace'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Namespace'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Namespace')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Kind'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Kind'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Kind' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Kind')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Created'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"kubernetes.configurations.configuration({ name: item.Name, namespace: item.Namespace })\\\">{{ item.Name }}</a>\\n                <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemConfig(item) && $ctrl.isExternalConfiguration(item)\\\">外部</span>\\n                <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"!item.Used && !$ctrl.isSystemNamespace(item) && !$ctrl.isSystemConfig(item)\\\">未使用</span>\\n                <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemConfig(item)\\\">系统</span>\\n              </td>\\n              <td>\\n                <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.Namespace })\\\">{{ item.Namespace }}</a>\\n              </td>\\n              <td>{{ item.Kind | kubernetesConfigurationKindText }}</td>\\n              <td>{{ item.CreationDate | getisodate }} {{ item.ConfigurationOwner ? 'by ' + item.ConfigurationOwner : '' }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">没有可用的配置。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"k8sConfig-paginationDropdown\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/configurations-datatable/configurationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62178\n");

}),

29649:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <div class=\\\"toolBar\\\">\\n    <div class=\\\"toolBarTitle flex\\\">\\n      <div class=\\\"widget-icon space-right\\\">\\n        <pr-icon icon=\\\"'svg-clockrewind'\\\" feather=\\\"true\\\"></pr-icon>\\n      </div>\\n      {{ $ctrl.titleText }}\\n    </div>\\n    <div class=\\\"searchBar\\\">\\n      <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" feather=\\\"true\\\"></pr-icon>\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"searchInput ml-1\\\"\\n        ng-model=\\\"$ctrl.state.textFilter\\\"\\n        ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n        placeholder=\\\"搜索事件...\\\"\\n        auto-focus\\n        ng-model-options=\\\"{ debounce: 300 }\\\"\\n        data-cy=\\\"k8sConfigDetail-eventsTableSearchInput\\\"\\n      />\\n    </div>\\n    <div class=\\\"settings\\\">\\n      <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n        <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n        <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n          <div class=\\\"tableMenu\\\">\\n            <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n            <div class=\\\"menuContent\\\">\\n              <div>\\n                <div class=\\\"md-checkbox\\\">\\n                  <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                  <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                </div>\\n                <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                  <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                  <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                    <option value=\\\"10\\\">10s</option>\\n                    <option value=\\\"30\\\">30s</option>\\n                    <option value=\\\"60\\\">1min</option>\\n                    <option value=\\\"120\\\">2min</option>\\n                    <option value=\\\"300\\\">5min</option>\\n                  </select>\\n                  <span>\\n                    <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n            <div>\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n            </div>\\n          </div>\\n        </div>\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"k8sConfigDetail-eventsTable\\\">\\n      <thead>\\n        <tr>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Date'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Date'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Date' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Date')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Kind'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Involved.kind'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Involved.kind' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Involved.kind')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Type'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Message'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Message'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Message' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Message')\\\"\\n            ></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <td>{{ item.Date | getisodate }}</td>\\n          <td>{{ item.Involved.kind }}</td>\\n          <td\\n            ><span class=\\\"label label-{{ item.Type | kubernetesEventTypeColor }}\\\">{{ item.Type }}</span></td\\n          >\\n          <td>{{ item.Message }}</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.loading\\\">\\n          <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)\\\">\\n          <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">No event available.</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"k8sConfigDetail-eventsTablePaginationDropdown\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/events-datatable/eventsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///29649\n");

}),

95947:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar !gap-3\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center !mr-0 min-w-[280px]\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for an application...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Stack'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Image'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td\\n                ><a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a></td\\n              >\\n              <td>{{ item.StackName || '-' }}</td>\\n              <td title=\\\"{{ item.Image }}\\\">{{ item.Image | truncate: 64 }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No application available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///95947\n");

}),

33989:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle flex\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"'svg-laptopcode'\\\"></pr-icon>\\n          </div>\\n          <span class=\\\"vertical-center\\\">\\n            {{ $ctrl.titleText }}\\n          </span>\\n        </div>\\n        <div class=\\\"searchBar min-w-[260px]\\\">\\n          <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" class-name=\\\"'searchIcon'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for an application...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"settings vertical-center\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Stack'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Namespace'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Namespace'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Namespace')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Image'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'CPU reservation'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Memory reservation'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td>\\n                <a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a>\\n                <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">系统</span>\\n                <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalApplication(item)\\\">外部</span>\\n              </td>\\n              <td>{{ item.StackName || '-' }}</td>\\n              <td>\\n                <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\">{{ item.ResourcePool }}</a>\\n              </td>\\n              <td title=\\\"{{ item.Image }}\\\"\\n                >{{ item.Image | truncate: 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n              >\\n              <td>{{ item.CPU | kubernetesApplicationCPUValue }}</td>\\n              <td>{{ item.Memory | humansize }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">No stack available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///33989\n");

}),

93172:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle flex\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          <span class=\\\"vertical-center\\\">\\n            {{ $ctrl.titleText }}\\n          </span>\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a node...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span\\n            class=\\\"setting vertical-center\\\"\\n            ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\"\\n            uib-dropdown\\n            dropdown-append-to-body\\n            auto-close=\\\"disabled\\\"\\n            is-open=\\\"$ctrl.settings.open\\\"\\n          >\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Role'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Status'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'CPU'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Memory'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Version'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Version'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Version' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Version')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'IP Address'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'IPAddress'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAddress' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('IPAddress')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.useServerMetrics\\\">\\n                <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td ng-if=\\\"$ctrl.isAdmin\\\">\\n                <a ui-sref=\\\"kubernetes.cluster.node({ name: item.Name })\\\">\\n                  {{ item.Name }}\\n                </a>\\n                <span class=\\\"label label-primary image-tag\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"item.Api\\\">api</span>\\n              </td>\\n              <td>{{ item.Role }}</td>\\n              <td\\n                ><span class=\\\"label label-{{ item.Status | kubernetesNodeStatusColor }}\\\">{{ item.Status }}</span></td\\n              >\\n              <td>{{ item.CPU }}</td>\\n              <td>{{ item.Memory | humansize }}</td>\\n              <td>{{ item.Version }}</td>\\n              <td>{{ item.IPAddress }}</td>\\n              <td ng-if=\\\"$ctrl.useServerMetrics\\\">\\n                <a ui-sref=\\\"kubernetes.cluster.node.stats({ name: item.Name })\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'bar-chart'\\\" feather=\\\"true\\\"></pr-icon> Stats </a>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"7\\\" class=\\\"text-center text-muted\\\">No node available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/nodes-datatable/nodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///93172\n");

}),

60927:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for an application...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'StackName'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Image'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'CPU'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Memory'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n            >\\n              <td>\\n                <a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a>\\n                <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"$ctrl.isExternalApplication(item)\\\">外部</span>\\n              </td>\\n              <td>{{ item.StackName || '-' }}</td>\\n              <td title=\\\"{{ item.Image }}\\\"\\n                >{{ item.Image | truncate: 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n              >\\n              <td>{{ item.CPU | kubernetesApplicationCPUValue }}</td>\\n              <td>{{ item.Memory | humansize }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No application available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///60927\n");

}),

70586:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <!-- toolbar header actions and settings -->\\n      <div class=\\\"toolBar !flex-col gap-1\\\">\\n        <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n          <div class=\\\"toolBarTitle vertical-center\\\">\\n            <div class=\\\"widget-icon space-right\\\">\\n              <pr-icon icon=\\\"'layers'\\\" feather=\\\"true\\\"></pr-icon>\\n            </div>\\n            Namespaces\\n          </div>\\n          <div class=\\\"searchBar vertical-center\\\">\\n            <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n            <input\\n              type=\\\"text\\\"\\n              class=\\\"searchInput\\\"\\n              ng-model=\\\"$ctrl.state.textFilter\\\"\\n              ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n              placeholder=\\\"Search for a namespace...\\\"\\n              auto-focus\\n              ng-model-options=\\\"{ debounce: 300 }\\\"\\n              data-cy=\\\"k8sNamespace-namespaceSearchInput\\\"\\n            />\\n          </div>\\n          <div class=\\\"actionBar !gap-3 !mr-0\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n              ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n              ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n              data-cy=\\\"k8sNamespace-removeNamespaceButton\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-secondary !ml-0\\\" ui-sref=\\\"kubernetes.resourcePools.new\\\" data-cy=\\\"k8sNamespace-addNamespaceWithFormButton\\\">\\n              <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>添加表单\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary !ml-0\\\" ui-sref=\\\"kubernetes.deploy\\\" data-cy=\\\"k8sNamespace-deployFromManifestButton\\\">\\n              <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>从清单创建\\n            </button>\\n          </div>\\n          <div class=\\\"settings\\\">\\n            <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n              <span uib-dropdown-toggle>\\n                <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n              </span>\\n              <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n                <div class=\\\"tableMenu\\\">\\n                  <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                  <div class=\\\"menuContent\\\">\\n                    <div>\\n                      <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                        <input id=\\\"setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n                        <label for=\\\"setting_show_system\\\">显示系统资源</label>\\n                      </div>\\n                      <div class=\\\"md-checkbox\\\">\\n                        <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                        <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                      </div>\\n                      <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                        <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                        <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                          <option value=\\\"10\\\">10s</option>\\n                          <option value=\\\"30\\\">30s</option>\\n                          <option value=\\\"60\\\">1min</option>\\n                          <option value=\\\"120\\\">2min</option>\\n                          <option value=\\\"300\\\">5min</option>\\n                        </select>\\n                        <span>\\n                          <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <div>\\n                    <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                  </div>\\n                </div>\\n              </div>\\n            </span>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"flex flex-row w-full\\\" ng-if=\\\"!$ctrl.settings.showSystem && $ctrl.isAdmin\\\">\\n          <span class=\\\"small text-muted mt-1 vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n            <div> 系统资源被隐藏，这可以在表格设置中改变。 </div>\\n          </span>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th class=\\\"dropdown\\\">\\n                <div class=\\\"flex flex-nowrap min-w-max vertical-center\\\">\\n                  <span ng-if=\\\"$ctrl.isAdmin\\\" class=\\\"md-checkbox vertical-center\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'名称'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Namespace.Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'状态'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.Status'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.Status' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Namespace.Status')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'配额'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Quota'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Quota' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Quota')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.CreationDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.CreationDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Namespace.CreationDate')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.isAdmin\\\">\\n                <table-column-header col-title=\\\"'操作'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span ng-if=\\\"$ctrl.isAdmin\\\" class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.Namespace.Name })\\\">{{ item.Namespace.Name }}</a>\\n                <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">系统</span>\\n              </td>\\n              <td>\\n                <span class=\\\"label label-{{ $ctrl.namespaceStatusColor(item.Namespace.Status) }}\\\">{{ item.Namespace.Status }}</span>\\n              </td>\\n              <td>\\n                <span ng-if=\\\"item.Quota\\\" class=\\\"label label-warning\\\">启用</span>\\n                <span ng-if=\\\"!item.Quota\\\">-</span>\\n              </td>\\n              <td>{{ item.Namespace.CreationDate | getisodate }} {{ item.Namespace.ResourcePoolOwner ? 'by ' + item.Namespace.ResourcePoolOwner : '' }}</td>\\n              <td ng-if=\\\"$ctrl.isAdmin\\\">\\n                <a class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.canManageAccess(item)\\\" ui-sref=\\\"kubernetes.resourcePools.resourcePool.access({id: item.Namespace.Name})\\\">\\n                  <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>\\n                  管理访问\\n                </a>\\n                <span ng-if=\\\"!$ctrl.canManageAccess(item)\\\">-</span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">No namespace available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///70586\n");

}),

18491:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <!-- toolbar header actions and settings -->\\n  <div class=\\\"toolBar !flex-col gap-1\\\">\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"'database'\\\" feather=\\\"true\\\"></pr-icon>\\n        </div>\\n        存储卷\\n      </div>\\n      <div class=\\\"searchBar vertical-center\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput !mr-0\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索存储卷...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"actionBar !gap-3 !mr-0\\\">\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0\\\"\\n          ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n          ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n        >\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n          删除\\n        </button>\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary vertical-center !ml-0\\\" ui-sref=\\\"kubernetes.deploy\\\" data-cy=\\\"k8sVolume-deployFromManifestButton\\\">\\n          <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'!h-3'\\\"></pr-icon>\\n          从清单创建\\n        </button>\\n      </div>\\n      <div class=\\\"settings\\\">\\n        <span\\n          class=\\\"setting\\\"\\n          ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\"\\n          uib-dropdown\\n          dropdown-append-to-body\\n          auto-close=\\\"disabled\\\"\\n          is-open=\\\"$ctrl.settings.open\\\"\\n          data-cy=\\\"k8s-vol-table-settings\\\"\\n        >\\n          <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n            <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n          </span>\\n          <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n            <div class=\\\"tableMenu\\\">\\n              <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n              <div class=\\\"menuContent\\\">\\n                <div>\\n                  <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                    <input id=\\\"setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n                    <label for=\\\"setting_show_system\\\">显示系统资源</label>\\n                  </div>\\n                  <div class=\\\"md-checkbox\\\">\\n                    <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                    <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                  </div>\\n                  <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                    <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                    <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                      <option value=\\\"10\\\">10s</option>\\n                      <option value=\\\"30\\\">30s</option>\\n                      <option value=\\\"60\\\">1min</option>\\n                      <option value=\\\"120\\\">2min</option>\\n                      <option value=\\\"300\\\">5min</option>\\n                    </select>\\n                    <span>\\n                      <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <div>\\n                <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8s-vol-table-settings-close\\\">关闭</a>\\n              </div>\\n            </div>\\n          </div>\\n        </span>\\n      </div>\\n    </div>\\n    <div class=\\\"flex flex-row w-full\\\" ng-if=\\\"!ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n      <span class=\\\"small text-muted mt-1 vertical-center\\\">\\n        <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n        <span> 系统资源被隐藏，这可以在表格设置中改变。 </span>\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th>\\n            <div class=\\\"flex flex-no-wrap items-center\\\">\\n              <span class=\\\"md-checkbox vertical-center\\\">\\n                <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                <label for=\\\"select_all\\\"></label>\\n              </span>\\n              <table-column-header\\n                col-title=\\\"'Name'\\\"\\n                can-sort=\\\"true\\\"\\n                is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Name'\\\"\\n                is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Name' && $ctrl.state.reverseOrder\\\"\\n                ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Name')\\\"\\n              ></table-column-header>\\n            </div>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Namespace'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool.Namespace.Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool.Namespace.Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('ResourcePool.Namespace.Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Used by'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Applications[0].Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Applications[0].Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Applications[0].Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Storage'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.StorageClass.Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.StorageClass.Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.StorageClass.Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Size'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Storage'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Storage' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Storage')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'Created'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.CreationDate'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.CreationDate' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.CreationDate')\\\"\\n            ></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n          ng-class=\\\"{ active: item.Checked }\\\"\\n        >\\n          <td>\\n            <span class=\\\"md-checkbox\\\">\\n              <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" />\\n              <label for=\\\"select_{{ $index }}\\\"></label>\\n            </span>\\n            <a ui-sref=\\\"kubernetes.volumes.volume({ namespace: item.ResourcePool.Namespace.Name, name: item.PersistentVolumeClaim.Name })\\\">{{ item.PersistentVolumeClaim.Name }}</a>\\n            <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">系统</span>\\n            <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalVolume(item)\\\">外部</span>\\n            <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && !$ctrl.isUsed(item)\\\">未使用</span>\\n          </td>\\n          <td>\\n            <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool.Namespace.Name })\\\">{{ item.ResourcePool.Namespace.Name }}</a>\\n          </td>\\n          <td>\\n            <a ng-if=\\\"item.Applications.length\\\" ui-sref=\\\"kubernetes.applications.application({ name: item.Applications[0].Name, namespace: item.ResourcePool.Namespace.Name })\\\">{{\\n              item.Applications[0].Name\\n            }}</a>\\n            <span ng-if=\\\"item.Applications.length > 1\\\"> + {{ item.Applications.length - 1 }}</span>\\n            <span ng-if=\\\"!item.Applications.length\\\">-</span>\\n          </td>\\n          <td>\\n            {{ item.PersistentVolumeClaim.StorageClass.Name }}\\n          </td>\\n          <td>\\n            {{ item.PersistentVolumeClaim.Storage }}\\n          </td>\\n          <td>\\n            {{ item.PersistentVolumeClaim.CreationDate | getisodate }}\\n            {{ item.PersistentVolumeClaim.ApplicationOwner ? 'by ' + item.PersistentVolumeClaim.ApplicationOwner : '' }}\\n          </td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有可用的卷。</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/volumes-datatable/volumesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///18491\n");

}),

46598:

(function(module) {

eval("var _module_exports = \"<rd-widget>\\n  <div class=\\\"toolBar px-5 pt-5\\\">\\n    <div class=\\\"toolBarTitle vertical-center text-[16px] font-medium\\\">\\n      <div class=\\\"widget-icon space-right\\\">\\n        <pr-icon icon=\\\"'svg-helm'\\\"></pr-icon>\\n      </div>\\n      Additional repositories\\n    </div>\\n  </div>\\n  <rd-widget-body>\\n    <div class=\\\"actionBar\\\">\\n      <form class=\\\"form-horizontal\\\" name=\\\"addUserHelmRepoForm\\\">\\n        <div class=\\\"form-group\\\">\\n          <span class=\\\"col-sm-12 text-muted small\\\"> Add a Helm repository. All Helm charts in the repository will be added to the list. </span>\\n        </div>\\n\\n        <div class=\\\"form-group mb-2\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <input\\n              type=\\\"url\\\"\\n              name=\\\"repo\\\"\\n              class=\\\"form-control\\\"\\n              ng-model=\\\"$ctrl.state.repository\\\"\\n              placeholder=\\\"https://charts.bitnami.com/bitnami\\\"\\n              ng-pattern=\\\"/^https?:///\\\"\\n              required\\n            />\\n          </div>\\n        </div>\\n\\n        <div class=\\\"form-group nomargin\\\" ng-show=\\\"addUserHelmRepoForm.repo.$invalid\\\">\\n          <div class=\\\"small\\\">\\n            <div ng-messages=\\\"addUserHelmRepoForm.repo.$error\\\">\\n              <p class=\\\"vertical-center text-warning\\\" ng-message=\\\"pattern\\\"\\n                ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> A valid URL beginning with http(s) is required.</p\\n              >\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"form-group nomargin\\\" ng-show=\\\"$ctrl.doesRepoExist()\\\">\\n          <div class=\\\"small\\\">\\n            <div ng-messages=\\\"addUserHelmRepoForm.repo.$error\\\">\\n              <p class=\\\"vertical-center text-warning\\\"><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Helm repository already exists.</p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"form-group\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-primary btn-sm nomargin\\\"\\n              ng-click=\\\"$ctrl.addRepository()\\\"\\n              ng-disabled=\\\"$ctrl.state.isAddingRepo || addUserHelmRepoForm.repo.$invalid || $ctrl.doesRepoExist()\\\"\\n              analytics-on\\n              analytics-category=\\\"kubernetes\\\"\\n              analytics-event=\\\"kubernetes-helm-add-repository\\\"\\n            >\\n              Add repository\\n            </button>\\n          </div>\\n        </div>\\n      </form>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///46598\n");

}),

2894:

(function(module) {

eval("var _module_exports = \"<!-- helm chart -->\\n<div ng-class=\\\"{ 'blocklist-item--selected': $ctrl.model.Selected }\\\" class=\\\"blocklist-item template-item mx-[10px]\\\" ng-click=\\\"$ctrl.onSelect($ctrl.model)\\\">\\n  <div class=\\\"blocklist-item-box\\\">\\n    <!-- helmchart-image -->\\n    <span ng-if=\\\"$ctrl.model.icon\\\">\\n      <fallback-image\\n        src=\\\"$ctrl.model.icon\\\"\\n        fallback-icon=\\\"'svg-helm'\\\"\\n        class-name=\\\"'blocklist-item-logo h-16 w-auto'\\\"\\n        fallback-class-name=\\\"'icon-nested-blue !h-12 !w-12 [&>*]:!h-8 [&>*]:!w-auto'\\\"\\n        fallback-mode=\\\"'primary'\\\"\\n        size=\\\"'xl'\\\"\\n      ></fallback-image>\\n    </span>\\n\\n    <div class=\\\"widget-icon space-right\\\" ng-if=\\\"!$ctrl.model.icon\\\">\\n      <pr-icon icon=\\\"'svg-helm'\\\"></pr-icon>\\n    </div>\\n\\n    <!-- !helmchart-image -->\\n    <!-- helmchart-details -->\\n    <div class=\\\"col-sm-12 helm-template-item-details\\\">\\n      <!-- blocklist-item-line1 -->\\n      <div class=\\\"blocklist-item-line\\\">\\n        <span>\\n          <span class=\\\"blocklist-item-title\\\">\\n            {{ $ctrl.model.name }}\\n          </span>\\n          <span class=\\\"space-left blocklist-item-subtitle\\\">\\n            <span class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'svg-helm'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n            </span>\\n            <span> Helm </span>\\n          </span>\\n        </span>\\n      </div>\\n      <!-- !blocklist-item-line1 -->\\n      <span class=\\\"blocklist-item-actions\\\" ng-transclude=\\\"actions\\\"></span>\\n      <!-- blocklist-item-line2 -->\\n      <div class=\\\"blocklist-item-line helm-template-item-details-sub\\\">\\n        <span class=\\\"blocklist-item-desc\\\">\\n          {{ $ctrl.model.description }}\\n        </span>\\n        <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.model.annotations.category\\\">\\n          {{ $ctrl.model.annotations.category }}\\n        </span>\\n      </div>\\n      <!-- !blocklist-item-line2 -->\\n    </div>\\n    <!-- !helmchart-details -->\\n  </div>\\n  <!-- !helm chart -->\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2894\n");

}),

24633:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap w-full relative\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n\\n          {{ $ctrl.titleText }}\\n        </div>\\n\\n        <div class=\\\"searchBar vertical-center !mr-0\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a chart...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"w-1/5\\\">\\n          <por-select\\n            placeholder=\\\"'Select a category'\\\"\\n            value=\\\"$ctrl.state.selectedCategory\\\"\\n            options=\\\"$ctrl.state.categories\\\"\\n            on-change=\\\"($ctrl.onCategoryChange)\\\"\\n            is-clearable=\\\"true\\\"\\n            bind-to-body=\\\"true\\\"\\n          ></por-select>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"blocklist\\\">\\n        <helm-templates-list-item\\n          ng-repeat=\\\"chart in $ctrl.charts | filter:$ctrl.state.textFilter | filter: $ctrl.state.selectedCategory\\\"\\n          model=\\\"chart\\\"\\n          type-label=\\\"helm\\\"\\n          on-select=\\\"($ctrl.selectAction)\\\"\\n        >\\n        </helm-templates-list-item>\\n        <div ng-if=\\\"$ctrl.loading\\\" class=\\\"text-center text-muted\\\">\\n          加载中...\\n          <div class=\\\"text-center text-muted\\\"> Initial download of Helm Charts can take a few minutes </div>\\n        </div>\\n        <div ng-if=\\\"!$ctrl.loading && $ctrl.charts.length === 0\\\" class=\\\"text-center text-muted\\\"> No helm charts available. </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///24633\n");

}),

18236:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Helm'\\\" breadcrumbs=\\\"['Charts']\\\" reload=\\\"true\\\"></page-header>\\n\\n<information-panel title-text=\\\"Information\\\" ng-if=\\\"!$ctrl.state.chart\\\">\\n  <span class=\\\"small text-muted\\\">\\n    <p class=\\\"inline-flex flex-row items-center\\\">\\n      <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" class=\\\"mr-1 vertical-center\\\" mode=\\\"'primary'\\\"></pr-icon>\\n      This is a first version for Helm charts, for more information see this&nbsp;<a\\n        class=\\\"hyperlink\\\"\\n        href=\\\"https://www.portainer.io/blog/portainer-now-with-helm-support\\\"\\n        target=\\\"_blank\\\"\\n        >blog post</a\\n      >.</p\\n    >\\n    <p ng-if=\\\"$ctrl.state.globalRepository === ''\\\" class=\\\"inline-flex items-center\\\">\\n      <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\"></pr-icon>\\n      <span>The Global Helm Repository is not configured.</span>\\n      <a ng-if=\\\"$ctrl.state.isAdmin\\\" ui-sref=\\\"portainer.settings\\\">Configure Global Helm Repository in Settings</a>.\\n    </p>\\n  </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n  <!-- helmchart-form -->\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.state.chart\\\">\\n    <rd-widget>\\n      <div class=\\\"toolBarTitle vertical-center pt-5 px-5 text-muted\\\">\\n        <fallback-image\\n          src=\\\"$ctrl.state.chart.icon\\\"\\n          fallback-icon=\\\"'svg-helm'\\\"\\n          class-name=\\\"'h-8 w-8'\\\"\\n          fallback-class-name=\\\"'icon-nested-blue'\\\"\\n          fallback-mode=\\\"'primary'\\\"\\n        ></fallback-image>\\n        {{ $ctrl.state.chart.name }}\\n      </div>\\n      <rd-widget-body classes=\\\"padding\\\">\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.helmTemplateCreationForm\\\">\\n          <!-- description -->\\n          <div>\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Description </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <div class=\\\"text-xs text-muted\\\" ng-bind-html=\\\"$ctrl.state.chart.description\\\"></div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !description -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Configuration </div>\\n          <!-- namespace-input -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.resourcePool\\\">\\n            <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-2 control-label text-left\\\">Namespace</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <select\\n                class=\\\"form-control\\\"\\n                id=\\\"resource-pool-selector\\\"\\n                ng-model=\\\"$ctrl.state.resourcePool\\\"\\n                ng-options=\\\"resourcePool.Namespace.Name for resourcePool in $ctrl.state.resourcePools\\\"\\n                ng-change=\\\"\\\"\\n                ng-disabled=\\\"$ctrl.state.isEdit\\\"\\n              ></select>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.resourcePool\\\">\\n            <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n              You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n            </div>\\n          </div>\\n          <!-- !namespace-input -->\\n          <!-- name-input -->\\n          <div class=\\\"form-group mb-2\\\">\\n            <label for=\\\"release_name\\\" class=\\\"col-sm-2 control-label text-left required\\\">名称</label>\\n            <div class=\\\"col-sm-10\\\">\\n              <input\\n                type=\\\"text\\\"\\n                name=\\\"release_name\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"$ctrl.state.appName\\\"\\n                placeholder=\\\"例如 my-app\\\"\\n                required\\n                ng-pattern=\\\"/^[a-z]([-a-z0-9]*[a-z0-9])?$/\\\"\\n              />\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.helmTemplateCreationForm.release_name.$invalid\\\">\\n            <div class=\\\"small\\\">\\n              <div ng-messages=\\\"$ctrl.helmTemplateCreationForm.release_name.$error\\\">\\n                <div class=\\\"col-sm-2\\\"></div>\\n                <p class=\\\"vertical-center col-sm-10 text-warning\\\" ng-message=\\\"required\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n                  本栏为必填项。\\n                </p>\\n                <p class=\\\"vertical-center col-sm-10 text-warning\\\" ng-message=\\\"pattern\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n                  This field must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (例如 'my-name',\\n                  or 'abc-123').\\n                </p>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                ng-if=\\\"!$ctrl.state.showCustomValues && !$ctrl.state.loadingValues\\\"\\n                class=\\\"btn btn-xs btn-default vertical-center mr-2 !ml-0\\\"\\n                ng-click=\\\"$ctrl.state.showCustomValues = true;\\\"\\n              >\\n                <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon>\\n                Show custom values\\n              </button>\\n              <span class=\\\"small interactive vertical-center\\\" ng-if=\\\"$ctrl.state.loadingValues\\\">\\n                <pr-icon icon=\\\"'refresh-cw'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n                Loading values.yaml...\\n              </span>\\n              <button ng-if=\\\"$ctrl.state.showCustomValues\\\" class=\\\"btn btn-xs btn-default vertical-center mr-2 !ml-0\\\" ng-click=\\\"$ctrl.state.showCustomValues = false;\\\">\\n                <pr-icon icon=\\\"'minus'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon>\\n                Hide custom values\\n              </button>\\n            </div>\\n          </div>\\n          <!-- values override -->\\n          <div ng-if=\\\"$ctrl.state.showCustomValues\\\">\\n            <!-- web-editor -->\\n            <div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <web-editor-form\\n                    identifier=\\\"helm-app-creation-editor\\\"\\n                    value=\\\"$ctrl.state.values\\\"\\n                    on-change=\\\"($ctrl.editorUpdate)\\\"\\n                    yml=\\\"true\\\"\\n                    placeholder=\\\"# Define or paste the content of your values yaml file here\\\"\\n                  >\\n                    <editor-description class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n                      <span>\\n                        You can get more information about Helm values file format in the\\n                        <a href=\\\"https://helm.sh/docs/chart_template_guide/values_files/\\\" target=\\\"_blank\\\" class=\\\"text-blue-8 hover:text-blue-8 hover:underline\\\"\\n                          >official documentation</a\\n                        >.\\n                      </span>\\n                    </editor-description>\\n                  </web-editor-form>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !web-editor -->\\n          </div>\\n          <!-- !values override -->\\n          <!-- helm actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"!($ctrl.state.appName && $ctrl.state.resourcePool && !$ctrl.state.loadingValues && !$ctrl.state.actionInProgress)\\\"\\n                ng-click=\\\"$ctrl.installHelmchart()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n                data-cy=\\\"helm-install\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Install</span>\\n                <span ng-hide=\\\"!$ctrl.state.actionInProgress\\\">Helm installing in progress</span>\\n              </button>\\n              <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$ctrl.state.chart = null\\\">隐藏</button>\\n            </div>\\n          </div>\\n          <!-- !helm actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n  <!-- helmchart-form -->\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <helm-add-repository repos=\\\"$ctrl.state.repos\\\" endpoint=\\\"$ctrl.endpoint\\\"></helm-add-repository>\\n  </div>\\n</div>\\n\\n<!-- Helm Charts Component -->\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <helm-templates-list\\n      title-text=\\\"Charts\\\"\\n      title-icon=\\\"compass\\\"\\n      charts=\\\"$ctrl.state.charts\\\"\\n      table-key=\\\"$ctrl.state.charts\\\"\\n      select-action=\\\"$ctrl.selectHelmChart\\\"\\n      loading=\\\"$ctrl.state.chartsLoading || $ctrl.state.resourcePoolsLoading\\\"\\n    >\\n    </helm-templates-list>\\n  </div>\\n</div>\\n<!-- !Helm Charts Component -->\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///18236\n");

}),

74226:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"serviceForm\\\">\\n  <div ng-if=\\\"$ctrl.isAdmin()\\\" class=\\\"small\\\" ng-show=\\\"$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled\\\">\\n    <p class=\\\"text-warning pt-2 vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> No Load balancer is available in this cluster, click\\n      <a class=\\\"hyperlink\\\" ui-sref=\\\"kubernetes.cluster.setup\\\">here</a> to configure load balancer.\\n    </p>\\n  </div>\\n  <div ng-if=\\\"!$ctrl.isAdmin()\\\" class=\\\"small\\\" ng-show=\\\"$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled\\\">\\n    <p class=\\\"text-warning pt-2 vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> No Load balancer is available in this cluster, contact your administrator.\\n    </p>\\n  </div>\\n\\n  <div\\n    ng-if=\\\"\\n      ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && $ctrl.loadbalancerEnabled) ||\\n      $ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.CLUSTER_IP ||\\n      $ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT\\n    \\\"\\n  >\\n    <div ng-show=\\\"!$ctrl.multiItemDisable\\\" class=\\\"mt-5 mb-5 vertical-center\\\">\\n      <label class=\\\"control-label text-left !pt-0\\\">Published ports</label>\\n      <span class=\\\"label label-default interactive ml-2.5 vertical-center\\\" ng-click=\\\"$ctrl.addPort()\\\" data-cy=\\\"k8sAppCreate-addNewPortButton\\\">\\n        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> publish a new port\\n      </span>\\n    </div>\\n    <div ng-repeat=\\\"servicePort in $ctrl.service.Ports\\\" class=\\\"mt-5 service-form row\\\">\\n      <div class=\\\"form-group !mx-0 !pl-0 col-sm-3\\\">\\n        <div class=\\\"input-group input-group-sm\\\">\\n          <span class=\\\"input-group-addon required\\\">Container port</span>\\n          <input\\n            type=\\\"number\\\"\\n            class=\\\"form-control\\\"\\n            name=\\\"container_port_{{ $index }}\\\"\\n            ng-model=\\\"servicePort.targetPort\\\"\\n            placeholder=\\\"80\\\"\\n            ng-min=\\\"1\\\"\\n            ng-max=\\\"65535\\\"\\n            min=\\\"1\\\"\\n            max=\\\"65535\\\"\\n            ng-change=\\\"$ctrl.servicePort($index)\\\"\\n            required\\n            ng-disabled=\\\"$ctrl.originalIngresses.length === 0 || ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled)\\\"\\n            ng-change=\\\"$ctrl.onChangeContainerPort()\\\"\\n            data-cy=\\\"k8sAppCreate-containerPort_{{ $index }}\\\"\\n          />\\n        </div>\\n        <span>\\n          <div class=\\\"small mt-1 text-warning\\\" ng-if=\\\"$ctrl.state.duplicates.targetPort.refs[$index] !== undefined\\\">\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> This container port is already used.\\n          </div>\\n          <div class=\\\"small mt-1 text-warning\\\" ng-messages=\\\"serviceForm['container_port_'+$index].$error\\\">\\n            <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Container port number is required.</p>\\n            <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"\\n              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Container port number must be inside the range 1-65535.</p\\n            >\\n            <p class=\\\"vertical-center\\\" ng-message=\\\"max\\\"\\n              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Container port number must be inside the range 1-65535.</p\\n            >\\n          </div>\\n        </span>\\n      </div>\\n\\n      <div class=\\\"form-group !mx-0 !pl-0 col-sm-3\\\">\\n        <div class=\\\"input-group input-group-sm\\\">\\n          <span class=\\\"input-group-addon required\\\">Service port</span>\\n          <input\\n            type=\\\"number\\\"\\n            class=\\\"form-control\\\"\\n            name=\\\"service_port_{{ $index }}\\\"\\n            ng-model=\\\"servicePort.port\\\"\\n            placeholder=\\\"80\\\"\\n            ng-min=\\\"1\\\"\\n            ng-max=\\\"65535\\\"\\n            min=\\\"1\\\"\\n            max=\\\"65535\\\"\\n            required\\n            ng-disabled=\\\"$ctrl.originalIngresses.length === 0 || ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled)\\\"\\n            ng-change=\\\"$ctrl.onChangeServicePort()\\\"\\n            data-cy=\\\"k8sAppCreate-servicePort_{{ $index }}\\\"\\n          />\\n        </div>\\n        <span>\\n          <div class=\\\"small mt-1 text-warning\\\" ng-if=\\\"$ctrl.state.duplicates.servicePort.refs[$index] !== undefined\\\">\\n            <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> This service port is already used.\\n          </div>\\n          <div class=\\\"small mt-1 text-warning\\\">\\n            <div ng-messages=\\\"serviceForm['service_port_'+$index].$error\\\">\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Service port number is required.</p>\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"\\n                ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Service port number must be inside the range 1-65535.</p\\n              >\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"max\\\"\\n                ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Service port number must be inside the range 1-65535.</p\\n              >\\n            </div>\\n          </div>\\n        </span>\\n      </div>\\n\\n      <div class=\\\"form-group !mx-0 !pl-0 col-sm-3\\\" ng-if=\\\"$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT\\\">\\n        <div class=\\\"input-group input-group-sm\\\">\\n          <span class=\\\"input-group-addon required\\\">Nodeport</span>\\n          <input\\n            type=\\\"number\\\"\\n            class=\\\"form-control\\\"\\n            name=\\\"node_port_{{ $index }}\\\"\\n            ng-model=\\\"servicePort.nodePort\\\"\\n            placeholder=\\\"30080\\\"\\n            ng-min=\\\"30000\\\"\\n            ng-max=\\\"32767\\\"\\n            min=\\\"30000\\\"\\n            max=\\\"32767\\\"\\n            required\\n            ng-change=\\\"$ctrl.onChangeNodePort()\\\"\\n            data-cy=\\\"k8sAppCreate-nodeportPort_{{ $index }}\\\"\\n          />\\n        </div>\\n        <div class=\\\"w-full\\\">\\n          <span>\\n            <div class=\\\"small mt-1 text-warning\\\">\\n              <div ng-messages=\\\"serviceForm['node_port_'+$index].$error\\\">\\n                <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Nodeport is required.</p>\\n                <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"\\n                  ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system\\n                  allocated.</p\\n                >\\n                <p class=\\\"vertical-center\\\" ng-message=\\\"max\\\"\\n                  ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system\\n                  allocated.</p\\n                >\\n                <div class=\\\"mt-1 text-warning\\\" ng-if=\\\"$ctrl.state.duplicates.nodePort.refs[$index] !== undefined\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> This node port is already used.\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"form-group !mx-0 !pl-0 col-sm-3\\\" ng-if=\\\"$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER\\\">\\n        <div class=\\\"input-group input-group-sm\\\">\\n          <span class=\\\"input-group-addon\\\">Loadbalancer port</span>\\n          <input\\n            type=\\\"number\\\"\\n            class=\\\"form-control\\\"\\n            name=\\\"loadbalancer_port_{{ $index }}\\\"\\n            ng-model=\\\"servicePort.port\\\"\\n            placeholder=\\\"80\\\"\\n            ng-min=\\\"1\\\"\\n            ng-max=\\\"65535\\\"\\n            min=\\\"1\\\"\\n            max=\\\"65535\\\"\\n            required\\n            ng-disabled=\\\"$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled\\\"\\n            data-cy=\\\"k8sAppCreate-loadbalancerPort_{{ $index }}\\\"\\n          />\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group !mx-0 !pl-0 col-sm-3\\\">\\n        <div class=\\\"input-group input-group-sm\\\">\\n          <div class=\\\"btn-group btn-group-sm\\\">\\n            <label\\n              class=\\\"btn btn-light\\\"\\n              ng-model=\\\"servicePort.protocol\\\"\\n              uib-btn-radio=\\\"'TCP'\\\"\\n              ng-change=\\\"ctrl.onChangePortProtocol($index)\\\"\\n              ng-disabled=\\\"ctrl.isProtocolOptionDisabled($index, 'TCP')\\\"\\n              data-cy=\\\"k8sAppCreate-TCPButton_{{ $index }}\\\"\\n              >TCP</label\\n            >\\n            <label\\n              class=\\\"btn btn-light\\\"\\n              ng-model=\\\"servicePort.protocol\\\"\\n              uib-btn-radio=\\\"'UDP'\\\"\\n              ng-change=\\\"ctrl.onChangePortProtocol($index)\\\"\\n              ng-disabled=\\\"ctrl.isProtocolOptionDisabled($index, 'UDP')\\\"\\n              data-cy=\\\"k8sAppCreate-UDPButton_{{ $index }}\\\"\\n              >UDP</label\\n            >\\n          </div>\\n          <button\\n            ng-disabled=\\\"$ctrl.service.Ports.length === 1\\\"\\n            ng-show=\\\"!$ctrl.multiItemDisable\\\"\\n            class=\\\"btn btn-sm btn-dangerlight btn-only-icon\\\"\\n            type=\\\"button\\\"\\n            ng-click=\\\"$ctrl.removePort($index)\\\"\\n            data-cy=\\\"k8sAppCreate-rmPortButton_{{ $index }}\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/kubernetes/components/kube-services/kube-services-item/kube-services-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///74226\n");

}),

68629:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Publishing the application </div>\\n<div class=\\\"col-sm-12 !p-0\\\">\\n  <div class=\\\"small\\\">\\n    <p class=\\\"text-muted vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      <span>Publish your application by creating a ClusterIP service for it, which you may then expose via <a target=\\\"_blank\\\" ui-sref=\\\"kubernetes.ingresses\\\">an ingress</a>.</span>\\n    </p>\\n  </div>\\n</div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 form-inline\\\">\\n    <div class=\\\"col-sm-6\\\" style=\\\"padding-left: 0px\\\">\\n      <select\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.state.selected\\\"\\n        ng-options=\\\"item.typeValue as item.typeName for item in $ctrl.state.serviceType\\\"\\n        data-cy=\\\"k8sAppCreate-publishingModeDropdown\\\"\\n      ></select>\\n      <button type=\\\"button\\\" class=\\\"btn btn-md btn-default vertical-center !ml-0\\\" ng-click=\\\"$ctrl.addEntry( $ctrl.state.selected )\\\" data-cy=\\\"k8sAppCreate-createServiceButton\\\">\\n        <span\\n          class=\\\"interactive vertical-center\\\"\\n          tooltip-append-to-body=\\\"true\\\"\\n          tooltip-placement=\\\"top\\\"\\n          tooltip-class=\\\"portainer-tooltip\\\"\\n          uib-tooltip=\\\"Different service types expose the deployment in alternate ways.\\n          ClusterIP exposes it within the cluster (for internal access only).\\n          NodePort exposes it (on a high port) across all nodes.\\n          LoadBalancer exposes it via an external load balancer.\\\"\\n        >\\n          <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> Create service\\n        </span>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 20px\\\" ng-repeat=\\\"service in $ctrl.formValues.Services\\\">\\n    <div>\\n      <div class=\\\"text-muted vertical-center\\\">\\n        <pr-icon ng-if=\\\"$ctrl.serviceType(service.Type) === 'ClusterIP'\\\" icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon>\\n        <pr-icon ng-if=\\\"$ctrl.serviceType(service.Type) === 'LoadBalancer'\\\" icon=\\\"'svg-dataflow'\\\"></pr-icon>\\n        <pr-icon ng-if=\\\"$ctrl.serviceType(service.Type) === 'NodePort'\\\" icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon>\\n        {{ $ctrl.serviceType(service.Type) }}\\n      </div>\\n      <kube-services-item-view\\n        node-port-services=\\\"$ctrl.nodePortServices\\\"\\n        form-services=\\\"$ctrl.formValues.Services\\\"\\n        service=\\\"$ctrl.formValues.Services[$index]\\\"\\n        is-edit=\\\"$ctrl.isEdit\\\"\\n        loadbalancer-enabled=\\\"$ctrl.loadbalancerEnabled\\\"\\n      ></kube-services-item-view>\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-sm btn-dangerlight space-right vertical-center\\\"\\n        style=\\\"margin-left: 0; margin-top: 10px\\\"\\n        ng-click=\\\"$ctrl.deleteService( $index )\\\"\\n        data-cy=\\\"k8sConfigCreate-removeButton\\\"\\n      >\\n        <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> Remove\\n      </button>\\n    </div>\\n\\n    <div ng-if=\\\"$ctrl.formValues.Services[$index].Ingress && $ctrl.formValues.OriginalIngresses.length === 0\\\">\\n      <div class=\\\"text-muted\\\">\\n        <pr-icon icon=\\\"'svg-route'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n        Ingress\\n      </div>\\n      <div ng-if=\\\"$ctrl.isAdmin()\\\" class=\\\"small\\\">\\n        <p class=\\\"text-warning pt-2 vertical-center\\\">\\n          <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Ingress is not configured in this namespace, select another namespace or click\\n          <a ui-sref=\\\"kubernetes.cluster.setup\\\">here</a> to configure ingress.\\n        </p>\\n      </div>\\n      <div ng-if=\\\"!$ctrl.isAdmin()\\\" class=\\\"small\\\">\\n        <p class=\\\"text-warning pt-2 vertical-center\\\">\\n          <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Ingress is not configured in this namespace, select another namespace or contact your\\n          administrator.\\n        </p>\\n      </div>\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-sm btn-dangerlight space-right vertical-center\\\"\\n        style=\\\"margin-left: 0; margin-top: 10px\\\"\\n        ng-click=\\\"$ctrl.deleteService( $index )\\\"\\n        data-cy=\\\"k8sConfigCreate-removeButton\\\"\\n      >\\n        <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> Remove\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/kube-services/kube-services.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///68629\n");

}),

80331:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"kubernetesConfigurationDataCreationForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> 数据 </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.isCreation\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\" ng-click=\\\"$ctrl.showAdvancedMode()\\\">\\n        <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon> 高级模式\\n      </button>\\n      <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0\\\" ng-if=\\\"!$ctrl.formValues.IsSimple\\\" ng-click=\\\"$ctrl.showSimpleMode()\\\">\\n        <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon> 简单模式\\n      </button>\\n    </div>\\n    <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      切换到高级模式来复制和粘贴多个键/值\\n    </div>\\n    <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"!$ctrl.formValues.IsSimple\\\">\\n      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      每行生成一个配置项，使用YAML格式\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n    <div class=\\\"col-sm-12 vertical-center\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" style=\\\"margin-left: 0\\\" ng-click=\\\"$ctrl.addEntry()\\\" data-cy=\\\"k8sConfigCreate-createEntryButton\\\">\\n        <pr-icon class=\\\"vertical-center\\\" icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 创建条目\\n      </button>\\n      <button\\n        ng-if=\\\"\\n          !(($ctrl.isDockerConfig || $ctrl.formValues.Type === $ctrl.KubernetesSecretTypeOptions.TLS.value) && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET)\\n        \\\"\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-sm btn-default ml-0\\\"\\n        ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n        data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n      >\\n        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon> 从文件中创建 键/值\\n      </button>\\n      <button\\n        ng-if=\\\"$ctrl.isDockerConfig && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET\\\"\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-sm btn-default ml-0\\\"\\n        ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n        ngf-accept=\\\"'.json'\\\"\\n        data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n      >\\n        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon> 上传docker配置文件\\n      </button>\\n      <button\\n        ng-if=\\\"$ctrl.formValues.Type === $ctrl.KubernetesSecretTypeOptions.TLS.value && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET\\\"\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-sm btn-default ml-0\\\"\\n        ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n        data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n      >\\n        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon> 上传TLS密钥/证书文件\\n      </button>\\n      <portainer-tooltip message=\\\"'最大上传文件大小为1MB'\\\"></portainer-tooltip>\\n    </div>\\n  </div>\\n\\n  <div ng-repeat=\\\"(index, entry) in $ctrl.formValues.Data\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"configuration_data_key_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\"\\n        >Key\\n        <portainer-tooltip message=\\\"'密钥必须由字母数字字符、\\\\'-\\\\'、\\\\'_\\\\'或\\\\'.\\\\'组成，长度最多为253个字符。'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-lg-9\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          maxlength=\\\"253\\\"\\n          id=\\\"configuration_data_key_{{ index }}\\\"\\n          name=\\\"configuration_data_key_{{ index }}\\\"\\n          ng-model=\\\"$ctrl.formValues.Data[index].Key\\\"\\n          ng-disabled=\\\"entry.Used || $ctrl.isRequiredKey(entry.Key)\\\"\\n          required\\n          ng-change=\\\"$ctrl.onChangeKey(entry)\\\"\\n        />\\n        <div\\n          class=\\\"small text-warning mt-1\\\"\\n          ng-show=\\\"\\n            kubernetesConfigurationDataCreationForm['configuration_data_key_' + index].$invalid ||\\n            (!entry.Used && $ctrl.state.duplicateKeys[index] !== undefined) ||\\n            $ctrl.state.invalidKeys[index]\\n          \\\"\\n        >\\n          <ng-messages for=\\\"kubernetesConfigurationDataCreationForm['configuration_data_key_' + index].$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 本栏为必填项。 </p>\\n          </ng-messages>\\n          <div>\\n            <p ng-if=\\\"$ctrl.state.duplicateKeys[index] !== undefined\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>这个键已经被定义了。\\n            </p>\\n          </div>\\n          <p ng-if=\\\"$ctrl.state.invalidKeys[index]\\\" class=\\\"vertical-center\\\">\\n            <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> 该值是无效的。一个有效的密钥必须由字母数字组成\\n            字符、'-'、'_'或'.'\\n          </p>\\n        </div>\\n      </div>\\n      <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple && !entry.IsBinary\\\">\\n      <label for=\\\"configuration_data_value_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Value</label>\\n      <div class=\\\"col-sm-8 col-lg-9\\\">\\n        <textarea\\n          class=\\\"form-control\\\"\\n          rows=\\\"5\\\"\\n          id=\\\"configuration_data_value_{{ index }}\\\"\\n          name=\\\"configuration_data_value_{{ index }}\\\"\\n          ng-model=\\\"$ctrl.formValues.Data[index].Value\\\"\\n          ng-trim=\\\"false\\\"\\n          required\\n        ></textarea>\\n        <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\" ng-show=\\\"kubernetesConfigurationDataCreationForm['configuration_data_value_' + index].$invalid\\\">\\n          <ng-messages for=\\\"kubernetesConfigurationDataCreationForm['configuration_data_value_' + index].$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"\\n              ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 本栏为必填项。</p\\n            >\\n          </ng-messages>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple && entry.IsBinary\\\">\\n      <label for=\\\"configuration_data_value_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Value</label>\\n      <div class=\\\"col-sm-8 control-label small text-muted text-left\\\"\\n        >二进制数据 <portainer-tooltip message=\\\"'此键保存二进制数据，无法显示。'\\\"></portainer-tooltip\\n      ></div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n      <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n      <div class=\\\"col-sm-8\\\">\\n        <button\\n          ng-if=\\\"!$ctrl.isRequiredKey(entry.Key) || $ctrl.state.duplicateKeys[index] !== undefined\\\"\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-dangerlight !ml-0\\\"\\n          style=\\\"margin-left: 0\\\"\\n          ng-disabled=\\\"entry.Used || $ctrl.isEntryRequired()\\\"\\n          ng-click=\\\"$ctrl.removeEntry(index, entry)\\\"\\n          data-cy=\\\"k8sConfigDetail-removeEntryButton{{ index }}\\\"\\n        >\\n          <pr-icon class=\\\"vertical-center\\\" icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon> 删除条目\\n        </button>\\n        <span class=\\\"small text-muted\\\" ng-if=\\\"entry.Used\\\">\\n          <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n          该键目前被一个或多个应用程序使用\\n        </span>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group !px-[15px]\\\" ng-if=\\\"!$ctrl.formValues.IsSimple\\\">\\n    <input type=\\\"text\\\" ng-model=\\\"$ctrl.formValues.DataYaml\\\" required style=\\\"display: none\\\" />\\n\\n    <web-editor-form\\n      identifier=\\\"kubernetes-configuration-editor\\\"\\n      value=\\\"$ctrl.formValues.DataYaml\\\"\\n      on-change=\\\"($ctrl.editorUpdate)\\\"\\n      yml=\\\"true\\\"\\n      placeholder=\\\"# 定义或粘贴键值，每行一组\\\"\\n    >\\n    </web-editor-form>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///80331\n");

}),

37751:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 资源预留 </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      {{ $ctrl.description }}\\n    </span>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.memoryLimit !== 0\\\">\\n    <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 内存保留 </label>\\n    <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\" data-cy=\\\"k8sNamespaceDetail-memoryUsage\\\">\\n      <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.memoryReservationPercent\\\" type=\\\"{{ $ctrl.memoryReservationPercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n      <span> {{ $ctrl.memoryReservation }} / {{ $ctrl.memoryLimit }} MB - {{ $ctrl.memoryReservationPercent }}% </span>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.displayUsage && $ctrl.memoryLimit !== 0\\\">\\n    <label for=\\\"memory-usage\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 内存使用 </label>\\n    <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n      <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.memoryUsagePercent\\\" type=\\\"{{ $ctrl.memoryUsagePercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n      <span> {{ $ctrl.memoryUsage }} / {{ $ctrl.memoryLimit }} MB - {{ $ctrl.memoryUsagePercent }}% </span>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.cpuLimit !== 0\\\">\\n    <label for=\\\"cpu-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU预留 </label>\\n    <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n      <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.cpuReservationPercent\\\" type=\\\"{{ $ctrl.cpuReservationPercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n      <span> {{ $ctrl.cpuReservation | kubernetesApplicationCPUValue }} / {{ $ctrl.cpuLimit }} - {{ $ctrl.cpuReservationPercent }}% </span>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.displayUsage && $ctrl.cpuLimit !== 0\\\">\\n    <label for=\\\"cpu-usage\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU 使用 </label>\\n    <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n      <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.cpuUsagePercent\\\" type=\\\"{{ $ctrl.cpuUsagePercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n      <span> {{ $ctrl.cpuUsage | kubernetesApplicationCPUValue }} / {{ $ctrl.cpuLimit }} - {{ $ctrl.cpuUsagePercent }}% </span>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/resource-reservation/resourceReservation.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///37751\n");

}),

41776:

(function(module) {

eval("var _module_exports = \"<div class=\\\"loading-view-area\\\" ng-if=\\\"!$ctrl.viewReady\\\">\\n  <div class=\\\"sk-fold sk-center\\\">\\n    <div class=\\\"sk-fold-cube\\\"></div>\\n    <div class=\\\"sk-fold-cube\\\"></div>\\n    <div class=\\\"sk-fold-cube\\\"></div>\\n    <div class=\\\"sk-fold-cube\\\"></div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/view-loading/viewLoading.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///41776\n");

}),

96354:

(function(module) {

eval("var _module_exports = \"<div>\\n  <web-editor-form\\n    identifier=\\\"application-details-yaml\\\"\\n    value=\\\"$ctrl.data\\\"\\n    yml=\\\"true\\\"\\n    placeholder=\\\"# Define or paste the content of your manifest here\\\"\\n    read-only=\\\"true\\\"\\n    hide-title=\\\"true\\\"\\n  >\\n  </web-editor-form>\\n  <div class=\\\"py-5\\\">\\n    <span class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"$ctrl.copyYAML()\\\">\\n      <pr-icon class=\\\"vertical-center\\\" icon=\\\"'copy'\\\" feather=\\\"true\\\"></pr-icon>\\n      Copy to clipboard\\n    </span>\\n    <span class=\\\"btn btn-light btn-sm space-left !ml-0\\\" ng-click=\\\"$ctrl.toggleYAMLInspectorExpansion()\\\">\\n      <pr-icon class=\\\"vertical-center\\\" icon=\\\"'minus'\\\" size=\\\"'sm'\\\" ng-if=\\\"$ctrl.expanded\\\" feather=\\\"true\\\"></pr-icon>\\n      <pr-icon class=\\\"vertical-center\\\" icon=\\\"'plus'\\\" size=\\\"'sm'\\\" ng-if=\\\"!$ctrl.expanded\\\" feather=\\\"true\\\"></pr-icon>\\n      {{ $ctrl.expanded ? 'Collapse' : 'Expand' }}\\n    </span>\\n    <span id=\\\"copyNotificationYAML\\\" style=\\\"display: none\\\" class=\\\"small vertical-center ml-1\\\">\\n      <pr-icon class=\\\"vertical-center\\\" icon=\\\"'check'\\\" size=\\\"'md'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon> copied\\n    </span>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/yaml-inspector/yamlInspector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///96354\n");

}),

21843:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建自定义模板'\\\" breadcrumbs=\\\"[{label:'Custom Templates', link:'kubernetes.templates.custom'}, '创建自定义模板']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n          <custom-template-common-fields form-values=\\\"$ctrl.formValues\\\"></custom-template-common-fields>\\n\\n          <!-- build-method -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n          <box-selector radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n          <div class=\\\"mt-4\\\">\\n            <web-editor-form\\n              ng-if=\\\"$ctrl.state.method === 'editor'\\\"\\n              identifier=\\\"template-creation-editor\\\"\\n              value=\\\"$ctrl.formValues.FileContent\\\"\\n              on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n              ng-required=\\\"true\\\"\\n              yml=\\\"true\\\"\\n              placeholder=\\\"# Define or paste the content of your manifest file here\\\"\\n            >\\n              <editor-description>\\n                <p>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</p>\\n                <p>\\n                  You can get more information about Kubernetes file format in the\\n                  <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n                </p>\\n              </editor-description>\\n            </web-editor-form>\\n          </div>\\n\\n          <file-upload-form ng-if=\\\"$ctrl.state.method === 'upload'\\\" file=\\\"$ctrl.formValues.File\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n            <file-upload-description> You can upload a Manifest file from your computer. </file-upload-description>\\n          </file-upload-form>\\n\\n          <custom-templates-variables-definition-field\\n            ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n            value=\\\"$ctrl.formValues.Variables\\\"\\n            on-change=\\\"($ctrl.onVariablesChange)\\\"\\n            is-variables-names-from-parent=\\\"$ctrl.state.method === 'editor'\\\"\\n          ></custom-templates-variables-definition-field>\\n\\n          <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"!$ctrl.state.isTemplateValid ||$ctrl.state.actionInProgress || $ctrl.form.$invalid || ($ctrl.state.method === 'editor' && !$ctrl.formValues.FileContent)\\\"\\n                ng-click=\\\"$ctrl.createCustomTemplate()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">创建自定义模板</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">正在创建中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n                {{ $ctrl.state.formValidationError }}\\n              </span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///21843\n");

}),

66295:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Custom Templates'\\\" breadcrumbs=\\\"['Custom Templates']\\\" reload=\\\"true\\\"></page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <custom-templates-list\\n      ng-if=\\\"$ctrl.templates\\\"\\n      title-text=\\\"Templates\\\"\\n      title-icon=\\\"edit\\\"\\n      templates=\\\"$ctrl.templates\\\"\\n      table-key=\\\"customTemplates\\\"\\n      is-edit-allowed=\\\"$ctrl.isEditAllowed\\\"\\n      on-select-click=\\\"($ctrl.selectTemplate)\\\"\\n      on-delete-click=\\\"($ctrl.confirmDelete)\\\"\\n      create-path=\\\"kubernetes.templates.custom.new\\\"\\n      edit-path=\\\"kubernetes.templates.custom.edit\\\"\\n    ></custom-templates-list>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///66295\n");

}),

13968:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Edit Custom Template'\\\" breadcrumbs=\\\"[{label:'Custom templates', link:'kubernetes.templates.custom'}, $ctrl.formValues.Title]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.formValues\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n          <custom-template-common-fields form-values=\\\"$ctrl.formValues\\\"></custom-template-common-fields>\\n\\n          <web-editor-form\\n            identifier=\\\"template-editor\\\"\\n            value=\\\"$ctrl.formValues.FileContent\\\"\\n            on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n            ng-required=\\\"true\\\"\\n            yml=\\\"true\\\"\\n            placeholder=\\\"# Define or paste the content of your manifest file here\\\"\\n          >\\n            <editor-description>\\n              <p>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</p>\\n              <p>\\n                You can get more information about Kubernetes file format in the\\n                <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n              </p>\\n            </editor-description>\\n          </web-editor-form>\\n\\n          <custom-templates-variables-definition-field\\n            ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n            value=\\\"$ctrl.formValues.Variables\\\"\\n            on-change=\\\"($ctrl.onVariablesChange)\\\"\\n            is-variables-names-from-parent=\\\"true\\\"\\n          ></custom-templates-variables-definition-field>\\n\\n          <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\" resource-control=\\\"$ctrl.formValues.ResourceControl\\\"></por-access-control-form>\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"$ctrl.actionInProgress || $ctrl.form.$invalid || !$ctrl.formValues.Title || !$ctrl.formValues.FileContent\\\"\\n                ng-click=\\\"$ctrl.submitAction()\\\"\\n                button-spinner=\\\"$ctrl.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.actionInProgress\\\">Update the template</span>\\n                <span ng-show=\\\"$ctrl.actionInProgress\\\">正在更新中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n                {{ $ctrl.state.formValidationError }}\\n              </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///13968\n");

}),

2780:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Registry access'\\\" breadcrumbs=\\\"[{label:'Registries', link:'kubernetes.registries'}, $ctrl.registry.Name, 'Access management']\\\"> </page-header>\\n\\n<registry-details registry=\\\"$ctrl.registry\\\" ng-if=\\\"$ctrl.registry\\\"></registry-details>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"svg-userlock\\\" title-text=\\\"创建访问权限\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"form-group\\\">\\n            <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"padding-top: 0\\\"> Select namespaces </label>\\n            <div class=\\\"col-sm-9 col-lg-4\\\" style=\\\"margin-bottom: 15px\\\">\\n              <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.resourcePools.length\\\"> No namespaces available. </span>\\n\\n              <namespaces-selector\\n                ng-if=\\\"$ctrl.resourcePools.length\\\"\\n                value=\\\"$ctrl.selectedResourcePools\\\"\\n                namespaces=\\\"$ctrl.resourcePools\\\"\\n                placeholder=\\\"'Select one or more namespaces'\\\"\\n                on-change=\\\"($ctrl.onChangeResourcePools)\\\"\\n              ></namespaces-selector>\\n            </div>\\n            <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n              Adding this registry will expose the registry credentials to all users of this namespace.\\n            </div>\\n          </div>\\n\\n          <!-- actions -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"submit\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"$ctrl.selectedResourcePools.length === 0 || $ctrl.state.actionInProgress\\\"\\n                ng-click=\\\"$ctrl.submit()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> 创建访问权限</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Creating access...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <strings-datatable\\n      title-text=\\\"Access\\\"\\n      title-icon=\\\"svg-userlock\\\"\\n      table-key=\\\"access_registry_resourcepools\\\"\\n      dataset=\\\"$ctrl.savedResourcePools\\\"\\n      empty-dataset-message=\\\"No namespace has been authorized yet.\\\"\\n      on-remove=\\\"($ctrl.handleRemove)\\\"\\n      column-header=\\\"Namespace\\\"\\n    >\\n    </strings-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/registries/kube-registry-access-view/kube-registry-access-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2780\n");

}),

79573:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Application list'\\\" breadcrumbs=\\\"['Applications']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\" data-cy=\\\"k8sApp-appList\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'box'\\\" feather=\\\"true\\\"></pr-icon> 应用 </uib-tab-heading>\\n              <kubernetes-applications-datatable\\n                dataset=\\\"ctrl.state.applications\\\"\\n                table-key=\\\"kubernetes.applications\\\"\\n                settings-key=\\\"kubernetes.applications\\\"\\n                order-by=\\\"Name\\\"\\n                remove-action=\\\"ctrl.removeAction\\\"\\n                refresh-callback=\\\"ctrl.getApplications\\\"\\n                on-publishing-mode-click=\\\"(ctrl.onPublishingModeClick)\\\"\\n                is-primary=\\\"true\\\"\\n              >\\n              </kubernetes-applications-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'svg-dataflow'\\\"></pr-icon> 端口映射 </uib-tab-heading>\\n              <kubernetes-applications-ports-datatable dataset=\\\"ctrl.state.ports\\\" table-key=\\\"kubernetes.applications.ports\\\" order-by=\\\"Name\\\" refresh-callback=\\\"ctrl.getApplications\\\">\\n              </kubernetes-applications-ports-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"2\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(2)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon> 堆栈 </uib-tab-heading>\\n              <kubernetes-applications-stacks-datatable\\n                dataset=\\\"ctrl.state.stacks\\\"\\n                table-key=\\\"kubernetes.applications.stacks\\\"\\n                order-by=\\\"Name\\\"\\n                refresh-callback=\\\"ctrl.getApplications\\\"\\n                remove-action=\\\"ctrl.removeStacksAction\\\"\\n              >\\n              </kubernetes-applications-stacks-datatable>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/applications.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///79573\n");

}),

65998:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'应用控制台'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    { \\n      label:ctrl.application.ResourcePool,\\n      link: 'kubernetes.resourcePools.resourcePool', \\n      linkParams:{ id: ctrl.application.ResourcePool }\\n    },\\n    { label:'Applications', link:'kubernetes.applications' },\\n    { \\n      label:ctrl.application.Name,\\n      link: 'kubernetes.applications.application', \\n      linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n    },\\n     'Pods',\\n     ctrl.podName,\\n     'Containers',\\n     ctrl.containerName,\\n     'Console'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 控制台 </div>\\n            <!-- Command -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"console_command\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">命令</label>\\n              <div class=\\\"col-sm-8 input-group\\\">\\n                <span class=\\\"input-group-addon\\\">\\n                  <pr-icon icon=\\\"'terminal'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n                </span>\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  placeholder=\\\"/bin/bash\\\"\\n                  ng-model=\\\"ctrl.state.command\\\"\\n                  name=\\\"console_command\\\"\\n                  uib-typeahead=\\\"command for command in ctrl.state.availableCommands | filter:$viewValue | limitTo:5\\\"\\n                  typeahead-min-length=\\\"0\\\"\\n                  auto-focus\\n                />\\n              </div>\\n            </div>\\n            <!-- !command -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  style=\\\"margin: 0\\\"\\n                  ng-if=\\\"!ctrl.state.connected\\\"\\n                  ng-disabled=\\\"!ctrl.state.command || ctrl.state.connected\\\"\\n                  ng-click=\\\"ctrl.connectConsole()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\">连接</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">连接中...</span>\\n                </button>\\n                <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" style=\\\"margin: 0\\\" ng-if=\\\"ctrl.state.connected\\\" ng-click=\\\"ctrl.disconnect()\\\"> Disconnect </button>\\n              </div>\\n            </div>\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div id=\\\"terminal-container\\\" class=\\\"terminal-container\\\"></div>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/console/console.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///65998\n");

}),

1866:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"!ctrl.state.isEdit\\\"\\n  title=\\\"'Create application'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Applications', link:'kubernetes.applications' },\\n     'Create an application'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<page-header\\n  ng-if=\\\"ctrl.state.isEdit\\\"\\n  title=\\\"'Edit application'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.application.ResourcePool,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.application.ResourcePool }\\n    },\\n    { label:'Applications', link:'kubernetes.applications' },\\n    {\\n      label:ctrl.application.Name,\\n      link: 'kubernetes.applications.application',\\n      linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n    },\\n     'Edit',\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row kubernetes-create\\\">\\n    <div class=\\\"col-xs-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" name=\\\"kubernetesApplicationCreationForm\\\" autocomplete=\\\"off\\\">\\n            <div ng-if=\\\"!ctrl.isExternalApplication()\\\">\\n              <git-form-info-panel\\n                ng-if=\\\"ctrl.state.appType == ctrl.KubernetesDeploymentTypes.GIT\\\"\\n                class-name=\\\"text-muted\\\"\\n                url=\\\"ctrl.stack.GitConfig.URL\\\"\\n                config-file-path=\\\"ctrl.stack.GitConfig.ConfigFilePath\\\"\\n                additional-files=\\\"ctrl.stack.AdditionalFiles\\\"\\n                type=\\\"application\\\"\\n              ></git-form-info-panel>\\n              <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"> Namespace </div>\\n              <!-- #region NAMESPACE -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n                <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Namespace</label>\\n                <div class=\\\"col-sm-8\\\">\\n                  <select\\n                    class=\\\"form-control\\\"\\n                    id=\\\"resource-pool-selector\\\"\\n                    ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n                    ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n                    ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n                    ng-disabled=\\\"ctrl.state.isEdit\\\"\\n                    data-cy=\\\"k8sAppCreate-nsSelect\\\"\\n                  ></select>\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n                <div class=\\\"col-sm-12 small text-danger\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                  This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of the\\n                  namespace.\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n                <div class=\\\"col-sm-12 small text-warning\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                  You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n                </div>\\n              </div>\\n              <!-- #endregion -->\\n\\n              <!-- #region Git repository -->\\n              <kubernetes-redeploy-app-git-form\\n                ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.GIT\\\"\\n                stack=\\\"ctrl.stack\\\"\\n                namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n              ></kubernetes-redeploy-app-git-form>\\n              <!-- #endregion -->\\n\\n              <!-- #region web editor -->\\n              <web-editor-form\\n                ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.CONTENT\\\"\\n                value=\\\"ctrl.stackFileContent\\\"\\n                yml=\\\"true\\\"\\n                identifier=\\\"kubernetes-deploy-editor\\\"\\n                placeholder=\\\"# Define or paste the content of your manifest file here\\\"\\n                on-change=\\\"(ctrl.onChangeFileContent)\\\"\\n              >\\n                <editor-description>\\n                  <span class=\\\"text-muted small\\\" ng-show=\\\"ctrl.stack.IsComposeFormat\\\">\\n                    <p class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      <span>\\n                        Portainer uses <a href=\\\"https://kompose.io/\\\" target=\\\"_blank\\\">Kompose</a> to convert your Compose manifest to a Kubernetes compliant manifest. Be wary that\\n                        not all the Compose format options are supported by Kompose at the moment.\\n                      </span>\\n                    </p>\\n                    <p>\\n                      You can get more information about Compose file format in the\\n                      <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">official documentation</a>.\\n                    </p>\\n                  </span>\\n                  <span class=\\\"text-muted small\\\" ng-show=\\\"!ctrl.stack.IsComposeFormat\\\">\\n                    <p class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      This feature allows you to deploy any kind of Kubernetes resource in this environment (Deployment, Secret, ConfigMap...).\\n                    </p>\\n                    <p>\\n                      You can get more information about Kubernetes file format in the\\n                      <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n                    </p>\\n                  </span>\\n                </editor-description>\\n              </web-editor-form>\\n              <!-- #endregion -->\\n              <div ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> Application </div>\\n                <!-- #region NAME FIELD -->\\n                <div class=\\\"form-group\\\">\\n                  <label for=\\\"application_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n                  <div class=\\\"col-sm-8\\\">\\n                    <input\\n                      type=\\\"text\\\"\\n                      class=\\\"form-control\\\"\\n                      name=\\\"application_name\\\"\\n                      ng-model=\\\"ctrl.formValues.Name\\\"\\n                      ng-change=\\\"ctrl.onChangeName()\\\"\\n                      placeholder=\\\"my-app\\\"\\n                      ng-pattern=\\\"/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/\\\"\\n                      auto-focus\\n                      required\\n                      ng-disabled=\\\"ctrl.state.isEdit\\\"\\n                      data-cy=\\\"k8sAppCreate-applicationName\\\"\\n                    />\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-show=\\\"kubernetesApplicationCreationForm.application_name.$invalid || ctrl.state.alreadyExists\\\">\\n                  <div class=\\\"small\\\">\\n                    <div class=\\\"col-sm-3 col-lg-2\\\">&nbsp;</div>\\n                    <div class=\\\"col-sm-8\\\" ng-messages=\\\"kubernetesApplicationCreationForm.application_name.$error\\\">\\n                      <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"required\\\"\\n                        ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p\\n                      >\\n                      <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"pattern\\\">\\n                        <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                        This field must consist of lower case alphanumeric characters or '-', contain at most 63 characters, start with an alphabetic character, and end with an\\n                        alphanumeric character (例如 'my-name', or 'abc-123').\\n                      </p>\\n                    </div>\\n                    <div class=\\\"col-sm-8\\\" ng-if=\\\"ctrl.state.alreadyExists\\\">\\n                      <p class=\\\"text-warning vertical-center\\\">\\n                        <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                        An application with the same name already exists inside the selected namespace.\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- #endregion -->\\n\\n                <!-- #region IMAGE FIELD -->\\n                <div class=\\\"form-group mb-0\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <por-image-registry\\n                      model=\\\"ctrl.formValues.ImageModel\\\"\\n                      ng-if=\\\"ctrl.formValues.ResourcePool\\\"\\n                      auto-complete=\\\"false\\\"\\n                      label-class=\\\"col-sm-3 col-lg-2\\\"\\n                      input-class=\\\"col-sm-8\\\"\\n                      namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n                      endpoint=\\\"ctrl.endpoint\\\"\\n                      is-admin=\\\"ctrl.isAdmin\\\"\\n                      check-rate-limits=\\\"true\\\"\\n                      set-validity=\\\"ctrl.setPullImageValidity\\\"\\n                    ></por-image-registry>\\n                  </div>\\n                </div>\\n                <!-- #end region IMAGE FIELD -->\\n\\n                <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> 堆栈 </div>\\n                  <!-- #region STACK -->\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Portainer can automatically bundle multiple applications inside a stack. Enter a name of a new stack or select an existing stack in the list. Leave empty to\\n                      use the application name.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\">\\n                    <label for=\\\"stack_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">堆栈</label>\\n                    <div class=\\\"col-sm-8\\\">\\n                      <input\\n                        type=\\\"text\\\"\\n                        class=\\\"form-control\\\"\\n                        placeholder=\\\"myStack\\\"\\n                        ng-model=\\\"ctrl.formValues.StackName\\\"\\n                        name=\\\"stack_name\\\"\\n                        uib-typeahead=\\\"stack for stack in ctrl.stacks | filter:$viewValue | limitTo:7\\\"\\n                        typeahead-min-length=\\\"0\\\"\\n                        data-cy=\\\"k8sAppCreate-stackName\\\"\\n                      />\\n                    </div>\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Environment </div>\\n                  <!-- #region ENVIRONMENT VARIABLES -->\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12 vertical-center pt-2.5\\\">\\n                      <label class=\\\"control-label text-left !pt-0\\\">Environment variables</label>\\n                      <span\\n                        ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n                        class=\\\"label label-default interactive vertical-center\\\"\\n                        style=\\\"margin-left: 10px\\\"\\n                        ng-click=\\\"ctrl.addEnvironmentVariable()\\\"\\n                        data-cy=\\\"k8sAppCreate-addEnvVarButton\\\"\\n                      >\\n                        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> add environment variable\\n                      </span>\\n                    </div>\\n\\n                    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                      <div ng-repeat=\\\"envVar in ctrl.formValues.EnvironmentVariables | orderBy: 'NameIndex'\\\" style=\\\"margin-top: 2px\\\">\\n                        <div style=\\\"margin-top: 2px\\\">\\n                          <div class=\\\"col-sm-4 input-group input-group-sm\\\">\\n                            <div class=\\\"input-group col-sm-12 input-group-sm\\\" ng-class=\\\"{ striked: envVar.NeedsDeletion }\\\">\\n                              <span class=\\\"input-group-addon required\\\">名称</span>\\n                              <input\\n                                type=\\\"text\\\"\\n                                name=\\\"environment_variable_name_{{ $index }}\\\"\\n                                class=\\\"form-control\\\"\\n                                ng-model=\\\"envVar.Name\\\"\\n                                ng-change=\\\"ctrl.onChangeEnvironmentName()\\\"\\n                                ng-pattern=\\\"/^[-._a-zA-Z][-._a-zA-Z0-9]*$/\\\"\\n                                placeholder=\\\"foo\\\"\\n                                ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n                                data-cy=\\\"k8sAppCreate-envVarName_{{ $index }}\\\"\\n                                required\\n                              />\\n                            </div>\\n                          </div>\\n\\n                          <div class=\\\"col-sm-4 input-group input-group-sm\\\" ng-class=\\\"{ striked: envVar.NeedsDeletion }\\\">\\n                            <span class=\\\"input-group-addon\\\">value</span>\\n                            <input\\n                              type=\\\"text\\\"\\n                              name=\\\"environment_variable_value_{{ $index }}\\\"\\n                              class=\\\"form-control\\\"\\n                              ng-model=\\\"envVar.Value\\\"\\n                              placeholder=\\\"bar\\\"\\n                              ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n                              data-cy=\\\"k8sAppCreate-envVarValue_{{ $index }}\\\"\\n                            />\\n                          </div>\\n\\n                          <div class=\\\"col-sm-2 input-group input-group-sm\\\" ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\">\\n                            <button\\n                              ng-if=\\\"!envVar.NeedsDeletion\\\"\\n                              class=\\\"btn btn-md btn-dangerlight btn-only-icon !ml-0\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.removeEnvironmentVariable(envVar)\\\"\\n                            >\\n                              <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n                            </button>\\n                            <button\\n                              ng-if=\\\"envVar.NeedsDeletion\\\"\\n                              class=\\\"btn btn-sm btn-light btn-only-icon\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.restoreEnvironmentVariable(envVar)\\\"\\n                              data-cy=\\\"k8sAppCreate-removeEnvVarButton_{{ $index }}\\\"\\n                            >\\n                              <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n                            </button>\\n                          </div>\\n                        </div>\\n                        <div\\n                          ng-show=\\\"\\n                            kubernetesApplicationCreationForm['environment_variable_name_' + $index].$invalid ||\\n                            ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\n                          \\\"\\n                        >\\n                          <div class=\\\"col-sm-8 input-group input-group-sm\\\">\\n                            <div\\n                              class=\\\"small\\\"\\n                              style=\\\"margin-top: 5px\\\"\\n                              ng-show=\\\"\\n                                kubernetesApplicationCreationForm['environment_variable_name_' + $index].$invalid ||\\n                                ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\n                              \\\"\\n                            >\\n                              <ng-messages for=\\\"kubernetesApplicationCreationForm['environment_variable_name_' + $index].$error\\\">\\n                                <p ng-message=\\\"required\\\" class=\\\"text-warning vertical-center\\\"\\n                                  ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\" class-=\\\"vertical-center\\\"></pr-icon> 环境变量名称是必需的。</p\\n                                >\\n                                <p ng-message=\\\"pattern\\\" class=\\\"text-warning vertical-center\\\"\\n                                  ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 这个字段必须由英文字母、数字、 '_', '-',\\n                                  或 '.', 并且不能以数字开头 (例如 'my.env-name', 或 'MY_ENV.NAME', 或 'MyEnvName1'.</p\\n                                >\\n                              </ng-messages>\\n                              <p class=\\\"text-warning vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\\"\\n                                ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 这个环境变量已经被定义了。</p\\n                              >\\n                            </div>\\n                          </div>\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> 配置 </div>\\n                  <!-- #region CONFIGURATIONS -->\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12 vertical-center pt-2.5\\\">\\n                      <label class=\\\"control-label text-left !pt-0\\\">配置</label>\\n                      <span\\n                        class=\\\"label label-default interactive vertical-center\\\"\\n                        style=\\\"margin-left: 10px\\\"\\n                        ng-click=\\\"ctrl.addConfiguration()\\\"\\n                        ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n                        data-cy=\\\"k8sAppCreate-addConfigButton\\\"\\n                      >\\n                        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> 添加配置\\n                      </span>\\n                    </div>\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\" style=\\\"margin-top: 15px\\\" ng-if=\\\"ctrl.formValues.Configurations.length\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Portainer会自动将配置的所有键作为环境变量公开。这种行为可以通过覆盖按钮覆盖到每个\\n                      键都可以通过覆盖按钮覆盖到文件系统挂载。\\n                    </div>\\n                  </div>\\n\\n                  <!-- config-element -->\\n                  <div class=\\\"form-group\\\" ng-repeat=\\\"(index, config) in ctrl.formValues.Configurations\\\">\\n                    <label for=\\\"stack_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Configuration</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                      <select\\n                        class=\\\"form-control\\\"\\n                        ng-model=\\\"config.SelectedConfiguration\\\"\\n                        ng-options=\\\"c as c.Name for c in ctrl.configurations track by c.Name\\\"\\n                        ng-change=\\\"ctrl.resetConfiguration(index)\\\"\\n                        ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n                        data-cy=\\\"k8sAppCreate-addConfigSelect_{{ $index }}\\\"\\n                      ></select>\\n                    </div>\\n                    <div class=\\\"col-sm-3\\\">\\n                      <button\\n                        class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n                        type=\\\"button\\\"\\n                        ng-if=\\\"!config.Overriden\\\"\\n                        ng-click=\\\"ctrl.overrideConfiguration(index)\\\"\\n                        ng-disabled=\\\"!config.SelectedConfiguration || ctrl.formValues.Containers.length > 1\\\"\\n                        data-cy=\\\"k8sAppCreate-configOverrideButton_{{ $index }}\\\"\\n                      >\\n                        <pr-icon icon=\\\"'list'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> 覆盖\\n                      </button>\\n                      <button\\n                        class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n                        type=\\\"button\\\"\\n                        ng-if=\\\"config.Overriden\\\"\\n                        ng-click=\\\"ctrl.resetConfiguration(index)\\\"\\n                        ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n                        data-cy=\\\"k8sAppCreate-configAutoButton_{{ $index }}\\\"\\n                      >\\n                        <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon> Auto\\n                      </button>\\n                      <button\\n                        class=\\\"btn btn-md btn-dangerlight vertical-center btn-only-icon h-[34px]\\\"\\n                        type=\\\"button\\\"\\n                        ng-click=\\\"ctrl.removeConfiguration(index)\\\"\\n                        ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n                        data-cy=\\\"k8sAppCreate-configRemoveButton\\\"\\n                      >\\n                        <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </button>\\n                    </div>\\n                    <!-- no-override -->\\n                    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\" ng-if=\\\"config.SelectedConfiguration && !config.Overriden\\\">\\n                      <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                      <div class=\\\"col-sm-6 small text-muted\\\" style=\\\"padding-left: 5px\\\">\\n                        以下键值将从 <code>{{ config.SelectedConfiguration.Name }}</code> 配置中作为环境变量加载:\\n                        <span ng-repeat=\\\"(key, _) in config.SelectedConfiguration.Data\\\">\\n                          <code>{{ key }}</code\\n                          >{{ $last ? '' : ', ' }}\\n                        </span>\\n                      </div>\\n                    </div>\\n                    <!-- !no-override -->\\n\\n                    <!-- has-override -->\\n                    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\" ng-if=\\\"config.Overriden\\\">\\n                      <div ng-repeat=\\\"(keyIndex, overridenKey) in config.OverridenKeys\\\" style=\\\"margin-top: 2px\\\">\\n                        <div class=\\\"row\\\">\\n                          <div class=\\\"col-sm-3 col-lg-2 form-group !m-0\\\"><span>&nbsp;</span></div>\\n                          <div class=\\\"col-sm-3 form-group !mr-1\\\" style=\\\"margin-left: -11px\\\">\\n                            <div class=\\\"input-group input-group-sm\\\">\\n                              <span class=\\\"input-group-addon\\\">配置 key</span>\\n                              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-value=\\\"overridenKey.Key\\\" disabled />\\n                            </div>\\n                          </div>\\n\\n                          <div class=\\\"col-sm-3 form-group !mr-1\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n                            <div class=\\\"input-group input-group-sm\\\">\\n                              <span class=\\\"input-group-addon required\\\">磁盘上的路径</span>\\n                              <input\\n                                type=\\\"text\\\"\\n                                class=\\\"form-control\\\"\\n                                ng-model=\\\"overridenKey.Path\\\"\\n                                placeholder=\\\"/etc/myapp/conf.d\\\"\\n                                name=\\\"overriden_key_path_{{ index }}_{{ keyIndex }}\\\"\\n                                ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n                                required\\n                                ng-change=\\\"ctrl.onChangeConfigurationPath()\\\"\\n                                data-cy=\\\"k8sAppCreate-pathOnDiskInput\\\"\\n                              />\\n                            </div>\\n                            <span\\n                              ng-show=\\\"\\n                                kubernetesApplicationCreationForm['overriden_key_path_' + index + '_' + keyIndex].$invalid ||\\n                                ctrl.state.duplicates.configurationPaths.refs[index + '_' + keyIndex] !== undefined\\n                              \\\"\\n                            >\\n                              <div class=\\\"input-group input-group-sm text-warning\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n                                <div\\n                                  class=\\\"small\\\"\\n                                  style=\\\"margin-top: 5px\\\"\\n                                  ng-show=\\\"\\n                                    kubernetesApplicationCreationForm['overriden_key_path_' + index + '_' + keyIndex].$invalid ||\\n                                    ctrl.state.duplicates.configurationPaths.refs[index + '_' + keyIndex] !== undefined\\n                                  \\\"\\n                                >\\n                                  <ng-messages for=\\\"kubernetesApplicationCreationForm['overriden_key_path_' + index + '_' + keyIndex].$error\\\">\\n                                    <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"\\n                                      ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 需要路径。</p\\n                                    >\\n                                  </ng-messages>\\n                                  <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.configurationPaths.refs[index + '_' + keyIndex] !== undefined\\\"\\n                                    ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 此路径已被使用。</p\\n                                  >\\n                                </div>\\n                              </div>\\n                            </span>\\n                          </div>\\n\\n                          <div class=\\\"col-sm-4 form-group\\\">\\n                            <div class=\\\"input-group btn-group btn-group-sm\\\">\\n                              <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT\\\">\\n                                <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon> 环境\\n                              </label>\\n                              <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n                                <pr-icon icon=\\\"'file-text'\\\" feather=\\\"true\\\"></pr-icon> 文件系统\\n                              </label>\\n                            </div>\\n                          </div>\\n                        </div>\\n                      </div>\\n                    </div>\\n                    <!-- !has-override -->\\n                  </div>\\n                  <!-- !config-element -->\\n                  <!-- #endregion -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Persisting data </div>\\n                  <!-- #region PERSISTED FOLDERS -->\\n                  <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.storageClassAvailable()\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      No storage option is available to persist data, contact your administrator to enable a storage option.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n                    <div class=\\\"col-sm-12 vertical-center pt-2.5\\\" style=\\\"margin-top: 5px\\\" ng-if=\\\"!ctrl.allQuotasExhaustedAndNoVolumesAvailable()\\\">\\n                      <label class=\\\"control-label text-left !pt-0\\\">Persisted folders</label>\\n                      <span\\n                        class=\\\"label label-default interactive vertical-center\\\"\\n                        style=\\\"margin-left: 10px\\\"\\n                        ng-click=\\\"ctrl.addPersistedFolder()\\\"\\n                        ng-if=\\\"ctrl.isAddPersistentFolderButtonShowed()\\\"\\n                        data-cy=\\\"k8sAppCreate-addPersistentFolderButton\\\"\\n                      >\\n                        <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> add persisted folder\\n                      </span>\\n                    </div>\\n\\n                    <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\" ng-if=\\\"ctrl.allQuotasExhaustedAndNoVolumesAvailable()\\\">\\n                      <span class=\\\"small text-muted vertical-center\\\">\\n                        <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                        This namespace has exhausted its storage capacity. Contact your administrator to expand the capacity of the namespace.\\n                      </span>\\n                    </div>\\n\\n                    <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\" ng-repeat=\\\"persistedFolder in ctrl.formValues.PersistedFolders\\\">\\n                      <div style=\\\"margin-top: 2px\\\">\\n                        <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\">\\n                          <span class=\\\"input-group-addon required\\\">path in container</span>\\n                          <input\\n                            type=\\\"text\\\"\\n                            class=\\\"form-control\\\"\\n                            name=\\\"persisted_folder_path_{{ $index }}\\\"\\n                            ng-model=\\\"persistedFolder.ContainerPath\\\"\\n                            ng-change=\\\"ctrl.onChangePersistedFolderPath()\\\"\\n                            ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n                            placeholder=\\\"/data\\\"\\n                            required\\n                            data-cy=\\\"k8sAppCreate-containerPathInput_{{ $index }}\\\"\\n                          />\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-2 input-group-sm\\\">\\n                          <span\\n                            class=\\\"btn-group btn-group-sm\\\"\\n                            ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\"\\n                            ng-if=\\\"\\n                              !ctrl.isEditAndExistingPersistedFolder($index) &&\\n                              ctrl.application.ApplicationType !== ctrl.ApplicationTypes.STATEFULSET &&\\n                              ctrl.formValues.Containers.length <= 1\\n                            \\\"\\n                          >\\n                            <label\\n                              class=\\\"btn btn-light\\\"\\n                              ng-model=\\\"persistedFolder.UseNewVolume\\\"\\n                              uib-btn-radio=\\\"true\\\"\\n                              ng-change=\\\"ctrl.useNewVolume($index)\\\"\\n                              ng-disabled=\\\"ctrl.isNewVolumeButtonDisabled($index)\\\"\\n                              >New volume</label\\n                            >\\n                            <label\\n                              class=\\\"btn btn-light\\\"\\n                              ng-model=\\\"persistedFolder.UseNewVolume\\\"\\n                              uib-btn-radio=\\\"false\\\"\\n                              ng-change=\\\"ctrl.useExistingVolume($index)\\\"\\n                              ng-disabled=\\\"ctrl.isExistingVolumeButtonDisabled()\\\"\\n                              >Existing volume</label\\n                            >\\n                          </span>\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\" ng-if=\\\"persistedFolder.UseNewVolume\\\">\\n                          <span class=\\\"input-group-addon required\\\">requested size</span>\\n                          <input\\n                            type=\\\"number\\\"\\n                            class=\\\"form-control !rounded-none\\\"\\n                            name=\\\"persisted_folder_size_{{ $index }}\\\"\\n                            ng-model=\\\"persistedFolder.Size\\\"\\n                            placeholder=\\\"20\\\"\\n                            min=\\\"0\\\"\\n                            required\\n                            ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n                            ng-change=\\\"ctrl.onChangeVolumeRequestedSize()\\\"\\n                          />\\n                          <span class=\\\"input-group-addon !p-0 !rounded-r-[5px]\\\">\\n                            <select\\n                              class=\\\"form-control w-12 !h-[28px] !border-none !rounded-r-[5px] text-xs\\\"\\n                              ng-model=\\\"persistedFolder.SizeUnit\\\"\\n                              ng-style=\\\"{ height: '100%', cursor: ctrl.isEditAndExistingPersistedFolder($index) ? 'not-allowed' : 'auto' }\\\"\\n                              ng-options=\\\"unit for unit in ctrl.state.availableSizeUnits\\\"\\n                              ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n                              ng-change=\\\"ctrl.onChangeVolumeRequestedSize()\\\"\\n                            ></select>\\n                          </span>\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-2 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\" ng-if=\\\"persistedFolder.UseNewVolume\\\">\\n                          <span class=\\\"input-group-addon\\\">storage</span>\\n                          <select\\n                            ng-if=\\\"ctrl.hasMultipleStorageClassesAvailable()\\\"\\n                            class=\\\"form-control\\\"\\n                            ng-model=\\\"persistedFolder.StorageClass\\\"\\n                            ng-options=\\\"storageClass as storageClass.Name for storageClass in ctrl.storageClasses\\\"\\n                            ng-disabled=\\\"ctrl.state.isEdit || ctrl.formValues.Containers.length > 1\\\"\\n                            data-cy=\\\"k8sAppCreate-storageSelect_{{ $index }}\\\"\\n                          ></select>\\n                          <input\\n                            ng-if=\\\"!ctrl.hasMultipleStorageClassesAvailable()\\\"\\n                            type=\\\"text\\\"\\n                            class=\\\"form-control\\\"\\n                            disabled\\n                            ng-model=\\\"persistedFolder.StorageClass.Name\\\"\\n                            data-cy=\\\"k8sAppCreate-storageClassNameInput_{{ $index }}\\\"\\n                          />\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-5 input-group-sm\\\" ng-if=\\\"!persistedFolder.UseNewVolume\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\">\\n                          <span class=\\\"input-group-addon\\\">存储卷</span>\\n                          <select\\n                            class=\\\"form-control\\\"\\n                            name=\\\"existing_volumes_{{ $index }}\\\"\\n                            ng-model=\\\"ctrl.formValues.PersistedFolders[$index].ExistingVolume\\\"\\n                            ng-options=\\\"vol as vol.PersistentVolumeClaim.Name for vol in ctrl.availableVolumes\\\"\\n                            ng-change=\\\"ctrl.onChangeExistingVolumeSelection()\\\"\\n                            ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n                            required\\n                          >\\n                            <option selected disabled hidden value=\\\"\\\">选择存储卷</option>\\n                          </select>\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n                          <div ng-if=\\\"!ctrl.isEditAndStatefulSet() && !ctrl.state.useExistingVolume[$index] && ctrl.formValues.Containers.length <= 1\\\">\\n                            <button\\n                              ng-if=\\\"!persistedFolder.NeedsDeletion\\\"\\n                              class=\\\"btn btn-sm btn-dangerlight !ml-0 h-[30px]\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.removePersistedFolder($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-rmPersistentFolderButton\\\"\\n                            >\\n                              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                            </button>\\n                            <button\\n                              ng-if=\\\"persistedFolder.NeedsDeletion\\\"\\n                              class=\\\"btn btn-sm btn-primary\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.restorePersistedFolder($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-restorePersistentButton\\\"\\n                            >\\n                              <pr-icon icon=\\\"'rotate-cw'\\\" feather=\\\"true\\\"></pr-icon>\\n                            </button>\\n                          </div>\\n                        </div>\\n                      </div>\\n\\n                      <div\\n                        class=\\\"flex flex-row gap-x-1\\\"\\n                        ng-show=\\\"\\n                          kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$invalid ||\\n                          ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined ||\\n                          kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$invalid ||\\n                          ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined ||\\n                          kubernetesApplicationCreationForm['existing_volumes_' + $index].$invalid ||\\n                          ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\n                        \\\"\\n                      >\\n                        <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n                          <div\\n                            class=\\\"small text-warning\\\"\\n                            style=\\\"margin-top: 5px\\\"\\n                            ng-show=\\\"\\n                              kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$invalid || ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined\\n                            \\\"\\n                          >\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$error\\\">\\n                              <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Path is required.</p>\\n                            </ng-messages>\\n                            <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined\\\"\\n                              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> This path is already defined.</p\\n                            >\\n                          </div>\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-offset-2 col-sm-3 input-group-sm\\\">\\n                          <div\\n                            class=\\\"small text-warning\\\"\\n                            style=\\\"margin-top: 5px\\\"\\n                            ng-show=\\\"\\n                              kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$invalid || ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined\\n                            \\\"\\n                          >\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$error\\\">\\n                              <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Size is required.</p>\\n                              <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"\\n                                ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 此值必须大于零。</p\\n                              >\\n                            </ng-messages>\\n                            <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined\\\">\\n                              <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                              你最多只能要求\\n                              {{ ctrl.state.storages.availabilities[persistedFolder.StorageClass.Name] | kubernetesAppStorageRequestSizeHumanReadable }} 到\\n                              {{ persistedFolder.StorageClass.Name }}\\n                            </p>\\n                          </div>\\n                          <div\\n                            class=\\\"small text-warning\\\"\\n                            ng-show=\\\"kubernetesApplicationCreationForm['existing_volumes_' + $index].$invalid || ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\\"\\n                          >\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['existing_volumes_' + $index].$error\\\">\\n                              <p ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 存储卷必须要填写.</p>\\n                            </ng-messages>\\n                            <p ng-if=\\\"ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\\"\\n                              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 此存储卷已被使用。</p\\n                            >\\n                          </div>\\n                        </div>\\n\\n                        <div class=\\\"input-group col-sm-1 input-group-sm\\\"> </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <!-- #region DATA ACCESS POLICY -->\\n                  <div ng-if=\\\"ctrl.showDataAccessPolicySection()\\\">\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-12\\\">\\n                        <label class=\\\"control-label text-left\\\">Data access policy</label>\\n                      </div>\\n                    </div>\\n\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-12 small text-muted\\\"> Specify how the data will be used across instances. </div>\\n                    </div>\\n\\n                    <!-- access policy options -->\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-12\\\">\\n                        <div class=\\\"boxselector_wrapper\\\">\\n                          <div\\n                            ng-if=\\\"\\n                              (!ctrl.state.isEdit && !ctrl.state.persistedFoldersUseExistingVolumes) ||\\n                              (ctrl.state.isEdit && ctrl.formValues.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.ISOLATED)\\n                            \\\"\\n                          >\\n                            <input\\n                              type=\\\"radio\\\"\\n                              id=\\\"data_access_isolated\\\"\\n                              ng-value=\\\"ctrl.ApplicationDataAccessPolicies.ISOLATED\\\"\\n                              ng-model=\\\"ctrl.formValues.DataAccessPolicy\\\"\\n                              ng-change=\\\"ctrl.resetDeploymentType()\\\"\\n                            />\\n                            <label for=\\\"data_access_isolated\\\">\\n                              <div class=\\\"boxselector_header\\\">\\n                                <pr-icon icon=\\\"'svg-cubes'\\\"></pr-icon>\\n                                Isolated\\n                              </div>\\n                              <p>Application will be deployed as a StatefulSet with each instantiating their own data</p>\\n                            </label>\\n                          </div>\\n                          <div\\n                            style=\\\"color: #767676\\\"\\n                            ng-if=\\\"\\n                              (ctrl.state.isEdit && ctrl.formValues.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.SHARED) || ctrl.state.persistedFoldersUseExistingVolumes\\n                            \\\"\\n                          >\\n                            <input type=\\\"radio\\\" id=\\\"data_access_isolated\\\" disabled />\\n                            <label\\n                              for=\\\"data_access_isolated\\\"\\n                              tooltip-append-to-body=\\\"true\\\"\\n                              tooltip-placement=\\\"bottom\\\"\\n                              tooltip-class=\\\"portainer-tooltip\\\"\\n                              uib-tooltip=\\\"Changing the data access policy is not allowed\\\"\\n                              style=\\\"cursor: pointer; border-color: #767676\\\"\\n                            >\\n                              <div class=\\\"boxselector_header\\\">\\n                                <pr-icon icon=\\\"'svg-cubes'\\\"></pr-icon>\\n                                Isolated\\n                              </div>\\n                              <p>Application will be deployed as a StatefulSet with each instantiating their own data</p>\\n                            </label>\\n                          </div>\\n                          <div ng-if=\\\"!ctrl.state.isEdit || (ctrl.state.isEdit && ctrl.formValues.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.SHARED)\\\">\\n                            <input\\n                              type=\\\"radio\\\"\\n                              id=\\\"data_access_shared\\\"\\n                              ng-value=\\\"ctrl.ApplicationDataAccessPolicies.SHARED\\\"\\n                              ng-model=\\\"ctrl.formValues.DataAccessPolicy\\\"\\n                              ng-change=\\\"ctrl.resetDeploymentType()\\\"\\n                            />\\n                            <label for=\\\"data_access_shared\\\">\\n                              <div class=\\\"boxselector_header\\\">\\n                                <pr-icon icon=\\\"'box'\\\" feather=\\\"true\\\"></pr-icon>\\n                                Shared\\n                              </div>\\n                              <p>Application will be deployed as a Deployment with a shared storage access</p>\\n                            </label>\\n                          </div>\\n                          <div style=\\\"color: #767676\\\" ng-if=\\\"ctrl.state.isEdit && ctrl.formValues.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.ISOLATED\\\">\\n                            <input type=\\\"radio\\\" id=\\\"data_access_shared\\\" disabled />\\n                            <label\\n                              for=\\\"data_access_shared\\\"\\n                              tooltip-append-to-body=\\\"true\\\"\\n                              tooltip-placement=\\\"bottom\\\"\\n                              tooltip-class=\\\"portainer-tooltip\\\"\\n                              uib-tooltip=\\\"Changing the data access policy is not allowed\\\"\\n                              style=\\\"cursor: pointer; border-color: #767676\\\"\\n                            >\\n                              <div class=\\\"boxselector_header\\\">\\n                                <pr-icon icon=\\\"'sliders'\\\" feather=\\\"true\\\"></pr-icon>\\n                                Shared\\n                              </div>\\n                              <p>Application will be deployed as a Deployment with a shared storage access</p>\\n                            </label>\\n                          </div>\\n                        </div>\\n                      </div>\\n                    </div>\\n                    <!-- !access policy options -->\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Resource reservations </div>\\n                  <!-- #region RESOURCE RESERVATIONS -->\\n                  <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.state.resourcePoolHasQuota\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Resource reservations are applied per instance of the application.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded()\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      A resource quota is set on this namespace, you must specify resource reservations. Resource reservations are applied per instance of the application. Maximums\\n                      are inherited from the namespace quota.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded()\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                      This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of\\n                      the namespace.\\n                    </div>\\n                  </div>\\n\\n                  <!-- memory-limit-input -->\\n                  <div\\n                    class=\\\"form-group flex\\\"\\n                    ng-if=\\\"\\n                      (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1\\n                    \\\"\\n                  >\\n                    <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left flex flex-row items-center\\\">\\n                      Memory limit (MB)\\n                      <portainer-tooltip\\n                        message=\\\"'An instance of this application will reserve this amount of memory. If the instance memory usage exceeds the reservation, it might be subject to OOM.'\\\"\\n                      >\\n                      </portainer-tooltip>\\n                    </label>\\n                    <div class=\\\"col-sm-6\\\">\\n                      <slider model=\\\"ctrl.formValues.MemoryLimit\\\" floor=\\\"ctrl.state.sliders.memory.min\\\" ceil=\\\"ctrl.state.sliders.memory.max\\\" step=\\\"128\\\"></slider>\\n                    </div>\\n                    <div class=\\\"col-sm-2 vertical-center\\\">\\n                      <input\\n                        name=\\\"memory_limit\\\"\\n                        ng-model=\\\"ctrl.formValues.MemoryLimit\\\"\\n                        type=\\\"number\\\"\\n                        min=\\\"{{ ctrl.state.sliders.memory.min }}\\\"\\n                        max=\\\"{{ ctrl.state.sliders.memory.max }}\\\"\\n                        class=\\\"form-control\\\"\\n                        id=\\\"memory-limit\\\"\\n                        required\\n                        data-cy=\\\"k8sAppCreate-memoryLimit\\\"\\n                      />\\n                    </div>\\n                  </div>\\n                  <div class=\\\"form-group\\\" ng-show=\\\"kubernetesApplicationCreationForm.memory_limit.$invalid\\\">\\n                    <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                    <div class=\\\"col-sm-8 small text-warning\\\">\\n                      <div ng-messages=\\\"kubernetesApplicationCreationForm.memory_limit.$error\\\">\\n                        <p class=\\\"vertical-center\\\"\\n                          ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Value must be between {{ ctrl.state.sliders.memory.min }} and\\n                          {{ ctrl.state.sliders.memory.max }}\\n                        </p>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- !memory-limit-input -->\\n                  <!-- cpu-limit-input -->\\n                  <div\\n                    class=\\\"form-group flex\\\"\\n                    ng-if=\\\"\\n                      (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1\\n                    \\\"\\n                  >\\n                    <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left flex flex-row items-center\\\">\\n                      CPU limit\\n                      <portainer-tooltip\\n                        message=\\\"'An instance of this application will reserve this amount of CPU. If the instance CPU usage exceeds the reservation, it might be subject to CPU throttling.'\\\"\\n                      >\\n                      </portainer-tooltip>\\n                    </label>\\n                    <div class=\\\"col-sm-8\\\">\\n                      <slider model=\\\"ctrl.formValues.CpuLimit\\\" floor=\\\"ctrl.state.sliders.cpu.min\\\" ceil=\\\"ctrl.state.sliders.cpu.max\\\" step=\\\"0.10\\\" precision=\\\"2\\\"></slider>\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.nodeLimitsOverflow()\\\">\\n                    <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                    <div class=\\\"col-sm-8 small text-muted\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                      These reservations would exceed the resources currently available in the cluster.\\n                    </div>\\n                  </div>\\n                  <!-- !cpu-limit-input -->\\n                  <!-- #endregion -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n                  <!-- #region DEPLOYMENT -->\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12 small text-muted\\\"> Select how you want to deploy your application inside the cluster. </div>\\n                  </div>\\n\\n                  <!-- deployment options -->\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12\\\">\\n                      <div class=\\\"boxselector_wrapper\\\">\\n                        <div>\\n                          <input\\n                            type=\\\"radio\\\"\\n                            id=\\\"deployment_replicated\\\"\\n                            ng-value=\\\"ctrl.ApplicationDeploymentTypes.REPLICATED\\\"\\n                            ng-model=\\\"ctrl.formValues.DeploymentType\\\"\\n                            data-cy=\\\"k8sAppCreate-replicatedDeploymentButton\\\"\\n                          />\\n                          <label for=\\\"deployment_replicated\\\">\\n                            <div class=\\\"boxselector_header\\\">\\n                              <pr-icon icon=\\\"'sliders'\\\" feather=\\\"true\\\"></pr-icon>\\n                              Replicated\\n                            </div>\\n                            <p>Run one or multiple instances of this container</p>\\n                          </label>\\n                        </div>\\n                        <div ng-if=\\\"!ctrl.supportGlobalDeployment()\\\">\\n                          <input type=\\\"radio\\\" id=\\\"deployment_global\\\" disabled />\\n                          <label\\n                            for=\\\"deployment_global\\\"\\n                            tooltip-append-to-body=\\\"true\\\"\\n                            tooltip-placement=\\\"bottom\\\"\\n                            tooltip-class=\\\"portainer-tooltip\\\"\\n                            uib-tooltip=\\\"The storage or access policy used for persisted folders cannot be used with this option\\\"\\n                          >\\n                            <div class=\\\"boxselector_header\\\">\\n                              <pr-icon icon=\\\"'svg-cubes'\\\"></pr-icon>\\n                              Global\\n                            </div>\\n                            <p>Application will be deployed as a DaemonSet with an instance on each node of the cluster</p>\\n                          </label>\\n                        </div>\\n                        <div ng-if=\\\"ctrl.supportGlobalDeployment()\\\">\\n                          <input\\n                            type=\\\"radio\\\"\\n                            id=\\\"deployment_global\\\"\\n                            ng-value=\\\"ctrl.ApplicationDeploymentTypes.GLOBAL\\\"\\n                            ng-model=\\\"ctrl.formValues.DeploymentType\\\"\\n                            ng-click=\\\"ctrl.unselectAutoScaler()\\\"\\n                            data-cy=\\\"k8sAppCreate-globalDeployButton\\\"\\n                          />\\n                          <label for=\\\"deployment_global\\\">\\n                            <div class=\\\"boxselector_header\\\">\\n                              <pr-icon icon=\\\"'svg-cubes'\\\"></pr-icon>\\n                              Global\\n                            </div>\\n                            <p>Application will be deployed as a DaemonSet with an instance on each node of the sdfh</p>\\n                          </label>\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- !deployment options -->\\n\\n                  <!-- replica count -->\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.DeploymentType === ctrl.ApplicationDeploymentTypes.REPLICATED\\\">\\n                    <label for=\\\"replica_count\\\" class=\\\"col-sm-1 control-label text-left\\\">Instance count</label>\\n                    <div class=\\\"col-sm-2\\\">\\n                      <input\\n                        type=\\\"number\\\"\\n                        name=\\\"replica_count\\\"\\n                        class=\\\"form-control\\\"\\n                        min=\\\"1\\\"\\n                        max=\\\"9999\\\"\\n                        placeholder=\\\"1\\\"\\n                        ng-model=\\\"ctrl.formValues.ReplicaCount\\\"\\n                        ng-disabled=\\\"!ctrl.supportScalableReplicaDeployment()\\\"\\n                        ng-change=\\\"ctrl.enforceReplicaCountMinimum()\\\"\\n                        required\\n                        data-cy=\\\"k8sAppCreate-replicaCountInput\\\"\\n                      />\\n                      <div class=\\\"help-block\\\" ng-if=\\\"kubernetesApplicationCreationForm['replica_count'].$invalid\\\">\\n                        <div class=\\\"small text-warning whitespace-nowrap\\\">\\n                          <ng-messages for=\\\"kubernetesApplicationCreationForm['replica_count'].$error\\\">\\n                            <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"\\n                              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Instance count is required.</p\\n                            >\\n                            <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"\\n                              ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Instance count must be greater than 0.</p\\n                            >\\n                          </ng-messages>\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- !replica count -->\\n\\n                  <div\\n                    class=\\\"form-group\\\"\\n                    ng-if=\\\"!ctrl.resourceReservationsOverflow() && ctrl.formValues.ReplicaCount > 1 && (ctrl.formValues.CpuLimit !== 0 || ctrl.formValues.MemoryLimit !== 0)\\\"\\n                  >\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      <div>\\n                        This application will reserve the following resources:\\n                        <b>{{ ctrl.formValues.CpuLimit * ctrl.formValues.ReplicaCount | kubernetesApplicationCPUValue }} CPU</b> and\\n                        <b>{{ ctrl.formValues.MemoryLimit * ctrl.formValues.ReplicaCount }} MB</b> of memory.\\n                      </div>\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.resourceReservationsOverflow()\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                      This application would exceed available resources. Please review resource reservations or the instance count.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.storages.quotaExceeded\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      This application would exceed available storage. Please review the persisted folders or the instance count.\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.supportScalableReplicaDeployment()\\\">\\n                    <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      <div>\\n                        The following storage option(s) do not support concurrent access from multiples instances: <code>{{ ctrl.getNonScalableStorage() }}</code\\n                        >. You will not be able to scale that application.\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <!-- #region AUTO SCALING -->\\n                  <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL\\\"> Auto-scaling </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.state.useServerMetrics\\\">\\n                    <div class=\\\"col-sm-12\\\">\\n                      <div class=\\\"col-sm-3 col-lg-2 pl-0 pt-0\\\">\\n                        <label for=\\\"enable_auto_scaling\\\" class=\\\"control-label text-left\\\"> Enable auto scaling for this application </label>\\n                      </div>\\n                      <label class=\\\"switch ml-4 mt-1\\\">\\n                        <input\\n                          type=\\\"checkbox\\\"\\n                          class=\\\"form-control\\\"\\n                          name=\\\"enable_auto_scaling\\\"\\n                          ng-model=\\\"ctrl.formValues.AutoScaler.IsUsed\\\"\\n                          data-cy=\\\"k8sAppCreate-autoScaleCheckbox\\\"\\n                        />\\n                        <span class=\\\"slider round\\\"></span>\\n                      </label>\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && !ctrl.state.useServerMetrics\\\">\\n                    <div class=\\\"col-sm-12 small text-muted\\\">\\n                      <p ng-if=\\\"!ctrl.isAdmin\\\"> This feature is currently disabled and must be enabled by an administrator user. </p>\\n                      <p ng-if=\\\"ctrl.isAdmin\\\">\\n                        Server metrics features must be enabled in the\\n                        <a ui-sref=\\\"kubernetes.cluster.setup\\\" class=\\\"ctrl.isAdmin\\\">environment configuration view</a>.\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div class=\\\"form-inline\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.formValues.AutoScaler.IsUsed\\\">\\n                    <div class=\\\"row\\\">\\n                      <div class=\\\"col-sm-4 pl-0\\\">\\n                        <label class=\\\"control-label text-left pb-2\\\" for=\\\"auto_scaler_min\\\">Minimum instances</label>\\n                        <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n                          <input\\n                            type=\\\"number\\\"\\n                            class=\\\"form-control\\\"\\n                            name=\\\"auto_scaler_min\\\"\\n                            min=\\\"0\\\"\\n                            ng-max=\\\"ctrl.formValues.AutoScaler.MaxReplicas\\\"\\n                            ng-model=\\\"ctrl.formValues.AutoScaler.MinReplicas\\\"\\n                            data-cy=\\\"k8sAppCreate-autoScaleMin\\\"\\n                            required\\n                          />\\n                        </div>\\n                        <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_min'].$invalid\\\">\\n                          <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_min'].$error\\\">\\n                              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Minimum instances is required.\\n                              </p>\\n                              <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Minimum instances must be greater than 0.\\n                              </p>\\n                              <p ng-message=\\\"max\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Minimum instances must be smaller than maximum instances.\\n                              </p>\\n                            </ng-messages>\\n                          </div>\\n                        </span>\\n                      </div>\\n                      <div class=\\\"col-sm-4 pl-0\\\">\\n                        <label class=\\\"control-label text-left pb-2\\\" for=\\\"auto_scaler_max\\\">Maximum instances</label>\\n                        <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n                          <input\\n                            type=\\\"number\\\"\\n                            class=\\\"form-control\\\"\\n                            name=\\\"auto_scaler_max\\\"\\n                            ng-min=\\\"ctrl.formValues.AutoScaler.MinReplicas\\\"\\n                            ng-model=\\\"ctrl.formValues.AutoScaler.MaxReplicas\\\"\\n                          />\\n                        </div>\\n                        <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_max'].$invalid || ctrl.autoScalerOverflow()\\\">\\n                          <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_max'].$error\\\">\\n                              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Maximum instances is required.\\n                              </p>\\n                              <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Maximum instances must be greater than minimum instances.\\n                              </p>\\n                            </ng-messages>\\n                          </div>\\n                        </span>\\n                      </div>\\n                      <div class=\\\"col-sm-4 pl-0\\\">\\n                        <label class=\\\"control-label text-left pb-2\\\" for=\\\"auto_scaler_cpu\\\">\\n                          Target CPU usage (<b>%</b>)\\n                          <portainer-tooltip message=\\\"'The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.'\\\">\\n                          </portainer-tooltip>\\n                        </label>\\n                        <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n                          <input\\n                            type=\\\"number\\\"\\n                            class=\\\"form-control\\\"\\n                            name=\\\"auto_scaler_cpu\\\"\\n                            ng-model=\\\"ctrl.formValues.AutoScaler.TargetCPUUtilization\\\"\\n                            min=\\\"1\\\"\\n                            max=\\\"100\\\"\\n                            required\\n                            data-cy=\\\"k8sAppCreate-targetCPUInput\\\"\\n                          />\\n                        </div>\\n                        <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_cpu'].$invalid\\\">\\n                          <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n                            <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_cpu'].$error\\\">\\n                              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Target CPU usage is required.\\n                              </p>\\n                              <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Target CPU usage must be greater than 0.\\n                              </p>\\n                              <p ng-message=\\\"max\\\" class=\\\"vertical-center\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Target CPU usage must be smaller than 100.\\n                              </p>\\n                            </ng-messages>\\n                          </div>\\n                        </span>\\n                      </div>\\n                    </div>\\n\\n                    <div class=\\\"form-group\\\" ng-if=\\\"ctrl.autoScalerOverflow()\\\" style=\\\"margin-bottom: 10px\\\">\\n                      <div class=\\\"col-sm-12 small text-danger\\\">\\n                        <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                        This application would exceed available resources. Please review resource reservations or the maximum instance count of the auto-scaling policy.\\n                      </div>\\n                    </div>\\n                  </div>\\n                  <!-- #endregion -->\\n\\n                  <div ng-if=\\\"ctrl.formValues.DeploymentType === ctrl.ApplicationDeploymentTypes.REPLICATED\\\">\\n                    <div class=\\\"col-sm-12 form-section-title\\\"> Placement preferences and constraints </div>\\n\\n                    <!-- #region PLACEMENTS -->\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-12 vertical-center pt-2.5\\\">\\n                        <label class=\\\"control-label text-left !pt-0\\\">Placement rules</label>\\n                        <span class=\\\"label label-default interactive vertical-center\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"ctrl.addPlacement()\\\">\\n                          <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> add rule\\n                        </span>\\n                      </div>\\n\\n                      <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"ctrl.formValues.Placements.length > 0\\\" style=\\\"margin-top: 10px\\\">\\n                        <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                        <div> Deploy this application on nodes that respect <b>ALL</b> of the following placement rules. Placement rules are based on node labels. </div>\\n                      </div>\\n\\n                      <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n                        <div ng-repeat-start=\\\"placement in ctrl.formValues.Placements\\\" style=\\\"margin-top: 2px\\\">\\n                          <div class=\\\"col-sm-5 input-group\\\" ng-class=\\\"{ striked: placement.NeedsDeletion }\\\">\\n                            <select\\n                              class=\\\"form-control !rounded\\\"\\n                              ng-model=\\\"placement.Label\\\"\\n                              ng-options=\\\"label as (label.Key | kubernetesNodeLabelHumanReadbleText) for label in ctrl.nodesLabels\\\"\\n                              ng-change=\\\"ctrl.onChangePlacementLabel($index)\\\"\\n                              ng-disabled=\\\"ctrl.isEditAndNotNewPlacement($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-placementLabel_{{ $index }}\\\"\\n                            >\\n                            </select>\\n                          </div>\\n                          <div class=\\\"col-sm-5 input-group\\\" ng-class=\\\"{ striked: placement.NeedsDeletion }\\\">\\n                            <select\\n                              class=\\\"form-control !rounded\\\"\\n                              ng-model=\\\"placement.Value\\\"\\n                              ng-options=\\\"value for value in placement.Label.Values\\\"\\n                              ng-disabled=\\\"ctrl.isEditAndNotNewPlacement($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-placementName_{{ $index }}\\\"\\n                            >\\n                            </select>\\n                          </div>\\n\\n                          <div class=\\\"col-sm-1 input-group\\\">\\n                            <button\\n                              ng-if=\\\"!placement.NeedsDeletion\\\"\\n                              class=\\\"btn btn-md btn-dangerlight btn-only-icon !ml-0\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.removePlacement($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-deletePlacementButton\\\"\\n                            >\\n                              <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n                            </button>\\n                            <button\\n                              ng-if=\\\"placement.NeedsDeletion\\\"\\n                              class=\\\"btn btn-sm btn-light btn-only-icon !ml-0\\\"\\n                              type=\\\"button\\\"\\n                              ng-click=\\\"ctrl.restorePlacement($index)\\\"\\n                              data-cy=\\\"k8sAppCreate-restorePlacementButton\\\"\\n                            >\\n                              <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n                            </button>\\n                          </div>\\n                        </div>\\n                        <div ng-repeat-end ng-show=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n                          <div class=\\\"col-sm-5 input-group\\\">\\n                            <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\" ng-if=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n                              <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n                                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> This label is already defined.\\n                              </p>\\n                            </div>\\n                          </div>\\n                        </div>\\n                      </div>\\n                    </div>\\n                    <div ng-if=\\\"ctrl.showPlacementPolicySection()\\\">\\n                      <div class=\\\"form-group\\\">\\n                        <div class=\\\"col-sm-12\\\">\\n                          <label class=\\\"control-label text-left\\\">Placement policy</label>\\n                        </div>\\n                      </div>\\n\\n                      <div class=\\\"form-group\\\">\\n                        <div class=\\\"col-sm-12 small text-muted\\\"> Specify the policy associated to the placement rules. </div>\\n                      </div>\\n\\n                      <!-- placement policy options -->\\n                      <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Placements.length\\\">\\n                        <div class=\\\"col-sm-12\\\">\\n                          <div class=\\\"boxselector_wrapper\\\">\\n                            <div>\\n                              <input\\n                                type=\\\"radio\\\"\\n                                id=\\\"placement_hard\\\"\\n                                ng-value=\\\"ctrl.ApplicationPlacementTypes.MANDATORY\\\"\\n                                ng-model=\\\"ctrl.formValues.PlacementType\\\"\\n                                data-cy=\\\"k8sAppCreate-mandatoryPlacementButton\\\"\\n                              />\\n                              <label for=\\\"placement_hard\\\">\\n                                <div class=\\\"boxselector_header\\\">\\n                                  <pr-icon icon=\\\"'sliders'\\\" feather=\\\"true\\\"></pr-icon>\\n                                  Mandatory\\n                                </div>\\n                                <p>Schedule this application <b>ONLY</b> on nodes that match <b>ALL</b> Rules</p>\\n                              </label>\\n                            </div>\\n                            <div>\\n                              <input\\n                                type=\\\"radio\\\"\\n                                id=\\\"placement_soft\\\"\\n                                ng-value=\\\"ctrl.ApplicationPlacementTypes.PREFERRED\\\"\\n                                ng-model=\\\"ctrl.formValues.PlacementType\\\"\\n                                data-cy=\\\"k8sAppCreate-prefferedPlacementButton\\\"\\n                              />\\n                              <label for=\\\"placement_soft\\\">\\n                                <div class=\\\"boxselector_header\\\">\\n                                  <pr-icon icon=\\\"'align-justify'\\\" feather=\\\"true\\\"></pr-icon>\\n                                  Preferred\\n                                </div>\\n                                <p>Schedule this application on nodes that match the rules if possible</p>\\n                              </label>\\n                            </div>\\n                          </div>\\n                        </div>\\n                      </div>\\n                      <!-- !placement policy options -->\\n                    </div>\\n                    <!-- #endregion -->\\n                  </div>\\n\\n                  <!-- kubernetes services options -->\\n                  <kube-services-view\\n                    form-values=\\\"ctrl.formValues\\\"\\n                    is-edit=\\\"ctrl.state.isEdit\\\"\\n                    namespaces=\\\"ctrl.allNamespaces\\\"\\n                    loadbalancer-enabled=\\\"ctrl.publishViaLoadBalancerEnabled()\\\"\\n                  ></kube-services-view>\\n                  <!-- kubernetes services options -->\\n\\n                  <!-- summary -->\\n                  <kubernetes-summary-view\\n                    ng-if=\\\"!(!kubernetesApplicationCreationForm.$valid || ctrl.isDeployUpdateButtonDisabled() || !ctrl.state.pullImageValidity)\\\"\\n                    form-values=\\\"ctrl.formValues\\\"\\n                    old-form-values=\\\"ctrl.savedFormValues\\\"\\n                  ></kubernetes-summary-view>\\n                </div>\\n              </div>\\n            </div>\\n            <div ng-if=\\\"ctrl.isExternalApplication()\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"> Namespace </div>\\n              <!-- #region NAMESPACE -->\\n              <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n                <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-1 control-label text-left\\\">Namespace</label>\\n                <div class=\\\"col-sm-11\\\">\\n                  <select\\n                    class=\\\"form-control\\\"\\n                    id=\\\"resource-pool-selector\\\"\\n                    ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n                    ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n                    ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n                    ng-disabled=\\\"ctrl.state.isEdit\\\"\\n                    data-cy=\\\"k8sAppCreate-nsSelect\\\"\\n                  ></select>\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n                <div class=\\\"col-sm-12 small text-danger\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n                  This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of the\\n                  namespace.\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n                <div class=\\\"col-sm-12 small text-muted\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n                </div>\\n              </div>\\n              <!-- kubernetes services options -->\\n              <kube-services-view\\n                namespaces=\\\"ctrl.allNamespaces\\\"\\n                form-values=\\\"ctrl.formValues\\\"\\n                is-edit=\\\"ctrl.state.isEdit\\\"\\n                loadbalancer-enabled=\\\"ctrl.publishViaLoadBalancerEnabled()\\\"\\n              ></kube-services-view>\\n              <!-- kubernetes services options -->\\n            </div>\\n\\n            <!-- kubernetes summary for external application -->\\n            <kubernetes-summary-view ng-if=\\\"ctrl.isExternalApplication()\\\" form-values=\\\"ctrl.formValues\\\" old-form-values=\\\"ctrl.savedFormValues\\\"></kubernetes-summary-view>\\n            <!-- kubernetes summary for external application -->\\n            <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"ctrl.state.appType !== ctrl.KubernetesDeploymentTypes.GIT\\\"> 操作 </div>\\n            <!-- #region ACTIONS -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                  ng-disabled=\\\"!kubernetesApplicationCreationForm.$valid || ctrl.isDeployUpdateButtonDisabled() || !ctrl.imageValidityIsValid() || ctrl.hasPortErrors()\\\"\\n                  ng-click=\\\"ctrl.deployApplication()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                  data-cy=\\\"k8sAppCreate-deployButton\\\"\\n                >\\n                  <span ng-show=\\\"!ctrl.state.isEdit && !ctrl.state.actionInProgress\\\">部署应用程序</span>\\n                  <span ng-show=\\\"!ctrl.state.isEdit && ctrl.state.actionInProgress\\\">部署进行中...</span>\\n                  <span ng-show=\\\"ctrl.state.isEdit && !ctrl.state.actionInProgress\\\">更新应用程序</span>\\n                  <span ng-show=\\\"ctrl.state.isEdit && ctrl.state.actionInProgress\\\">正在更新中...</span>\\n                </button>\\n                <button\\n                  ng-if=\\\"ctrl.state.isEdit && !ctrl.state.actionInProgress && ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-sm btn-default\\\"\\n                  ui-sref=\\\"kubernetes.applications.application({ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool })\\\"\\n                  data-cy=\\\"k8sAppCreate-appCancelButton\\\"\\n                >\\n                  Cancel\\n                </button>\\n                <!-- #Web editor buttons -->\\n                <button\\n                  class=\\\"btn btn-sm btn-primary\\\"\\n                  ng-click=\\\"ctrl.updateApplicationViaWebEditor()\\\"\\n                  ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.CONTENT || ctrl.state.updateWebEditorInProgress\\\"\\n                  ng-disabled=\\\"!kubernetesApplicationCreationForm.$valid || !ctrl.state.isEditorDirty || ctrl.state.updateWebEditorInProgress\\\"\\n                  style=\\\"margin-top: 7px; margin-left: 0\\\"\\n                  button-spinner=\\\"ctrl.state.updateWebEditorInProgress\\\"\\n                >\\n                  <span ng-show=\\\"!ctrl.state.updateWebEditorInProgress\\\">更新应用程序</span>\\n                  <span ng-show=\\\"ctrl.state.updateWebEditorInProgress\\\">正在更新中...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- #endregion -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/create/createApplication.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///1866\n");

}),

45758:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Application details'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.application.ResourcePool,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.application.ResourcePool }\\n    },\\n    { label:'Applications', link:'kubernetes.applications' },\\n    ctrl.application.Name\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row kubernetes-application\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading> <pr-icon icon=\\\"'svg-laptopcode'\\\" class-name=\\\"'mr-1'\\\"></pr-icon> Application </uib-tab-heading>\\n              <div style=\\\"padding: 20px\\\">\\n                <table class=\\\"table\\\">\\n                  <tbody>\\n                    <tr>\\n                      <td>名称</td>\\n                      <td data-cy=\\\"k8sAppDetail-appName\\\">\\n                        {{ ctrl.application.Name }}\\n                        <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!ctrl.isSystemNamespace() && ctrl.isExternalApplication()\\\">外部</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>堆栈</td>\\n                      <td data-cy=\\\"k8sAppDetail-stackName\\\">{{ ctrl.application.StackName || '-' }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>Namespace</td>\\n                      <td data-cy=\\\"k8sAppDetail-resourcePoolName\\\">\\n                        <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.application.ResourcePool })\\\">{{ ctrl.application.ResourcePool }}</a>\\n                        <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">系统</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>Application Type</td>\\n                      <td data-cy=\\\"k8sAppDetail-appType\\\">\\n                        {{ ctrl.application.ApplicationType | kubernetesApplicationTypeText }}\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>Status</td>\\n                      <td ng-if=\\\"ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD\\\">\\n                        <span ng-if=\\\"ctrl.application.DeploymentType === ctrl.KubernetesApplicationDeploymentTypes.REPLICATED\\\" data-cy=\\\"k8sAppDetail-deployType\\\">Replicated</span>\\n                        <span ng-if=\\\"ctrl.application.DeploymentType === ctrl.KubernetesApplicationDeploymentTypes.GLOBAL\\\" data-cy=\\\"k8sAppDetail-appType\\\">Global</span>\\n                        <code data-cy=\\\"k8sAppDetail-runningPods\\\">{{ ctrl.application.RunningPodsCount }}</code> /\\n                        <code data-cy=\\\"k8sAppDetail-totalPods\\\">{{ ctrl.application.TotalPodsCount }}</code>\\n                      </td>\\n                      <td ng-if=\\\"ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD\\\">\\n                        {{ ctrl.application.Pods[0].Status }}\\n                      </td>\\n                    </tr>\\n                    <tr ng-if=\\\"ctrl.application.Requests.Cpu || ctrl.application.Requests.Memory\\\">\\n                      <td>\\n                        <div>Resource reservations</div>\\n                        <div ng-if=\\\"ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD\\\" class=\\\"text-muted small\\\"> per instance </div>\\n                      </td>\\n                      <td>\\n                        <div ng-if=\\\"ctrl.application.Requests.Cpu\\\" data-cy=\\\"k8sAppDetail-cpuReservation\\\"\\n                          >CPU {{ ctrl.application.Requests.Cpu | kubernetesApplicationCPUValue }}</div\\n                        >\\n                        <div ng-if=\\\"ctrl.application.Requests.Memory\\\" data-cy=\\\"k8sAppDetail-memoryReservation\\\">Memory {{ ctrl.application.Requests.Memory | humansize }}</div>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>Creation</td>\\n                      <td>\\n                        <span ng-if=\\\"ctrl.application.ApplicationOwner\\\" class=\\\"mr-1 vertical-center\\\" data-cy=\\\"k8sAppDetail-owner\\\">\\n                          <pr-icon icon=\\\"'user'\\\" feather=\\\"true\\\"></pr-icon> {{ ctrl.application.ApplicationOwner }}\\n                        </span>\\n                        <span class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'clock'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> {{ ctrl.application.CreationDate | getisodate }} </span>\\n                        <span ng-if=\\\"ctrl.application.ApplicationOwner\\\" data-cy=\\\"k8sAppDetail-creationMethod\\\" class=\\\"vertical-center\\\">\\n                          <pr-icon icon=\\\"'clock'\\\" feather=\\\"true\\\"></pr-icon> Deployed from {{ ctrl.state.appType }}\\n                        </span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td colspan=\\\"2\\\">\\n                        <form class=\\\"form-horizontal\\\" name=\\\"kubernetesApplicationNoteForm\\\">\\n                          <div class=\\\"form-group\\\">\\n                            <div class=\\\"col-sm-12 vertical-center\\\">\\n                              <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon> Note\\n                              <button\\n                                class=\\\"btn btn-xs btn-light vertical-center\\\"\\n                                ng-click=\\\"ctrl.state.expandedNote = !ctrl.state.expandedNote;\\\"\\n                                data-cy=\\\"k8sAppDetail-expandNoteButton\\\"\\n                                >{{ ctrl.state.expandedNote ? 'Collapse' : 'Expand' }}\\n                                <pr-icon icon=\\\"'chevron-up'\\\" feather=\\\"true\\\" ng-if=\\\"ctrl.state.expandedNote\\\"></pr-icon>\\n                                <pr-icon icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" ng-if=\\\"!ctrl.state.expandedNote\\\"></pr-icon>\\n                              </button>\\n                            </div>\\n                          </div>\\n                          <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.expandedNote\\\">\\n                            <div class=\\\"col-sm-12\\\">\\n                              <textarea\\n                                class=\\\"form-control\\\"\\n                                name=\\\"application_note\\\"\\n                                id=\\\"application_note\\\"\\n                                ng-model=\\\"ctrl.formValues.Note\\\"\\n                                rows=\\\"5\\\"\\n                                placeholder=\\\"Enter a note about this application...\\\"\\n                              ></textarea>\\n                            </div>\\n                          </div>\\n                          <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.expandedNote\\\">\\n                            <div class=\\\"col-sm-12\\\">\\n                              <button\\n                                class=\\\"btn btn-primary btn-sm\\\"\\n                                style=\\\"margin-left: 0px\\\"\\n                                type=\\\"button\\\"\\n                                ng-click=\\\"ctrl.updateApplication()\\\"\\n                                ng-disabled=\\\"ctrl.formValues.Note === ctrl.application.Note\\\"\\n                                data-cy=\\\"k8sAppDetail-saveNoteButton\\\"\\n                                >{{ ctrl.application.Note ? 'Update' : 'Save' }} note</button\\n                              >\\n                            </div>\\n                          </div>\\n                        </form>\\n                      </td>\\n                    </tr>\\n                    <!-- <tr>\\n                      <td colspan=\\\"2\\\">\\n                        <form class=\\\"form-horizontal\\\" name=\\\"KubernetesApplicationRollbackForm\\\">\\n                          <div class=\\\"form-group\\\">\\n                            <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Version</label>\\n                            <div class=\\\"col-sm-2\\\">\\n                              <select class=\\\"form-control\\\" id=\\\"resource-pool-selector\\\" ng-model=\\\"ctrl.formValues.SelectedRevision\\\"\\n                                ng-options=\\\"revision as revision.revision for revision in ctrl.application.Revisions\\\"></select>\\n                            </div>\\n                            <div class=\\\"col-sm-2\\\">\\n                              <button class=\\\"btn btn-primary btn-sm\\\" style=\\\"margin-left: 0px;\\\" type=\\\"button\\\" ng-click=\\\"ctrl.rollbackApplication()\\\"\\n                                ng-disabled=\\\"ctrl.formValues.SelectedRevision.revision === ctrl.application.CurrentRevision.revision\\\">Rollback</button>\\n                            </div>\\n                          </div>\\n                        </form>\\n                      </td>\\n                    </tr> -->\\n                  </tbody>\\n                </table>\\n              </div>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading>\\n                <pr-icon icon=\\\"'svg-compress'\\\"></pr-icon> Placement\\n                <div ng-if=\\\"ctrl.state.placementWarning\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  warning\\n                </div>\\n              </uib-tab-heading>\\n              <div class=\\\"small text-muted vertical-center\\\" style=\\\"padding: 20px\\\">\\n                <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                The placement component helps you understand whether or not this application can be deployed on a specific node.\\n              </div>\\n              <kubernetes-application-placements-datatable\\n                title-text=\\\"Placement constraints/preferences\\\"\\n                title-icon=\\\"svg-compress\\\"\\n                dataset=\\\"ctrl.placements\\\"\\n                table-key=\\\"kubernetes.application.placements\\\"\\n                order-by=\\\"Name\\\"\\n                reverse-order=\\\"false\\\"\\n                loading=\\\"ctrl.state.dataLoading\\\"\\n                refresh-callback=\\\"ctrl.getApplication\\\"\\n              ></kubernetes-application-placements-datatable>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"2\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(2)\\\">\\n              <uib-tab-heading>\\n                <pr-icon icon=\\\"'svg-clockrewind'\\\"></pr-icon> Events\\n                <div ng-if=\\\"ctrl.hasEventWarnings()\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  {{ ctrl.state.eventWarningCount }} warning(s)\\n                </div>\\n              </uib-tab-heading>\\n              <kubernetes-events-datatable\\n                title-text=\\\"Events\\\"\\n                title-icon=\\\"svg-clockrewind\\\"\\n                dataset=\\\"ctrl.events\\\"\\n                table-key=\\\"kubernetes.application.events\\\"\\n                order-by=\\\"Date\\\"\\n                reverse-order=\\\"true\\\"\\n                loading=\\\"ctrl.state.eventsLoading\\\"\\n                refresh-callback=\\\"ctrl.getEvents\\\"\\n              ></kubernetes-events-datatable>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"3\\\" ng-if=\\\"ctrl.application.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n              <uib-tab-heading> <pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon> YAML </uib-tab-heading>\\n              <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n                <kubernetes-yaml-inspector key=\\\"application-yaml\\\" data=\\\"ctrl.application.Yaml\\\"></kubernetes-yaml-inspector>\\n              </div>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <div ng-if=\\\"!ctrl.isSystemNamespace()\\\" style=\\\"margin-bottom: 15px\\\">\\n            <button\\n              ng-if=\\\"!ctrl.isExternalApplication()\\\"\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light vertical-center\\\"\\n              ui-sref=\\\"kubernetes.applications.application.edit\\\"\\n              style=\\\"margin-left: 0\\\"\\n              data-cy=\\\"k8sAppDetail-editAppButton\\\"\\n            >\\n              <pr-icon icon=\\\"'code'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>Edit this application\\n            </button>\\n            <button\\n              authorization=\\\"K8sApplicationDetailsW\\\"\\n              ng-if=\\\"ctrl.isExternalApplication()\\\"\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light\\\"\\n              ui-sref=\\\"kubernetes.applications.application.edit\\\"\\n              style=\\\"margin-left: 0\\\"\\n              data-cy=\\\"k8sAppDetail-editAppButton\\\"\\n            >\\n              <pr-icon icon=\\\"'code'\\\" class-name=\\\"'mr-1'\\\" feather=\\\"true\\\"></pr-icon>Edit External application\\n            </button>\\n            <button\\n              ng-if=\\\"ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD\\\"\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light\\\"\\n              style=\\\"margin-left: 0\\\"\\n              ng-click=\\\"ctrl.redeployApplication()\\\"\\n              data-cy=\\\"k8sAppDetail-redeployButton\\\"\\n            >\\n              <pr-icon icon=\\\"'rotate-cw'\\\" class=\\\"'mr-1'\\\" feather=\\\"true\\\"></pr-icon>Redeploy\\n            </button>\\n            <button\\n              ng-if=\\\"!ctrl.isExternalApplication()\\\"\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-sm btn-light\\\"\\n              style=\\\"margin-left: 0\\\"\\n              ng-click=\\\"ctrl.rollbackApplication()\\\"\\n              ng-disabled=\\\"ctrl.application.Revisions.length < 2 || ctrl.state.appType !== ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"\\n              data-cy=\\\"k8sAppDetail-rollbackButton\\\"\\n            >\\n              <pr-icon icon=\\\"'rotate-ccw'\\\" feather=\\\"true\\\" class=\\\"mr-1\\\"></pr-icon>Rollback to previous configuration\\n            </button>\\n            <a\\n              ng-if=\\\"ctrl.isStack() && ctrl.stackFileContent\\\"\\n              class=\\\"btn btn-sm btn-primary space-left\\\"\\n              ui-sref=\\\"kubernetes.templates.custom.new({fileContent: ctrl.stackFileContent})\\\"\\n            >\\n              <pr-icon icon=\\\"'plus'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>Create template from application\\n            </a>\\n          </div>\\n\\n          <!-- ACCESSING APPLICATION -->\\n          <div class=\\\"text-muted\\\" style=\\\"margin-bottom: 15px\\\"> <pr-icon icon=\\\"'external-link'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>Accessing the application </div>\\n\\n          <div class=\\\"small text-muted\\\" ng-if=\\\"ctrl.application.PublishedPorts.length === 0\\\" style=\\\"margin-bottom: 15px\\\">\\n            <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>This application is not exposing any port.\\n          </div>\\n\\n          <div ng-if=\\\"ctrl.application.Services.length !== 0\\\">\\n            <!-- Services notice -->\\n            <div>\\n              <div class=\\\"small text-muted\\\">\\n                <p> <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>This application is exposed through service(s) as below: </p>\\n              </div>\\n            </div>\\n\\n            <!-- table -->\\n            <kubernetes-application-services-table\\n              services=\\\"ctrl.application.Services\\\"\\n              namespaces=\\\"ctrl.allNamespaces\\\"\\n              application=\\\"ctrl.application\\\"\\n              public-url=\\\"ctrl.state.publicUrl\\\"\\n            ></kubernetes-application-services-table>\\n            <!-- table -->\\n\\n            <!-- table -->\\n            <kubernetes-application-ingress-table application=\\\"ctrl.application\\\" public-url=\\\"ctrl.state.publicUrl\\\"></kubernetes-application-ingress-table>\\n            <!-- table -->\\n          </div>\\n          <!-- !ACCESSING APPLICATION -->\\n          <!-- AUTO SCALING -->\\n          <div class=\\\"text-muted\\\" style=\\\"margin-bottom: 15px\\\"> <pr-icon icon=\\\"'move'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>Auto-scaling </div>\\n\\n          <div class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.application.AutoScaler\\\" style=\\\"margin-bottom: 15px\\\">\\n            <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n            This application does not have an autoscaling policy defined.\\n          </div>\\n\\n          <div ng-if=\\\"ctrl.application.AutoScaler\\\">\\n            <div style=\\\"margin-top: 15px; width: 50%\\\">\\n              <table class=\\\"table\\\">\\n                <tbody>\\n                  <tr class=\\\"text-muted\\\">\\n                    <td style=\\\"width: 33%\\\">Minimum instances</td>\\n                    <td style=\\\"width: 33%\\\">Maximum instances</td>\\n                    <td style=\\\"width: 33%\\\">\\n                      Target CPU usage\\n                      <portainer-tooltip message=\\\"'The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.'\\\">\\n                      </portainer-tooltip>\\n                    </td>\\n                  </tr>\\n                  <tr>\\n                    <td data-cy=\\\"k8sAppDetail-minReplicas\\\">{{ ctrl.application.AutoScaler.MinReplicas }}</td>\\n                    <td data-cy=\\\"k8sAppDetail-maxReplicas\\\">{{ ctrl.application.AutoScaler.MaxReplicas }}</td>\\n                    <td data-cy=\\\"k8sAppDetail-targetCPU\\\">{{ ctrl.application.AutoScaler.TargetCPUUtilization }}%</td>\\n                  </tr>\\n                </tbody>\\n              </table>\\n            </div>\\n          </div>\\n          <!-- !AUTO SCALING -->\\n\\n          <!-- CONFIGURATIONS -->\\n          <div class=\\\"text-muted\\\" style=\\\"margin-bottom: 15px; margin-top: 25px\\\">\\n            <pr-icon icon=\\\"'file'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n            Configuration\\n          </div>\\n\\n          <div class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.application.Env.length > 0 && !ctrl.hasVolumeConfiguration()\\\" style=\\\"margin-bottom: 15px\\\">\\n            <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n            This application is not using any environment variable or configuration.\\n          </div>\\n\\n          <table class=\\\"table\\\" ng-if=\\\"ctrl.application.Env.length > 0\\\">\\n            <tr class=\\\"text-muted\\\">\\n              <td style=\\\"width: 25%\\\">容器</td>\\n              <td style=\\\"width: 25%\\\">Environment variable</td>\\n              <td style=\\\"width: 25%\\\">Value</td>\\n              <td style=\\\"width: 25%\\\">Configuration</td>\\n            </tr>\\n            <tbody ng-repeat=\\\"container in ctrl.application.Containers\\\" style=\\\"border-top: 0\\\">\\n              <tr ng-repeat=\\\"envvar in container.Env | orderBy: 'name'\\\">\\n                <td data-cy=\\\"k8sAppDetail-containerName\\\">\\n                  {{ container.Name }}\\n                  <span ng-if=\\\"container.Type === ctrl.KubernetesPodContainerTypes.INIT\\\"\\n                    ><pr-icon icon=\\\"'fa-asterisk'\\\"></pr-icon> {{ envvar.valueFrom.fieldRef.fieldPath }} (<a\\n                      href=\\\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\\\"\\n                      target=\\\"_blank\\\"\\n                      >init container</a\\n                    >)</span\\n                  >\\n                </td>\\n                <td data-cy=\\\"k8sAppDetail-envVarName\\\">{{ envvar.name }}</td>\\n                <td>\\n                  <span ng-if=\\\"envvar.value\\\" data-cy=\\\"k8sAppDetail-envVarValue\\\">{{ envvar.value }}</span>\\n                  <span ng-if=\\\"envvar.valueFrom.configMapKeyRef\\\" data-cy=\\\"k8sAppDetail-envVarValue\\\"\\n                    ><pr-icon icon=\\\"'key'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ envvar.valueFrom.configMapKeyRef.key }}</span\\n                  >\\n                  <span ng-if=\\\"envvar.valueFrom.secretKeyRef\\\" data-cy=\\\"k8sAppDetail-envVarValue\\\"\\n                    ><pr-icon icon=\\\"'key'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ envvar.valueFrom.secretKeyRef.key }}</span\\n                  >\\n                  <span ng-if=\\\"envvar.valueFrom.fieldRef\\\" data-cy=\\\"k8sAppDetail-envVarValue\\\"\\n                    ><pr-icon icon=\\\"'fa-asterisk'\\\"></pr-icon> {{ envvar.valueFrom.fieldRef.fieldPath }} (<a\\n                      href=\\\"https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api\\\"\\n                      target=\\\"_blank\\\"\\n                      >downward API</a\\n                    >)</span\\n                  >\\n                  <span ng-if=\\\"!envvar.value && !envvar.valueFrom.secretKeyRef && !envvar.valueFrom.configMapKeyRef && !envvar.valueFrom.fieldRef\\\">-</span>\\n                </td>\\n                <td>\\n                  <span ng-if=\\\"envvar.value || envvar.valueFrom.fieldRef || (!envvar.valueFrom.secretKeyRef && !envvar.valueFrom.configMapKeyRef)\\\">-</span>\\n                  <span ng-if=\\\"envvar.valueFrom.configMapKeyRef\\\" data-cy=\\\"k8sAppDetail-configName\\\"\\n                    ><a ui-sref=\\\"kubernetes.configurations.configuration({ name: envvar.valueFrom.configMapKeyRef.name, namespace: ctrl.application.ResourcePool })\\\"\\n                      ><pr-icon icon=\\\"'file'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ envvar.valueFrom.configMapKeyRef.name }}</a\\n                    ></span\\n                  >\\n                  <span ng-if=\\\"envvar.valueFrom.secretKeyRef\\\" data-cy=\\\"k8sAppDetail-configName\\\"\\n                    ><a ui-sref=\\\"kubernetes.configurations.configuration({ name: envvar.valueFrom.secretKeyRef.name, namespace: ctrl.application.ResourcePool })\\\"\\n                      ><pr-icon icon=\\\"'file'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ envvar.valueFrom.secretKeyRef.name }}</a\\n                    ></span\\n                  >\\n                </td>\\n              </tr>\\n            </tbody>\\n          </table>\\n\\n          <table class=\\\"table\\\" ng-if=\\\"ctrl.hasVolumeConfiguration()\\\">\\n            <tr class=\\\"text-muted\\\">\\n              <td style=\\\"width: 25%\\\">容器</td>\\n              <td style=\\\"width: 25%\\\">Configuration path</td>\\n              <td style=\\\"width: 25%\\\">Value</td>\\n              <td style=\\\"width: 25%\\\">Configuration</td>\\n            </tr>\\n            <tbody ng-repeat=\\\"container in ctrl.application.Containers\\\" style=\\\"border-top: 0\\\">\\n              <tr ng-repeat=\\\"volume in container.ConfigurationVolumes track by $index\\\" style=\\\"border-top: 0\\\">\\n                <td>\\n                  {{ container.Name }}\\n                  <span ng-if=\\\"container.Type === ctrl.KubernetesPodContainerTypes.INIT\\\"\\n                    ><pr-icon icon=\\\"'fa-asterisk'\\\"></pr-icon> {{ envvar.valueFrom.fieldRef.fieldPath }} (<a\\n                      href=\\\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\\\"\\n                      target=\\\"_blank\\\"\\n                      >init container</a\\n                    >)</span\\n                  >\\n                </td>\\n                <td>\\n                  {{ volume.fileMountPath }}\\n                </td>\\n                <td>\\n                  <pr-icon icon=\\\"'plus'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\" ng-if=\\\"volume.configurationKey\\\"></pr-icon>\\n                  {{ volume.configurationKey ? volume.configurationKey : '-' }}\\n                </td>\\n                <td>\\n                  <a ui-sref=\\\"kubernetes.configurations.configuration({ name: volume.configurationName, namespace: ctrl.application.ResourcePool })\\\"\\n                    ><pr-icon icon=\\\"'plus'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ volume.configurationName }}</a\\n                  >\\n                </td>\\n              </tr>\\n            </tbody>\\n          </table>\\n          <!-- !CONFIGURATIONS -->\\n\\n          <!-- DATA PERSISTENCE -->\\n          <div class=\\\"text-muted\\\" style=\\\"margin-bottom: 15px; margin-top: 25px\\\">\\n            <pr-icon icon=\\\"'database'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n            Data persistence\\n          </div>\\n\\n          <div class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.hasPersistedFolders()\\\">\\n            <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>\\n            This application has no persisted folders.\\n          </div>\\n\\n          <div ng-if=\\\"ctrl.hasPersistedFolders()\\\">\\n            <div class=\\\"small text-muted vertical-center\\\" style=\\\"margin-bottom: 15px\\\">\\n              Data access policy:\\n              <pr-icon icon=\\\"ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyIcon\\\" feather=\\\"true\\\"></pr-icon>\\n              {{ ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyText }}\\n              <portainer-tooltip position=\\\"'right'\\\" message=\\\"ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyTooltip\\\"> </portainer-tooltip>\\n            </div>\\n\\n            <table class=\\\"table\\\" ng-if=\\\"ctrl.application.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.SHARED\\\">\\n              <tr class=\\\"text-muted\\\">\\n                <td style=\\\"width: 33%\\\">Persisted folder</td>\\n                <td style=\\\"width: 66%\\\">Persistence</td>\\n              </tr>\\n              <tbody ng-repeat=\\\"container in ctrl.application.Containers\\\" style=\\\"border-top: 0\\\">\\n                <tr ng-repeat=\\\"volume in container.PersistedFolders track by $index\\\">\\n                  <td data-cy=\\\"k8sAppDetail-volMountPath\\\">\\n                    {{ volume.MountPath }}\\n                  </td>\\n                  <td ng-if=\\\"volume.PersistentVolumeClaimName\\\">\\n                    <a\\n                      class=\\\"hyperlink\\\"\\n                      ui-sref=\\\"kubernetes.volumes.volume({ name: volume.PersistentVolumeClaimName, namespace: ctrl.application.ResourcePool })\\\"\\n                      data-cy=\\\"k8sAppDetail-volClaimName\\\"\\n                      ><pr-icon icon=\\\"'database'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ volume.PersistentVolumeClaimName }}</a\\n                    >\\n                  </td>\\n                  <td ng-if=\\\"volume.HostPath\\\"> {{ volume.HostPath }} on host filesystem </td>\\n                </tr>\\n              </tbody>\\n            </table>\\n\\n            <table class=\\\"table\\\" ng-if=\\\"ctrl.application.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.ISOLATED\\\">\\n              <thead>\\n                <tr class=\\\"text-muted\\\">\\n                  <td style=\\\"width: 25%\\\">Container name</td>\\n                  <td style=\\\"width: 25%\\\">Pod name</td>\\n                  <td style=\\\"width: 25%\\\">Persisted folder</td>\\n                  <td style=\\\"width: 25%\\\">Persistence</td>\\n                </tr>\\n              </thead>\\n              <tbody ng-repeat=\\\"container in ctrl.allContainers track by $index\\\" style=\\\"border-top: none\\\">\\n                <tr ng-repeat=\\\"volume in container.PersistedFolders track by $index\\\">\\n                  <td>\\n                    {{ container.Name }}\\n                    <span ng-if=\\\"container.Type === ctrl.KubernetesPodContainerTypes.INIT\\\"\\n                      ><pr-icon icon=\\\"'fa-asterisk'\\\"></pr-icon> {{ envvar.valueFrom.fieldRef.fieldPath }} (<a\\n                        href=\\\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\\\"\\n                        target=\\\"_blank\\\"\\n                        >init container</a\\n                      >)</span\\n                    >\\n                  </td>\\n                  <td>{{ container.PodName }}</td>\\n                  <td>\\n                    {{ volume.MountPath }}\\n                  </td>\\n                  <td ng-if=\\\"volume.PersistentVolumeClaimName\\\">\\n                    <a\\n                      class=\\\"hyperlink\\\"\\n                      ui-sref=\\\"kubernetes.volumes.volume({ name: volume.PersistentVolumeClaimName + '-' + container.PodName, namespace: ctrl.application.ResourcePool })\\\"\\n                    >\\n                      <pr-icon icon=\\\"'database'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\"></pr-icon>{{ volume.PersistentVolumeClaimName + '-' + container.PodName }}</a\\n                    >\\n                  </td>\\n                  <td ng-if=\\\"volume.HostPath\\\"> {{ volume.HostPath }} on host filesystem </td>\\n                </tr>\\n              </tbody>\\n            </table>\\n            <!-- !DATA PERSISTENCE -->\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-containers-datatable\\n        title-text=\\\"Application containers\\\"\\n        title-icon=\\\"server\\\"\\n        dataset=\\\"ctrl.allContainers\\\"\\n        table-key=\\\"kubernetes.application.containers\\\"\\n        is-pod=\\\"ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD\\\"\\n        order-by=\\\"{{ ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD ? 'Name' : 'PodName' }}\\\"\\n        use-server-metrics=\\\"ctrl.state.useServerMetrics\\\"\\n      >\\n      </kubernetes-containers-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/application.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///45758\n");

}),

70881:

(function(module) {

eval("var _module_exports = \"<div style=\\\"margin-top: 15px\\\" ng-if=\\\"$ctrl.hasIngress\\\">\\n  <table class=\\\"table\\\">\\n    <tbody>\\n      <tr class=\\\"text-muted\\\">\\n        <td style=\\\"width: 15%\\\">Ingress name</td>\\n        <td style=\\\"width: 10%\\\">Service name</td>\\n        <td style=\\\"width: 10%\\\">主机</td>\\n        <td style=\\\"width: 10%\\\">Port</td>\\n        <td style=\\\"width: 10%\\\">Path</td>\\n        <td style=\\\"width: 15%\\\">HTTP Route</td>\\n      </tr>\\n      <tr ng-repeat=\\\"ingress in $ctrl.applicationIngress\\\">\\n        <td\\n          ><a authorization=\\\"K8sIngressesW\\\" ui-sref=\\\"kubernetes.ingresses.edit({ name: ingress.IngressName, namespace: $ctrl.application.ResourcePool })\\\">{{\\n            ingress.IngressName\\n          }}</a></td\\n        >\\n        <td>{{ ingress.ServiceName }}</td>\\n        <td>{{ ingress.Host }}</td>\\n        <td>{{ ingress.Port }}</td>\\n        <td>{{ ingress.Path }}</td>\\n        <td\\n          ><a target=\\\"_blank\\\" href=\\\"{{ ingress.Secure ? 'https' : 'http' }}://{{ ingress.Host }}{{ ingress.Path }}\\\">{{ ingress.Host }}{{ ingress.Path }}</a></td\\n        >\\n      </tr>\\n    </tbody>\\n  </table>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/components/ingress-table/ingress-table.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///70881\n");

}),

83260:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <div class=\\\"toolBar\\\">\\n    <div class=\\\"toolBarTitle flex\\\">\\n      <div class=\\\"widget-icon space-right\\\">\\n        <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n      </div>\\n      <span class=\\\"vertical-center\\\">\\n        {{ $ctrl.titleText }}\\n      </span>\\n    </div>\\n    <div class=\\\"searchBar\\\">\\n      <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" feather=\\\"true\\\"></pr-icon>\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"searchInput ml-1\\\"\\n        ng-model=\\\"$ctrl.state.textFilter\\\"\\n        ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n        placeholder=\\\"Search for a node...\\\"\\n        auto-focus\\n        ng-model-options=\\\"{ debounce: 300 }\\\"\\n      />\\n    </div>\\n    <div class=\\\"settings\\\">\\n      <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n        <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n        <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n          <div class=\\\"tableMenu\\\">\\n            <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n            <div class=\\\"menuContent\\\">\\n              <div>\\n                <div class=\\\"md-checkbox\\\">\\n                  <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                  <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                </div>\\n                <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                  <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                  <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                    <option value=\\\"10\\\">10s</option>\\n                    <option value=\\\"30\\\">30s</option>\\n                    <option value=\\\"60\\\">1min</option>\\n                    <option value=\\\"120\\\">2min</option>\\n                    <option value=\\\"300\\\">5min</option>\\n                  </select>\\n                  <span>\\n                    <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n            <div>\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n            </div>\\n          </div>\\n        </div>\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive border-none\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th style=\\\"width: 2%\\\">\\n            <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n              <pr-icon icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" ng-if=\\\"$ctrl.state.expandAll\\\"></pr-icon>\\n              <pr-icon icon=\\\"'chevron-up'\\\" feather=\\\"true\\\" ng-if=\\\"!$ctrl.state.expandAll\\\"></pr-icon>\\n            </a>\\n          </th>\\n          <th style=\\\"width: 98%\\\">\\n            <table-column-header\\n              col-title=\\\"'Node'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Node'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Node' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Node')\\\"\\n            ></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter: $ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n          ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <td>\\n            <a ng-if=\\\"$ctrl.itemCanExpand(item)\\\">\\n              <pr-icon icon=\\\"'chevron-down'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\" ng-if=\\\"item.Expanded\\\"></pr-icon>\\n              <pr-icon icon=\\\"'chevron-up'\\\" class=\\\"mr-1\\\" feather=\\\"true\\\" ng-if=\\\"!item.Expanded\\\"></pr-icon>\\n            </a>\\n            <pr-icon icon=\\\"'check'\\\" ng-if=\\\"item.AcceptsApplication\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n            <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!item.AcceptsApplication\\\" mode=\\\"'error'\\\" feather=\\\"true\\\"></pr-icon>\\n          </td>\\n          <td>\\n            {{ item.Name }}\\n          </td>\\n        </tr>\\n        <!-- ADMIN + UNMET TAINTS -->\\n        <tr\\n          ng-if=\\\"$ctrl.isAdmin\\\"\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat=\\\"taint in item.UnmetTaints\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td colspan=\\\"2\\\">\\n            This application is missing a toleration for the taint <code>{{ taint.Key }}{{ taint.Value ? '=' + taint.Value : '' }}:{{ taint.Effect }}</code>\\n          </td>\\n        </tr>\\n        <!-- !ADMIN + UNMET TAINTS -->\\n        <!-- USER + UNMET TAINTS -->\\n        <tr\\n          ng-if=\\\"!$ctrl.isAdmin && item.UnmetTaints.length\\\"\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td colspan=\\\"2\\\"> Placement constraint not respected for that node. </td>\\n        </tr>\\n        <!-- ! USER + UNMET TAINTS -->\\n        <!-- ADMIN + UNMET NODE SELECTOR LABELS -->\\n        <tr\\n          ng-if=\\\"$ctrl.isAdmin\\\"\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat=\\\"label in item.UnmatchedNodeSelectorLabels\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td colspan=\\\"2\\\">\\n            This application can only be scheduled on a node where the label <code>{{ label.key }}</code> is set to <code>{{ label.value }}</code>\\n          </td>\\n        </tr>\\n        <!-- ! ADMIN + UNMET NODE SELECTOR LABELS -->\\n        <!-- USER + UNMET NODE SELECTOR LABELS || UNMET NODE AFFINITIES -->\\n        <tr\\n          ng-if=\\\"!$ctrl.isAdmin && (item.UnmatchedNodeSelectorLabels.length || item.UnmatchedNodeAffinities.length)\\\"\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td colspan=\\\"2\\\"> Placement label not respected for that node. </td>\\n        </tr>\\n        <!-- ! USER + UNMET NODE SELECTOR LABELS || UNMET NODE AFFINITIES -->\\n        <!-- ADMIN + UNMET NODE AFFINITIES -->\\n        <tr\\n          ng-if=\\\"$ctrl.isAdmin\\\"\\n          ng-show=\\\"item.Expanded && item.UnmatchedNodeAffinities.length\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td colspan=\\\"2\\\"> This application can only be scheduled on nodes respecting one of the following labels combination: </td>\\n        </tr>\\n        <tr\\n          dir-paginate-end\\n          ng-if=\\\"$ctrl.isAdmin\\\"\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat=\\\"aff in item.UnmatchedNodeAffinities\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td></td>\\n          <td>\\n            <code ng-repeat-start=\\\"term in aff track by $index\\\">\\n              {{ term.key }} {{ term.operator }} {{ term.values | kubernetesApplicationConstraintNodeAffinityValue: term.operator }}\\n            </code>\\n            <span ng-repeat-end>{{ $last ? '' : ' + ' }}</span>\\n          </td>\\n        </tr>\\n        <!-- ! ADMIN + UNMET NODE AFFINITIES -->\\n        <tr ng-if=\\\"$ctrl.loading\\\">\\n          <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)\\\">\\n          <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">No node available.</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/components/placements-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83260\n");

}),

29262:

(function(module) {

eval("var _module_exports = \"<!-- table -->\\n<div style=\\\"margin-top: 15px\\\">\\n  <table class=\\\"table\\\">\\n    <tbody>\\n      <tr class=\\\"text-muted\\\">\\n        <td style=\\\"width: 15%\\\">Service name</td>\\n        <td style=\\\"width: 10%\\\">Type</td>\\n        <td style=\\\"width: 10%\\\">Cluster IP</td>\\n        <td style=\\\"width: 10%\\\">External IP</td>\\n        <td style=\\\"width: 10%\\\">Container port</td>\\n        <td style=\\\"width: 15%\\\">Service port(s)</td>\\n      </tr>\\n      <tr ng-repeat=\\\"service in $ctrl.services\\\">\\n        <td>{{ service.metadata.name }}</td>\\n        <td>{{ service.spec.type }}</td>\\n        <td>{{ service.spec.clusterIP }}</td>\\n        <td ng-show=\\\"service.spec.type === 'LoadBalancer'\\\">\\n          <div ng-show=\\\"service.status.loadBalancer.ingress\\\">\\n            <a class=\\\"vertical-center hyperlink\\\" target=\\\"_blank\\\" ng-href=\\\"http://{{ service.status.loadBalancer.ingress[0].ip }}:{{ service.spec.ports[0].port }}\\\">\\n              <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\"></pr-icon>\\n              <span data-cy=\\\"k8sAppDetail-containerPort\\\"> Access </span>\\n            </a>\\n          </div>\\n          <div ng-show=\\\"!service.status.loadBalancer.ingress\\\">\\n            {{ service.spec.externalIP ? service.spec.externalIP : 'pending...' }}\\n          </div>\\n        </td>\\n        <td ng-show=\\\"service.spec.type !== 'LoadBalancer'\\\">{{ service.spec.externalIP ? service.spec.externalIP : '-' }}</td>\\n\\n        <td data-cy=\\\"k8sAppDetail-containerPort\\\">\\n          <div ng-repeat=\\\"port in service.spec.ports\\\">{{ port.targetPort }}</div>\\n        </td>\\n        <td ng-if=\\\"!ctrl.portHasIngressRules(port)\\\">\\n          <div ng-repeat=\\\"port in service.spec.ports\\\">\\n            <a\\n              class=\\\"vertical-center hyperlink\\\"\\n              ng-if=\\\"$ctrl.publicUrl && port.nodePort\\\"\\n              ng-href=\\\"http://{{ $ctrl.publicUrl }}:{{ port.nodePort }}\\\"\\n              target=\\\"_blank\\\"\\n              style=\\\"margin-left: 5px\\\"\\n            >\\n              <pr-icon icon=\\\"'external-link'\\\" feather=\\\"true\\\"></pr-icon>\\n              <span data-cy=\\\"k8sAppDetail-containerPort\\\">\\n                {{ port.port }}\\n              </span>\\n              <span>{{ port.nodePort ? ':' : '' }}</span>\\n              <span data-cy=\\\"k8sAppDetail-nodePort\\\"> {{ port.nodePort }}/{{ port.protocol }} </span>\\n            </a>\\n\\n            <div ng-if=\\\"!$ctrl.publicUrl\\\">\\n              <span data-cy=\\\"k8sAppDetail-servicePort\\\">\\n                {{ port.port }}\\n              </span>\\n              <span>{{ port.nodePort ? ':' : '' }}</span>\\n              <span data-cy=\\\"k8sAppDetail-nodePort\\\"> {{ port.nodePort }}/{{ port.protocol }} </span>\\n            </div>\\n          </div>\\n        </td>\\n      </tr>\\n    </tbody>\\n  </table>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/components/services-table/services-table.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///29262\n");

}),

21152:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"$ctrl.state.viewReady\\\"\\n  title=\\\"'Helm details'\\\"\\n  breadcrumbs=\\\"[{label:'Applications', link:'kubernetes.applications'}, $ctrl.state.params.name]\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"$ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"$ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 p-5 flex-wrap w-full\\\">\\n          <div class=\\\"toolBarTitle vertical-center\\\">\\n            <div class=\\\"widget-icon space-right\\\">\\n              <pr-icon icon=\\\"'svg-helm'\\\"></pr-icon>\\n            </div>\\n\\n            Release\\n          </div>\\n        </div>\\n        <div class=\\\"toolBarTitle text-muted small vertical-center px-5 !gap-0\\\">\\n          <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'!mr-1'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n          This is a first version for Helm charts, for more information see this&nbsp;\\n          <a href=\\\"https://www.portainer.io/blog/portainer-now-with-helm-support\\\" target=\\\"_blank\\\" class=\\\"hyperlink\\\">blog post</a>.\\n        </div>\\n        <rd-widget-body>\\n          <table class=\\\"table\\\">\\n            <tbody class=\\\"release-table\\\">\\n              <tr>\\n                <td class=\\\"vertical-center !pl-0\\\">名称</td>\\n                <td class=\\\"vertical-center !p-2\\\">\\n                  {{ $ctrl.state.release.name }}\\n                </td>\\n              </tr>\\n              <tr>\\n                <td class=\\\"vertical-center !pl-0\\\">Chart</td>\\n                <td class=\\\"vertical-center !p-2\\\">\\n                  {{ $ctrl.state.release.chart }}\\n                </td>\\n              </tr>\\n              <tr>\\n                <td class=\\\"vertical-center !pl-0\\\">App version</td>\\n                <td class=\\\"vertical-center !p-2\\\">\\n                  {{ $ctrl.state.release.app_version }}\\n                </td>\\n              </tr>\\n            </tbody>\\n          </table>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/helm/helm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///21152\n");

}),

28068:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'应用日志'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.application.ResourcePool,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.application.ResourcePool }\\n    },\\n    { label:'应用程序', link:'kubernetes.applications' },\\n    {\\n      label:ctrl.application.Name,\\n      link: 'kubernetes.applications.application',\\n      linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n    },\\n     'Pods',\\n     ctrl.podName,\\n     'Containers',\\n     ctrl.containerName,\\n     'Logs'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal row\\\" autocomplete=\\\"off\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n            <!-- auto-refresh -->\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n                自动刷新\\n                <portainer-tooltip message=\\\"'每5秒自动刷新一次日志'\\\"></portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <label class=\\\"switch\\\"> <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.state.autoRefresh\\\" ng-change=\\\"ctrl.updateAutoRefresh()\\\" /><span class=\\\"slider round\\\"></span> </label>\\n              </div>\\n            </div>\\n            <!-- !auto-refresh -->\\n            <!-- search -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"logs_search\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 搜索 </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input\\n                  class=\\\"form-control\\\"\\n                  type=\\\"text\\\"\\n                  name=\\\"logs_search\\\"\\n                  ng-model=\\\"ctrl.state.search\\\"\\n                  ng-change=\\\"ctrl.state.selectedLines.length = 0;\\\"\\n                  placeholder=\\\"筛选...\\\"\\n                  auto-focus\\n                />\\n              </div>\\n            </div>\\n            <!-- !search -->\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button class=\\\"btn btn-primary btn-sm !ml-0\\\" type=\\\"button\\\" ng-click=\\\"ctrl.downloadLogs()\\\">\\n                  <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon> 下载日志\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12 h-[max(400px,calc(100vh-380px))]\\\">\\n      <pre class=\\\"log_viewer widget\\\">\\n        <div ng-repeat=\\\"log in ctrl.state.filteredLogs = (ctrl.applicationLogs | filter:{ 'line': ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\"><span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n        <div ng-if=\\\"ctrl.applicationLogs.length && !ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有与 '{{ ctrl.state.search }}' 匹配的日志行</p></div>\\n        <div ng-if=\\\"ctrl.applicationLogs.length === 0\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有可用的日志</p></div></pre>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/logs/logs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///28068\n");

}),

96144:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'应用程序统计'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.state.transition.namespace,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.state.transition.namespace }\\n    },\\n    { label:'应用程序', link:'kubernetes.applications' },\\n    {\\n      label:ctrl.state.transition.applicationName,\\n      link: 'kubernetes.applications.application',\\n      linkParams:{ name: ctrl.state.transition.applicationName, namespace: ctrl.state.transition.namespace }\\n    },\\n     'Pods',\\n     ctrl.state.transition.podName,\\n     'Containers',\\n     ctrl.state.transition.containerName,\\n     'Stats'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <information-panel ng-if=\\\"!ctrl.state.getMetrics\\\" title-text=\\\"Unable to retrieve container metrics\\\">\\n    <span class=\\\"small text-warning vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n      Portainer无法检索到与该容器相关的任何度量。请联系你的管理员，以确保Kubernetes的指标功能配置正确。\\n    </span>\\n  </information-panel>\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n    <div class=\\\"col-md-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> 关于统计 </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-warning\\\">\\n                  该视图显示关于容器 <b>{{ ctrl.state.transition.containerName | trimcontainername }}</b\\n                  >的实时统计数据。\\n                </span>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> 刷新频率 </label>\\n              <div class=\\\"col-sm-3 col-md-2\\\">\\n                <select id=\\\"refreshRate\\\" ng-model=\\\"ctrl.state.refreshRate\\\" ng-change=\\\"ctrl.changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n                  <option value=\\\"30\\\">30s</option>\\n                  <option value=\\\"60\\\">60s</option>\\n                </select>\\n              </div>\\n              <span>\\n                <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n              </span>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.networkStatsUnavailable\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                  该容器的网络统计资料不可用。\\n                </span>\\n              </div>\\n            </div>\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n    <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'svg-memory'\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> 内存使用 </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n            <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n    <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\" ng-if=\\\"!ctrl.state.networkStatsUnavailable\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'cpu'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> CPU 使用 </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n            <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/stats/stats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///96144\n");

}),

21284:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Cluster'\\\" breadcrumbs=\\\"['Cluster information']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.isAdmin\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <!-- resource-reservation -->\\n          <form class=\\\"form-horizontal\\\" ng-if=\\\"ctrl.resourceReservation\\\">\\n            <kubernetes-resource-reservation\\n              description=\\\"Resource reservation represents the total amount of resource assigned to all the applications inside the cluster.\\\"\\n              cpu-reservation=\\\"ctrl.resourceReservation.CPU\\\"\\n              cpu-limit=\\\"ctrl.CPULimit\\\"\\n              memory-reservation=\\\"ctrl.resourceReservation.Memory\\\"\\n              memory-limit=\\\"ctrl.MemoryLimit\\\"\\n              display-usage=\\\"ctrl.hasResourceUsageAccess()\\\"\\n              cpu-usage=\\\"ctrl.resourceUsage.CPU\\\"\\n              memory-usage=\\\"ctrl.resourceUsage.Memory\\\"\\n            >\\n            </kubernetes-resource-reservation>\\n          </form>\\n          <!-- !resource-reservation -->\\n\\n          <!-- leader-status -->\\n          <div ng-if=\\\"ctrl.systemEndpoints.length > 0\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Leader status </div>\\n\\n            <table class=\\\"table\\\">\\n              <tbody>\\n                <tr class=\\\"text-muted\\\">\\n                  <td style=\\\"border-top: none; width: 25%\\\">Component</td>\\n                  <td style=\\\"border-top: none; width: 25%\\\">Leader node</td>\\n                </tr>\\n                <tr ng-repeat=\\\"ep in ctrl.systemEndpoints\\\">\\n                  <td style=\\\"width: 25%\\\">\\n                    {{ ep.Name }}\\n                  </td>\\n                  <td style=\\\"width: 25%\\\">\\n                    {{ ep.HolderIdentity }}\\n                  </td>\\n                </tr>\\n              </tbody>\\n            </table>\\n          </div>\\n          <!-- !leader-status -->\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-nodes-datatable\\n        title-text=\\\"Nodes\\\"\\n        title-icon=\\\"hard-drive\\\"\\n        dataset=\\\"ctrl.nodes\\\"\\n        table-key=\\\"kubernetes.nodes\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getNodes\\\"\\n        is-admin=\\\"ctrl.isAdmin\\\"\\n        use-server-metrics=\\\"ctrl.state.useServerMetrics\\\"\\n      ></kubernetes-nodes-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/cluster.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///21284\n");

}),

78928:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Node details'\\\" breadcrumbs=\\\"[{ label:'Cluster', link:'kubernetes.cluster' }, ctrl.node.Name]\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'hard-drive'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> Node </uib-tab-heading>\\n\\n              <form class=\\\"form-horizontal\\\" name=\\\"kubernetesNodeUpdateForm\\\" style=\\\"padding: 20px\\\" autocomplete=\\\"off\\\">\\n                <table class=\\\"table\\\">\\n                  <tbody ng-if=\\\"ctrl.node\\\">\\n                    <tr>\\n                      <td>Hostname</td>\\n                      <td>\\n                        {{ ctrl.node.Name }}\\n                        <span class=\\\"label label-primary image-tag\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"ctrl.node.Api\\\">api</span>\\n                      </td>\\n                    </tr>\\n                    <tr ng-if=\\\"ctrl.node.Api\\\">\\n                      <td> Kubernetes API </td>\\n                      <td>{{ ctrl.node.IPAddress }}:{{ ctrl.node.Port }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>Role</td>\\n                      <td>{{ ctrl.node.Role }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>Kubelet version</td>\\n                      <td>{{ ctrl.node.Version }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>Creation date</td>\\n                      <td>{{ ctrl.node.CreationDate | getisodate }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>Status</td>\\n                      <td>\\n                        <span class=\\\"label label-{{ ctrl.node.Status | kubernetesNodeStatusColor }}\\\">\\n                          {{ ctrl.node.Status }}\\n                        </span>\\n                        <span ng-if=\\\"ctrl.node.Status == 'Warning'\\\" class=\\\"text text-warning\\\">\\n                          {{ ctrl.node.Conditions | kubernetesNodeConditionsMessage }}\\n                        </span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td class=\\\"col-xs-3\\\"> Availability </td>\\n                      <td class=\\\"col-xs-9\\\">\\n                        <div class=\\\"flex flex-col\\\">\\n                          <select class=\\\"form-control\\\" name=\\\"availability\\\" style=\\\"display: inline-block; width: 16rem\\\" ng-model=\\\"ctrl.formValues.Availability\\\">\\n                            <option>{{ ctrl.availabilities.ACTIVE }}</option>\\n                            <option>{{ ctrl.availabilities.PAUSE }}</option>\\n                            <option>{{ ctrl.availabilities.DRAIN }}</option>\\n                          </select>\\n                          <div class=\\\"small text-warning vertical-center\\\" ng-if=\\\"ctrl.state.isDrainOperation && ctrl.formValues.Availability === ctrl.availabilities.DRAIN\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                            Cannot use this action while another node is currently being drained.\\n                          </div>\\n                          <div class=\\\"small text-warning vertical-center\\\" ng-if=\\\"ctrl.state.isContainPortainer && ctrl.formValues.Availability === ctrl.availabilities.DRAIN\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                            Cannot drain a node where this Portainer instance is running.\\n                          </div>\\n                        </div>\\n                      </td>\\n                    </tr>\\n                  </tbody>\\n                </table>\\n\\n                <div style=\\\"padding: 8px\\\">\\n                  <kubernetes-resource-reservation\\n                    ng-if=\\\"ctrl.resourceReservation\\\"\\n                    cpu-reservation=\\\"ctrl.resourceReservation.CPU\\\"\\n                    cpu-usage=\\\"ctrl.resourceUsage.CPU\\\"\\n                    cpu-limit=\\\"ctrl.node.CPU\\\"\\n                    memory-reservation=\\\"ctrl.resourceReservation.Memory\\\"\\n                    memory-usage=\\\"ctrl.resourceUsage.Memory\\\"\\n                    memory-limit=\\\"ctrl.memoryLimit\\\"\\n                    description=\\\"Resource reservation represents the total amount of resource assigned to all the applications running on this node.\\\"\\n                    display-usage=\\\"ctrl.hasResourceUsageAccess()\\\"\\n                  >\\n                  </kubernetes-resource-reservation>\\n                </div>\\n\\n                <div style=\\\"padding: 8px\\\">\\n                  <!-- #region labels -->\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Labels </div>\\n\\n                  <div style=\\\"margin-bottom: 10px\\\">\\n                    <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"ctrl.addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 增加标签 </span>\\n                  </div>\\n\\n                  <div class=\\\"form-inline py-1\\\" ng-repeat=\\\"label in ctrl.formValues.Labels\\\">\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: label.NeedsDeletion }\\\">\\n                      <span class=\\\"input-group-addon\\\">Key</span>\\n                      <input\\n                        type=\\\"text\\\"\\n                        class=\\\"form-control\\\"\\n                        name=\\\"label_key_{{ $index }}\\\"\\n                        ng-model=\\\"label.Key\\\"\\n                        ng-change=\\\"ctrl.onChangeLabelKey($index)\\\"\\n                        ng-disabled=\\\"ctrl.isSystemLabel($index)\\\"\\n                        required\\n                      />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: label.NeedsDeletion }\\\">\\n                      <span class=\\\"input-group-addon\\\">Value</span>\\n                      <input\\n                        type=\\\"text\\\"\\n                        class=\\\"form-control\\\"\\n                        name=\\\"label_value_{{ $index }}\\\"\\n                        ng-change=\\\"ctrl.onChangeLabel($index)\\\"\\n                        ng-model=\\\"label.Value\\\"\\n                        ng-disabled=\\\"ctrl.isSystemLabel($index)\\\"\\n                      />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n                      <div style=\\\"white-space: nowrap\\\">\\n                        <button\\n                          ng-if=\\\"!ctrl.isSystemLabel($index) && !label.NeedsDeletion\\\"\\n                          class=\\\"btn btn-sm btn-dangerlight btn-only-icon\\\"\\n                          type=\\\"button\\\"\\n                          ng-click=\\\"ctrl.removeLabel($index)\\\"\\n                        >\\n                          <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" mode=\\\"'error'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                        </button>\\n                        <button ng-if=\\\"!ctrl.isSystemLabel($index) && label.NeedsDeletion\\\" class=\\\"btn btn-sm btn-secondary\\\" type=\\\"button\\\" ng-click=\\\"ctrl.restoreLabel($index)\\\">\\n                          Restore\\n                        </button>\\n                        <span class=\\\"label label-warning label-sm image-tag\\\" ng-if=\\\"label.IsUsed && !ctrl.isSystemLabel($index)\\\" style=\\\"margin-left: 5px\\\">used</span>\\n                        <span class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemLabel($index)\\\" style=\\\"margin-left: 5px\\\">系统</span>\\n                      </div>\\n                    </div>\\n                    <div class=\\\"small mt-2 text-warning\\\" ng-show=\\\"kubernetesNodeUpdateForm['label_key_' + $index].$invalid || ctrl.state.duplicateLabelKeys[$index] !== undefined\\\">\\n                      <ng-messages for=\\\"kubernetesNodeUpdateForm['label_key_' + $index].$error\\\">\\n                        <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Label key is required. </p>\\n                      </ng-messages>\\n                      <p ng-if=\\\"ctrl.state.duplicateLabelKeys[$index] !== undefined\\\" class=\\\"vertical-center\\\">\\n                        <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> This label key is already defined.\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <!-- #endregion -->\\n\\n                  <!-- #region taints -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 20px\\\"> Taints </div>\\n\\n                  <div style=\\\"margin-bottom: 10px\\\">\\n                    <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"ctrl.addTaint()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> add taint </span>\\n                  </div>\\n\\n                  <div class=\\\"form-inline\\\" ng-repeat=\\\"taint in ctrl.formValues.Taints\\\" style=\\\"padding: 3px 0 3px 0\\\">\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n                      <span class=\\\"input-group-addon\\\">Key</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"taint_key_{{ $index }}\\\" ng-model=\\\"taint.Key\\\" ng-change=\\\"ctrl.onChangeTaintKey($index)\\\" required />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n                      <span class=\\\"input-group-addon\\\">Value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"taint_value_{{ $index }}\\\" ng-model=\\\"taint.Value\\\" ng-change=\\\"ctrl.onChangeTaint($index)\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n                      <span class=\\\"input-group-addon\\\">Effect</span>\\n                      <select\\n                        id=\\\"taint_effect_{{ $index }}\\\"\\n                        name=\\\"taint_effect_{{ $index }}\\\"\\n                        class=\\\"form-control\\\"\\n                        ng-model=\\\"taint.Effect\\\"\\n                        ng-change=\\\"ctrl.onChangeTaint($index)\\\"\\n                        ;\\n                        ng-options=\\\"effect as effect for effect in ctrl.availableEffects\\\"\\n                      ></select>\\n                    </div>\\n                    <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n                      <div>\\n                        <button ng-if=\\\"!taint.NeedsDeletion\\\" class=\\\"btn btn-sm btn-dangerlight btn-only-icon\\\" type=\\\"button\\\" ng-click=\\\"ctrl.removeTaint($index)\\\">\\n                          <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" mode=\\\"'error'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                        </button>\\n                        <button ng-if=\\\"taint.NeedsDeletion\\\" class=\\\"btn btn-sm btn-secondary\\\" type=\\\"button\\\" ng-click=\\\"ctrl.restoreTaint($index)\\\"> Restore </button>\\n                      </div>\\n                    </div>\\n                    <div\\n                      class=\\\"small text-warning\\\"\\n                      style=\\\"margin-top: 5px\\\"\\n                      ng-show=\\\"kubernetesNodeUpdateForm['taint_key_' + $index].$invalid || ctrl.state.duplicateTaintKeys[$index] !== undefined\\\"\\n                    >\\n                      <ng-messages for=\\\"kubernetesNodeUpdateForm['taint_key_' + $index].$error\\\">\\n                        <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Taint key is required. </p>\\n                      </ng-messages>\\n                      <p ng-if=\\\"ctrl.state.duplicateTaintKeys[$index] !== undefined\\\">\\n                        <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> This taint key is already defined.\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <!-- #endregion -->\\n\\n                  <!-- #region actions -->\\n\\n                  <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 20px\\\"> 操作 </div>\\n\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12\\\">\\n                      <button\\n                        class=\\\"btn btn-primary btn-sm\\\"\\n                        type=\\\"button\\\"\\n                        style=\\\"margin-left: 0\\\"\\n                        ng-click=\\\"ctrl.updateNode()\\\"\\n                        ng-disabled=\\\"kubernetesNodeUpdateForm.$invalid || !ctrl.isFormValid()\\\"\\n                      >\\n                        Update node\\n                      </button>\\n                      <button class=\\\"btn btn-default btn-sm\\\" type=\\\"button\\\" ng-click=\\\"ctrl.resetFormValues()\\\" ng-disabled=\\\"ctrl.isNoChangesMade()\\\"> Cancel </button>\\n                    </div>\\n                  </div>\\n\\n                  <!-- #endregion -->\\n                </div>\\n              </form>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading>\\n                <div class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'svg-clockrewind'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> Events </div>\\n                <div class=\\\"flex-center gap-1\\\" ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning-alt'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon>\\n                  {{ ctrl.state.eventWarningCount }} warning(s)\\n                </div>\\n              </uib-tab-heading>\\n              <kubernetes-events-datatable\\n                title-text=\\\"Events\\\"\\n                title-icon=\\\"icon-nested-blue\\\"\\n                dataset=\\\"ctrl.events\\\"\\n                table-key=\\\"kubernetes.node.events\\\"\\n                order-by=\\\"Date\\\"\\n                reverse-order=\\\"true\\\"\\n                loading=\\\"ctrl.state.eventsLoading\\\"\\n                refresh-callback=\\\"ctrl.getEvents\\\"\\n              >\\n              </kubernetes-events-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.node.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\">\\n                <div class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'code'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> YAML </div>\\n              </uib-tab-heading>\\n              <div style=\\\"padding-right: 25px\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n                <kubernetes-yaml-inspector key=\\\"node-yaml\\\" data=\\\"ctrl.node.Yaml\\\"> </kubernetes-yaml-inspector>\\n              </div>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.applications && ctrl.applications.length > 0\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-node-applications-datatable\\n        dataset=\\\"ctrl.applications\\\"\\n        table-key=\\\"kubernetes.node.applications\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getApplications\\\"\\n        loading=\\\"ctrl.state.applicationsLoading\\\"\\n        title-text=\\\"Applications running on this node\\\"\\n      >\\n      </kubernetes-node-applications-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/node/node.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///78928\n");

}),

49709:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Node stats'\\\"\\n  breadcrumbs=\\\"[\\n{ label:'Cluster', link:'kubernetes.cluster' },\\n{\\n  label:ctrl.state.transition.nodeName,\\n  link: 'kubernetes.cluster.node',\\n  linkParams:{name: ctrl.state.transition.nodeName}\\n},\\n ctrl.state.transition.nodeName,\\n ]\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <information-panel ng-if=\\\"!ctrl.state.getMetrics\\\" title-text=\\\"Unable to retrieve node metrics\\\">\\n    <span class=\\\"small text-muted vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n      Portainer was unable to retrieve any metrics associated to that node. Please contact your administrator to ensure that the Kubernetes metrics feature is properly configured.\\n    </span>\\n  </information-panel>\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n    <div class=\\\"col-md-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> About statistics </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\">\\n                  This view displays real-time statistics about the node <b>{{ ctrl.state.transition.nodeName }}</b\\n                  >.\\n                </span>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> 刷新频率 </label>\\n              <div class=\\\"col-sm-3 col-md-2\\\">\\n                <select id=\\\"refreshRate\\\" ng-model=\\\"ctrl.state.refreshRate\\\" ng-change=\\\"ctrl.changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n                  <option value=\\\"30\\\">30s</option>\\n                  <option value=\\\"60\\\">60s</option>\\n                </select>\\n              </div>\\n              <span>\\n                <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n              </span>\\n            </div>\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-show=\\\"ctrl.state.getMetrics\\\">\\n    <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'svg-memory'\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> Memory usage </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <div class=\\\"chart-node\\\" style=\\\"position: relative\\\">\\n            <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n    <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar pt-5 px-5\\\">\\n          <div class=\\\"toolBarTitle flex\\\">\\n            <pr-icon icon=\\\"'cpu'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class-name=\\\"'icon-nested-blue'\\\"></pr-icon>\\n            <span class=\\\"vertical-center\\\"> CPU usage </span>\\n          </div>\\n        </div>\\n        <rd-widget-body>\\n          <div class=\\\"chart-node\\\" style=\\\"position: relative\\\">\\n            <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/node/stats/stats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///49709\n");

}),

79773:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'ConfigMaps & Secrets list'\\\" breadcrumbs=\\\"['ConfigMaps & Secrets']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-configurations-datatable\\n        dataset=\\\"ctrl.configurations\\\"\\n        table-key=\\\"kubernetes.configurations\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.refreshCallback\\\"\\n        remove-action=\\\"ctrl.removeAction\\\"\\n      ></kubernetes-configurations-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/configurations.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///79773\n");

}),

5502:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Create configuration'\\\"\\n  breadcrumbs=\\\"[{ label:'ConfigMaps and Secrets', link:'kubernetes.configurations' }, 'Create a configuration']\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-xs-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n            <!-- name -->\\n            <div class=\\\"form-group mb-0\\\">\\n              <label for=\\\"configuration_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n              <div class=\\\"col-sm-8 col-lg-9 mb-0\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  name=\\\"configuration_name\\\"\\n                  ng-model=\\\"ctrl.formValues.Name\\\"\\n                  ng-pattern=\\\"/^[a-z0-9]([a-z0-9-.]{0,61}[a-z0-9])?$/\\\"\\n                  ng-change=\\\"ctrl.onChangeName()\\\"\\n                  placeholder=\\\"my-configuration\\\"\\n                  auto-focus\\n                  required\\n                  data-cy=\\\"k8sConfigCreate-nameInput\\\"\\n                />\\n                <div ng-show=\\\"kubernetesConfigurationCreationForm.configuration_name.$invalid || ctrl.state.alreadyExist\\\">\\n                  <div class=\\\"help-block small text-warning\\\">\\n                    <div ng-messages=\\\"kubernetesConfigurationCreationForm.configuration_name.$error\\\">\\n                      <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 本栏为必填项。</p>\\n                      <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\"\\n                        ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This field must consist of lower case alphanumeric\\n                        characters, '-' or '.', and contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n                      >\\n                    </div>\\n                    <p ng-if=\\\"ctrl.state.alreadyExist\\\" class=\\\"vertical-center\\\"\\n                      ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> A configuration with the same name already exists inside the selected\\n                      namespace.</p\\n                    >\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !name -->\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Namespace </div>\\n\\n            <!-- resource-pool -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n              <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Namespace</label>\\n              <div class=\\\"col-sm-8 col-lg-9\\\">\\n                <select\\n                  class=\\\"form-control\\\"\\n                  id=\\\"resource-pool-selector\\\"\\n                  ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n                  ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n                  ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n                  data-cy=\\\"k8sConfigCreate-namespaceDropdown\\\"\\n                ></select>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded()\\\">\\n              <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                This namespace has exhausted its resource capacity and you will not be able to deploy the configuration. Contact your administrator to expand the capacity of the\\n                namespace.\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n              <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n              </div>\\n            </div>\\n            <!-- !resource-pool -->\\n\\n            <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> Configuration kind </div>\\n\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12 small text-muted\\\"> Select the kind of data that you want to save in the configuration. </div>\\n              </div>\\n\\n              <!-- type options -->\\n              <div class=\\\"form-group px-[15px] mb-0\\\">\\n                <div class=\\\"boxselector_wrapper\\\">\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"type_basic\\\" ng-value=\\\"ctrl.KubernetesConfigurationKinds.CONFIGMAP\\\" ng-model=\\\"ctrl.formValues.Kind\\\" ng-change=\\\"ctrl.onChangeKind()\\\" />\\n                    <label for=\\\"type_basic\\\" data-cy=\\\"k8sConfigCreate-nonSensitiveButton\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'svg-filecode'\\\"></pr-icon>\\n                        ConfigMap\\n                      </div>\\n                      <p>This configuration holds non-sensitive information</p>\\n                    </label>\\n                  </div>\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"type_secret\\\" ng-value=\\\"ctrl.KubernetesConfigurationKinds.SECRET\\\" ng-model=\\\"ctrl.formValues.Kind\\\" ng-change=\\\"ctrl.onChangeKind()\\\" />\\n                    <label for=\\\"type_secret\\\" data-cy=\\\"k8sConfigCreate-sensitiveButton\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'lock'\\\" feather=\\\"true\\\"></pr-icon>\\n                        Secret\\n                      </div>\\n                      <p>This configuration holds sensitive information</p>\\n                    </label>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !type options -->\\n\\n              <div ng-if=\\\"ctrl.formValues.Kind === ctrl.KubernetesConfigurationKinds.SECRET\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span>\\n                      More information about types of secret can be found in the official\\n                      <a class=\\\"hyperlink\\\" href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#secret-types\\\" target=\\\"_blank\\\">kubernetes documentation</a>.\\n                    </span>\\n                  </div>\\n                </div>\\n\\n                <div class=\\\"form-group\\\">\\n                  <label for=\\\"configuration_data_type\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Type</label>\\n                  <div class=\\\"col-sm-8 col-lg-9\\\">\\n                    <select\\n                      class=\\\"form-control\\\"\\n                      id=\\\"configuration_data_type\\\"\\n                      ng-model=\\\"ctrl.formValues.Type\\\"\\n                      ng-options=\\\"value.value as value.name for (name, value) in ctrl.KubernetesSecretTypeOptions\\\"\\n                      ng-change=\\\"ctrl.onSecretTypeChange()\\\"\\n                    ></select>\\n\\n                    <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                  </div>\\n                  <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value\\\" class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span\\n                      >You should only create a service account token Secret object if you can't use the TokenRequest API to obtain a token, and the security exposure of persisting\\n                      a non-expiring token credential in a readable API object is acceptable to you. <br />See\\n                      <a href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets\\\" target=\\\"_blank\\\">service account token secrets</a> in the\\n                      kubernetes documentation.</span\\n                    >\\n                  </div>\\n                  <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.DOCKERCFG.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span>Ensure the Secret data field contains a <code>.dockercfg</code> key whose value is content of a legacy <code>~/.dockercfg</code> file.</span>\\n                  </div>\\n                  <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span>Ensure the Secret data field contains a <code>.dockerconfigjson</code> key whose value is content of a <code>~/.docker/config.json</code> file.</span>\\n                  </div>\\n                  <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.TLS.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span>Ensure the Secret data field contains a <code>tls.key</code> key and a <code>tls.crt</code> key.</span>\\n                  </div>\\n                  <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n                    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <span\\n                      >Ensure the Secret data field contains a <code>token-id</code> key and a <code>token-secret</code> key. See\\n                      <a href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#bootstrap-token-secrets\\\" target=\\\"_blank\\\">bootstrap token secrets</a> in the kubernetes\\n                      documentation for optional keys.</span\\n                    >\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.CUSTOM.value\\\">\\n                  <label for=\\\"configuration_data_customtype\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Custom Type</label>\\n                  <div class=\\\"col-sm-8 col-lg-9\\\">\\n                    <input\\n                      type=\\\"text\\\"\\n                      name=\\\"custom_type\\\"\\n                      class=\\\"form-control\\\"\\n                      id=\\\"configuration_data_customtype\\\"\\n                      ng-model=\\\"ctrl.formValues.customType\\\"\\n                      ng-pattern=\\\"/^[a-z0-9]([a-z0-9-.]{0,61}[a-z0-9])?$/\\\"\\n                      required\\n                    />\\n                    <div ng-show=\\\"kubernetesConfigurationCreationForm.custom_type.$invalid\\\">\\n                      <div class=\\\"help-block small text-warning\\\">\\n                        <div ng-messages=\\\"kubernetesConfigurationCreationForm.custom_type.$error\\\">\\n                          <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 本栏为必填项。</p>\\n                          <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\"\\n                            ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This field must consist of lower case alphanumeric\\n                            characters, '-' or '.', and contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n                          >\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value\\\">\\n                  <label for=\\\"service_account\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Service Account</label>\\n                  <div class=\\\"col-sm-8 col-lg-9\\\">\\n                    <select\\n                      class=\\\"form-control\\\"\\n                      id=\\\"service_account\\\"\\n                      ng-selected=\\\"$first\\\"\\n                      ng-model=\\\"ctrl.formValues.ServiceAccountName\\\"\\n                      ng-options=\\\"value.metadata.name as value.metadata.name for (name, value) in ctrl.availableServiceAccounts\\\"\\n                      data-cy=\\\"k8sConfigCreate-serviceAccountDropdown\\\"\\n                      ng-change=\\\"ctrl.onChangeServiceAccount()\\\"\\n                      required\\n                    ></select>\\n                    <div class=\\\"help-block small text-warning\\\" ng-messages=\\\"kubernetesConfigurationCreationForm.service_account.$error\\\">\\n                      <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>本栏为必填项。</p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <kubernetes-configuration-data\\n                ng-if=\\\"ctrl.formValues\\\"\\n                form-values=\\\"ctrl.formValues\\\"\\n                is-docker-config=\\\"ctrl.state.isDockerConfig\\\"\\n                is-valid=\\\"ctrl.state.isDataValid\\\"\\n                on-change-validation=\\\"ctrl.isFormValid()\\\"\\n                is-creation=\\\"true\\\"\\n                is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n              ></kubernetes-configuration-data>\\n\\n              <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.secretWarningMessage\\\">\\n                <div class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  <span>{{ ctrl.state.secretWarningMessage }}</span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <!-- summary -->\\n            <kubernetes-summary-view\\n              ng-if=\\\"!(!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress)\\\"\\n              form-values=\\\"ctrl.formValues\\\"\\n            ></kubernetes-summary-view>\\n\\n            <!-- actions -->\\n            <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> 操作 </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                  ng-disabled=\\\"!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress || !ctrl.formValues.ResourcePool\\\"\\n                  ng-click=\\\"ctrl.createConfiguration()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                  data-cy=\\\"k8sConfigCreate-CreateConfigButton\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Create {{ ctrl.formValues.Kind | kubernetesConfigurationKindText }}</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">正在创建中...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/create/createConfiguration.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///5502\n");

}),

61330:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Configuration details'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.configuration.Namespace,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.configuration.Namespace }\\n    },\\n    { label:'ConfigMaps and Secrets', link:'kubernetes.configurations' },\\n    ctrl.configuration.Name,\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\" data-cy=\\\"k8sConfigDetail-configTab\\\">\\n              <uib-tab-heading>\\n                <pr-icon icon=\\\"'svg-filecode'\\\"></pr-icon>\\n                Configuration\\n              </uib-tab-heading>\\n              <div style=\\\"padding: 20px\\\">\\n                <table class=\\\"table\\\" data-cy=\\\"k8sConfigDetail-configTable\\\">\\n                  <tbody>\\n                    <tr>\\n                      <td class=\\\"!pl-0 !border-none w-[40%]\\\">名称</td>\\n                      <td class=\\\"!border-none\\\">\\n                        {{ ctrl.configuration.Name }}\\n                        <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.configuration.IsRegistrySecret\\\">系统</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td class=\\\"!pl-0\\\">Namespace</td>\\n                      <td>\\n                        <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.configuration.Namespace })\\\">{{ ctrl.configuration.Namespace }}</a>\\n                        <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">系统</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td class=\\\"!pl-0\\\">Configuration kind</td>\\n                      <td>\\n                        {{ ctrl.configuration.Kind | kubernetesConfigurationKindText }}\\n                      </td>\\n                    </tr>\\n                    <tr ng-if=\\\"ctrl.secretTypeName\\\">\\n                      <td class=\\\"!pl-0\\\">Secret Type</td>\\n                      <td>\\n                        {{ ctrl.secretTypeName }}\\n                      </td>\\n                    </tr>\\n                  </tbody>\\n                </table>\\n              </div>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\" data-cy=\\\"k8sConfigDetail-eventsTab\\\">\\n              <uib-tab-heading>\\n                <pr-icon icon=\\\"'svg-clockrewind'\\\"></pr-icon>\\n                Events\\n                <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                  {{ ctrl.state.eventWarningCount }} warning(s)\\n                </div>\\n              </uib-tab-heading>\\n              <kubernetes-events-datatable\\n                title-text=\\\"Events\\\"\\n                title-icon=\\\"svg-clockrewind\\\"\\n                dataset=\\\"ctrl.events\\\"\\n                table-key=\\\"kubernetes.configuration.events\\\"\\n                order-by=\\\"Date\\\"\\n                reverse-order=\\\"true\\\"\\n                loading=\\\"ctrl.state.eventsLoading\\\"\\n                refresh-callback=\\\"ctrl.getEvents\\\"\\n              >\\n              </kubernetes-events-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.configuration.Yaml\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.showEditor()\\\" data-cy=\\\"k8sConfigDetail-yamlTab\\\">\\n              <uib-tab-heading>\\n                <pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon>\\n                YAML\\n              </uib-tab-heading>\\n              <div class=\\\"!pt-5 px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n                <kubernetes-yaml-inspector key=\\\"configuration-yaml\\\" data=\\\"ctrl.configuration.Yaml\\\"> </kubernetes-yaml-inspector>\\n              </div>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form ng-if=\\\"!ctrl.isSystemConfig()\\\" class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n            <kubernetes-configuration-data\\n              ng-if=\\\"ctrl.formValues\\\"\\n              form-values=\\\"ctrl.formValues\\\"\\n              is-docker-config=\\\"ctrl.state.isDockerConfig\\\"\\n              is-valid=\\\"ctrl.state.isDataValid\\\"\\n              on-change-validation=\\\"ctrl.isFormValid()\\\"\\n              is-creation=\\\"false\\\"\\n              is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n            ></kubernetes-configuration-data>\\n\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.secretWarningMessage\\\">\\n              <div class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                <span>{{ ctrl.state.secretWarningMessage }}</span>\\n              </div>\\n            </div>\\n\\n            <!-- summary -->\\n            <kubernetes-summary-view\\n              ng-if=\\\"!(!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress)\\\"\\n              form-values=\\\"ctrl.formValues\\\"\\n            ></kubernetes-summary-view>\\n\\n            <!-- actions -->\\n            <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> 操作 </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                  ng-disabled=\\\"!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress\\\"\\n                  ng-click=\\\"ctrl.updateConfiguration()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                  data-cy=\\\"k8sConfigDetail-updateConfig\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Update {{ ctrl.configuration.Kind | kubernetesConfigurationKindText }}</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">正在更新中...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n          <div ng-if=\\\"ctrl.isSystemConfig()\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Data </div>\\n            <table class=\\\"table\\\">\\n              <tbody>\\n                <tr class=\\\"text-muted\\\">\\n                  <td style=\\\"width: 10%; border-top: none\\\">Key</td>\\n                  <td style=\\\"width: 90%; border-top: none\\\">Value</td>\\n                </tr>\\n\\n                <tr ng-repeat=\\\"item in ctrl.formValues.Data track by $index\\\">\\n                  <td>{{ item.Key }}</td>\\n                  <td>\\n                    <div style=\\\"white-space: pre-wrap\\\">{{ item.Value }}</div>\\n                    <div style=\\\"margin-top: 2px\\\">\\n                      <span class=\\\"btn btn-primary btn-xs\\\" ng-click=\\\"ctrl.copyConfigurationValue($index)\\\">\\n                        <pr-icon icon=\\\"'copy'\\\" feather=\\\"true\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>Copy\\n                      </span>\\n                      <span id=\\\"copyValueNotification_{{ $index }}\\\" style=\\\"display: none; color: #23ae89; margin-left: 5px\\\" class=\\\"small\\\">\\n                        <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon> copied\\n                      </span>\\n                    </div>\\n                  </td>\\n                </tr>\\n              </tbody>\\n            </table>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.configuration.Used\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-integrated-applications-datatable\\n        dataset=\\\"ctrl.configuration.Applications\\\"\\n        table-key=\\\"kubernetes.configurations.applications\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getApplications\\\"\\n        title-text=\\\"Applications using this configuration\\\"\\n        title-icon=\\\"svg-laptopcode\\\"\\n      >\\n      </kubernetes-integrated-applications-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/edit/configuration.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///61330\n");

}),

45315:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Kubernetes features configuration'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Environments', link:'portainer.endpoints' },\\n    {\\n      label:ctrl.endpoint.Name,\\n      link: 'portainer.endpoints.endpoint',\\n      linkParams:{id: ctrl.endpoint.Id}\\n    },\\n     'Kubernetes configuration'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" name=\\\"kubernetesClusterSetupForm\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 联网 </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 text-muted small\\\">\\n                <p> 启用负载平衡器功能将允许用户通过云提供商分配的外部IP地址暴露他们部署的应用程序。 </p>\\n                <p class=\\\"mt-1 vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  如果你想使用这个功能，请确保你的云供应商允许你创建负载平衡器。可能会产生费用。\\n                </p>\\n              </div>\\n\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left col-sm-5 col-lg-4 px-0\\\"> 允许用户使用外部负载平衡器 </label>\\n                <label class=\\\"switch col-sm-8 mb-0\\\">\\n                  <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.UseLoadBalancer\\\" /><span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-loadBalancerToggle\\\"></span>\\n                </label>\\n              </div>\\n            </div>\\n\\n            <ingress-class-datatable\\n              on-change-controllers=\\\"(ctrl.onChangeControllers)\\\"\\n              allow-none-ingress-class=\\\"ctrl.formValues.AllowNoneIngressClass\\\"\\n              ingress-controllers=\\\"ctrl.originalIngressControllers\\\"\\n              is-loading=\\\"ctrl.isIngressControllersLoading\\\"\\n              description=\\\"'在你的集群中启用入口控制器，允许它们在Portainer用户界面中可用，以便用户通过HTTP/HTTPS发布应用程序。一个控制器必须有一个类名，才能被包含在这里'\\\"\\n              no-ingress-controller-label=\\\"'No supported ingress controllers found.'\\\"\\n              view=\\\"'cluster'\\\"\\n            ></ingress-class-datatable>\\n\\n            <label htmlFor=\\\"foldingButtonIngControllerSettings\\\" class=\\\"col-sm-12 form-section-title cursor-pointer flex items-center\\\">\\n              <button\\n                id=\\\"foldingButtonIngControllerSettings\\\"\\n                type=\\\"button\\\"\\n                class=\\\"border-0 mx-2 bg-transparent inline-flex justify-center items-center w-2 !ml-0\\\"\\n                ng-click=\\\"ctrl.toggleAdvancedIngSettings()\\\"\\n              >\\n                <pr-icon ng-if=\\\"!ctrl.state.isIngToggleSectionExpanded\\\" feather=\\\"true\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n                <pr-icon ng-if=\\\"ctrl.state.isIngToggleSectionExpanded\\\" feather=\\\"true\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n              </button>\\n              更多设置\\n            </label>\\n            <div ng-if=\\\"ctrl.state.isIngToggleSectionExpanded\\\" class=\\\"ml-4\\\">\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <por-switch-field\\n                    checked=\\\"ctrl.formValues.AllowNoneIngressClass\\\"\\n                    name=\\\"'allowNoIngressClass'\\\"\\n                    label=\\\"'允许将入口类设置为&quot;none&quot;'\\\"\\n                    tooltip=\\\"'这允许设置入口的用户选择&quot;none&quot;作为入口类别。'\\\"\\n                    on-change=\\\"(ctrl.onToggleAllowNoneIngressClass)\\\"\\n                    label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n                    switch-class=\\\"'col-sm-8'\\\"\\n                  >\\n                  </por-switch-field>\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <por-switch-field\\n                    checked=\\\"ctrl.formValues.IngressAvailabilityPerNamespace\\\"\\n                    name=\\\"'ingressAvailabilityPerNamespace'\\\"\\n                    label=\\\"'配置每个命名空间的接入控制器可用性'\\\"\\n                    tooltip=\\\"'这允许管理员在每个命名空间配置哪些入口控制器，供用户在为应用程序设置入口时选择。'\\\"\\n                    on-change=\\\"(ctrl.onToggleIngressAvailabilityPerNamespace)\\\"\\n                    label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n                    switch-class=\\\"'col-sm-8'\\\"\\n                  >\\n                  </por-switch-field>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <!-- auto update window -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 更改窗口设置 </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  checked=\\\"ctrl.state.autoUpdateSettings.Enabled\\\"\\n                  name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n                  label=\\\"'启用更改窗口'\\\"\\n                  feature-id=\\\"ctrl.limitedFeatureAutoWindow\\\"\\n                  tooltip=\\\"'在定义的变化窗口之外的堆栈或应用程序的自动更新将不会发生。'\\\"\\n                  on-change=\\\"(ctrl.onToggleAutoUpdate)\\\"\\n                  label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n                  switch-class=\\\"'col-sm-8 text-muted'\\\"\\n                >\\n                </por-switch-field>\\n              </div>\\n            </div>\\n\\n            <time-window-picker ng-show=\\\"ctrl.state.autoUpdateSettings.Enabled\\\" time-window=\\\"ctrl.state.autoUpdateSettings\\\" time-zone=\\\"ctrl.state.timeZone\\\"></time-window-picker>\\n\\n            <!-- #region SECURITY -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 安全 </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\">\\n                默认情况下，所有用户都有对默认命名空间的访问权。启用该选项可以设置对默认命名空间的访问。\\n              </span>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left col-sm-5 col-lg-4 px-0\\\"> 限制对默认命名空间的访问 </label>\\n                <label class=\\\"switch col-sm-8\\\">\\n                  <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.RestrictDefaultNamespace\\\" /><span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-restrictDefaultNsToggle\\\"></span>\\n                </label>\\n              </div>\\n            </div>\\n            <!-- #endregion -->\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 资源和指标 </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 text-muted small\\\">\\n                <p>\\n                  通过启用资源过度承诺，你能够为命名空间分配比集群中实际可用的更多资源。这可能会导致意外的\\n                  部署失败，如果没有足够的资源来满足需求。\\n                </p>\\n                <p class=\\\"mt-1 vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  通过禁用资源过度承诺（强烈推荐），你只能将资源分配给命名空间，这些资源（总和）小于集群总数\\n                  减去任何系统资源保留。\\n                </p>\\n              </div>\\n\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  data-cy=\\\"'kubeSetup-resourceOverCommitToggle'\\\"\\n                  label=\\\"'Allow resource over-commit'\\\"\\n                  name=\\\"'resource-over-commit-switch'\\\"\\n                  feature-id=\\\"ctrl.limitedFeature\\\"\\n                  checked=\\\"ctrl.formValues.EnableResourceOverCommit\\\"\\n                  on-change=\\\"(ctrl.onChangeEnableResourceOverCommit)\\\"\\n                  label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n                  switch-class=\\\"'col-sm-8'\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 text-muted small\\\">\\n                <p> 启用该功能将允许用户使用特定的功能，如自动缩放，并查看容器和节点的资源使用情况。 </p>\\n                <p class=\\\"vertical-center mt-1\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  确保 <a href=\\\"https://kubernetes.io/docs/tasks/debug-application-cluster/resource-metrics-pipeline/#metrics-server\\\" target=\\\"_blank\\\">metrics 服务</a> 或\\n                  <a href=\\\"https://github.com/kubernetes-sigs/prometheus-adapter\\\" target=\\\"_blank\\\">prometheus</a> 在你的集群内运行。\\n                </p>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left col-sm-5 col-lg-4 px-0\\\"> 使用 metrics API 启用功能</label>\\n                <label class=\\\"switch col-sm-8\\\">\\n                  <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.UseServerMetrics\\\" ng-change=\\\"ctrl.enableMetricsServer()\\\" />\\n                  <span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-metricsToggle\\\"></span>\\n                </label>\\n              </div>\\n              <div ng-if=\\\"ctrl.state.metrics.pending && ctrl.state.metrics.userClick\\\" class=\\\"col-sm-12 small text-muted\\\" style=\\\"margin-top: 5px\\\">\\n                检查metrics API... <pr-icon icon=\\\"'loader'\\\" feather=\\\"true\\\" class-name=\\\"'ml-0.5'\\\"></pr-icon>\\n              </div>\\n              <div\\n                ng-if=\\\"!ctrl.state.metrics.pending && ctrl.state.metrics.isServerRunning && ctrl.state.metrics.userClick\\\"\\n                class=\\\"col-sm-12 small text-muted vertical-center\\\"\\n                style=\\\"margin-top: 5px\\\"\\n              >\\n                <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon> 成功地达到指标API\\n              </div>\\n              <div\\n                ng-if=\\\"!ctrl.state.metrics.pending && !ctrl.state.metrics.isServerRunning && ctrl.state.metrics.userClick\\\"\\n                class=\\\"col-sm-12 small text-muted vertical-center mt-2\\\"\\n              >\\n                <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon> 无法访问metrics API，确保度量衡服务器正确部署在该集群内。\\n              </div>\\n            </div>\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 可用的存储选项 </div>\\n\\n            <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.storageClassAvailable()\\\">\\n              <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                无法检测到任何可用于持久化数据的存储类。用户将无法在这个集群内持久化应用数据。\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\">\\n                <p>\\n                  选择哪些存储选项在部署应用程序时可以使用。请看一下你的存储驱动文档，以弄清要配置哪种访问策略，以及是否支持卷扩展功能。\\n                  配置哪种访问策略，以及是否支持卷的扩展能力。\\n                </p>\\n                <p>\\n                  你可以在\\n                  <a href=\\\"https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes\\\" target=\\\"_blank\\\">Kubernetes官方文档</a>中找到更多关于访问模式的信息。\\n                </p>\\n              </span>\\n            </div>\\n\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n              <div style=\\\"margin-top: 10px\\\" class=\\\"col-sm-12\\\">\\n                <table class=\\\"table\\\" style=\\\"table-layout: fixed\\\">\\n                  <tbody>\\n                    <tr class=\\\"text-muted\\\">\\n                      <td>存储</td>\\n                      <td>共享访问政策</td>\\n                      <td>存储卷扩展</td>\\n                    </tr>\\n                    <tr ng-repeat=\\\"class in ctrl.StorageClasses\\\">\\n                      <td>\\n                        <div class=\\\"flex flex-row items-center h-full\\\">\\n                          <label class=\\\"switch mr-2 mb-0\\\">\\n                            <input type=\\\"checkbox\\\" ng-model=\\\"class.selected\\\" /><span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-storageToggle{{ class.Name }}\\\"></span>\\n                          </label>\\n                          <span>{{ class.Name }}</span>\\n                        </div>\\n                      </td>\\n                      <td>\\n                        <storage-access-mode-selector\\n                          options=\\\"ctrl.availableAccessModes\\\"\\n                          value=\\\"class.AccessModes\\\"\\n                          on-change=\\\"(ctrl.onChangeStorageClassAccessMode)\\\"\\n                          storage-class-name=\\\"class.Name\\\"\\n                        ></storage-access-mode-selector>\\n                      </td>\\n                      <td>\\n                        <div class=\\\"flex flex-row items-center h-full\\\">\\n                          <label class=\\\"switch mr-2 mb-0\\\"\\n                            ><input type=\\\"checkbox\\\" ng-model=\\\"class.AllowVolumeExpansion\\\" /><span\\n                              class=\\\"slider round\\\"\\n                              data-cy=\\\"kubeSetup-storageExpansionToggle{{ class.Name }}\\\"\\n                            ></span>\\n                          </label>\\n                        </div>\\n                      </td>\\n                    </tr>\\n                  </tbody>\\n                </table>\\n              </div>\\n              <div class=\\\"col-sm-12\\\">\\n                <span ng-if=\\\"!ctrl.hasValidStorageConfiguration()\\\" class=\\\"text-muted small vertical-center mt-2\\\">\\n                  <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  需要配置共享访问策略\\n                </span>\\n              </div>\\n            </div>\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                  ng-click=\\\"ctrl.configure()\\\"\\n                  ng-disabled=\\\"ctrl.state.actionInProgress || !kubernetesClusterSetupForm.$valid || !ctrl.hasValidStorageConfiguration()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                  analytics-on\\n                  analytics-if=\\\"ctrl.restrictDefaultToggledOn()\\\"\\n                  analytics-category=\\\"kubernetes\\\"\\n                  analytics-event=\\\"kubernetes-configure\\\"\\n                  analytics-properties=\\\"{ metadata: { restrictAccessToDefaultNamespace: ctrl.formValues.RestrictDefaultNamespace } }\\\"\\n                  data-cy=\\\"kubeSetup-saveConfigurationButton\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\">保存配置</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">保存配置中...</span>\\n                </button>\\n              </div>\\n            </div>\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configure/configure.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///45315\n");

}),

38947:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'仪表板'\\\" breadcrumbs=\\\"['环境总结']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.endpoint\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <div class=\\\"toolBar vertical-center w-full\\\">\\n          <div class=\\\"toolBarTitle vertical-center p-5\\\">\\n            <div class=\\\"widget-icon space-right\\\">\\n              <pr-icon icon=\\\"'svg-tachometer'\\\"></pr-icon>\\n            </div>\\n            环境信息\\n          </div>\\n        </div>\\n        <rd-widget-body classes=\\\"!px-5 !py-0\\\">\\n          <table class=\\\"table\\\">\\n            <tbody>\\n              <tr>\\n                <td class=\\\"!pl-0 !border-none\\\">环境</td>\\n                <td class=\\\"!border-none\\\">\\n                  {{ ctrl.endpoint.Name }}\\n                </td>\\n              </tr>\\n              <tr ng-if=\\\"ctrl.showEnvUrl\\\">\\n                <td class=\\\"!pl-0 !border-t\\\">URL</td>\\n                <td class=\\\"!border-t\\\">{{ ctrl.endpoint.URL | stripprotocol }}</td>\\n              </tr>\\n              <tr>\\n                <td class=\\\"!pl-0\\\">标记</td>\\n                <td>{{ ctrl.endpointTags }}</td>\\n              </tr>\\n            </tbody>\\n          </table>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"dashboard-grid mx-4\\\">\\n    <div ng-if=\\\"ctrl.pools\\\" data-cy=\\\"k8sDashboard-namespaces\\\">\\n      <a class=\\\"no-link\\\" ui-sref=\\\"kubernetes.resourcePools\\\">\\n        <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'layers'\\\" type=\\\"'Namespace'\\\" value=\\\"ctrl.pools.length\\\"></dashboard-item>\\n      </a>\\n    </div>\\n\\n    <div ng-if=\\\"ctrl.applications\\\" data-cy=\\\"k8sDashboard-applications\\\">\\n      <a class=\\\"no-link\\\" ui-sref=\\\"kubernetes.applications\\\">\\n        <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'box'\\\" type=\\\"'Application'\\\" value=\\\"ctrl.applications.length\\\"></dashboard-item>\\n      </a>\\n    </div>\\n    <div ng-if=\\\"ctrl.configurations\\\" data-cy=\\\"k8sDashboard-configurations\\\">\\n      <a class=\\\"no-link\\\" ui-sref=\\\"kubernetes.configurations\\\">\\n        <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'lock'\\\" type=\\\"'ConfigMaps & Secret'\\\" value=\\\"ctrl.configurations.length\\\"></dashboard-item>\\n      </a>\\n    </div>\\n    <div ng-if=\\\"ctrl.volumes\\\" data-cy=\\\"k8sDashboard-volumes\\\">\\n      <a class=\\\"no-link\\\" ui-sref=\\\"kubernetes.volumes\\\">\\n        <dashboard-item feather-icon=\\\"true\\\" icon=\\\"'database'\\\" type=\\\"'Volume'\\\" value=\\\"ctrl.volumes.length\\\"></dashboard-item>\\n      </a>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/dashboard/dashboard.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///38947\n");

}),

32635:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Advanced deployment'\\\" breadcrumbs=\\\"['Deploy Kubernetes resources']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <kubernetes-feedback-panel></kubernetes-feedback-panel>\\n\\n  <div class=\\\"row kubernetes-deploy\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\">\\n              <uib-tab-heading> <pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon> Deploy </uib-tab-heading>\\n              <div class=\\\"col-sm-12 form-section-title\\\"> Namespace </div>\\n              <form class=\\\"form-horizontal mt-3\\\" name=\\\"deploymentForm\\\">\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Namespace\\\">\\n                  <label for=\\\"target_node\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\">Namespace</label>\\n                  <div class=\\\"col-sm-8\\\">\\n                    <select\\n                      ng-disabled=\\\"ctrl.formValues.namespace_toggle\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"ctrl.formValues.Namespace\\\"\\n                      ng-options=\\\"namespace.Name as namespace.Name for namespace in ctrl.namespaces\\\"\\n                    ></select>\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Namespace\\\">\\n                  <label for=\\\"toggle_logo\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\">\\n                    Use namespace(s) specified from manifest\\n                    <portainer-tooltip message=\\\"'If you have defined namespaces in your deployment file turning this on will enforce the use of those only in the deployment'\\\">\\n                    </portainer-tooltip>\\n                  </label>\\n                  <div class=\\\"col-sm-8 vertical-center pt-3\\\">\\n                    <label class=\\\"switch\\\">\\n                      <input type=\\\"checkbox\\\" name=\\\"toggle_logo\\\" ng-model=\\\"ctrl.formValues.namespace_toggle\\\" />\\n                      <span class=\\\"slider round\\\"></span>\\n                    </label>\\n                    <!-- <span class=\\\"ml-2 mb-1 switch-values\\\" ng-if=\\\"ctrl.formValues.namespace_toggle\\\">Yes</span>\\n                    <span class=\\\"ml-2 mb-1 switch-values\\\" ng-if=\\\"!ctrl.formValues.namespace_toggle\\\">No</span> -->\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.Namespace\\\">\\n                  <div class=\\\"col-sm-12 small text-warning\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                    You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n                  </div>\\n                </div>\\n\\n                <div class=\\\"form-group\\\">\\n                  <label for=\\\"stack_name\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left required\\\">名称</label>\\n                  <div class=\\\"col-sm-8\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"ctrl.formValues.StackName\\\" id=\\\"stack_name\\\" placeholder=\\\"my-app\\\" auto-focus />\\n                  </div>\\n                </div>\\n\\n                <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n                <box-selector\\n                  radio-name=\\\"'method'\\\"\\n                  value=\\\"ctrl.state.BuildMethod\\\"\\n                  options=\\\"ctrl.methodOptions\\\"\\n                  data-cy=\\\"k8sAppDeploy-buildSelector\\\"\\n                  on-change=\\\"(ctrl.onChangeMethod)\\\"\\n                ></box-selector>\\n\\n                <div ng-if=\\\"ctrl.state.BuildMethod !== ctrl.BuildMethods.CUSTOM_TEMPLATE\\\">\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Deployment type </div>\\n                  <box-selector\\n                    radio-name=\\\"'deploy'\\\"\\n                    value=\\\"ctrl.state.DeployType\\\"\\n                    options=\\\"ctrl.deployOptions\\\"\\n                    data-cy=\\\"k8sAppDeploy-deploymentSelector\\\"\\n                    on-change=\\\"(ctrl.onChangeDeployType)\\\"\\n                  ></box-selector>\\n                </div>\\n\\n                <!-- repository -->\\n                <git-form\\n                  ng-if=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.GIT\\\"\\n                  model=\\\"ctrl.formValues\\\"\\n                  on-change=\\\"(ctrl.onChangeFormValues)\\\"\\n                  additional-file=\\\"true\\\"\\n                  auto-update=\\\"true\\\"\\n                  show-auth-explanation=\\\"true\\\"\\n                  path-text-title=\\\"Manifest path\\\"\\n                  path-placeholder=\\\"deployment.yml\\\"\\n                  deploy-method=\\\"{{ ctrl.DeployMethod }}\\\"\\n                ></git-form>\\n                <!-- !repository -->\\n\\n                <div ng-show=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.CUSTOM_TEMPLATE\\\">\\n                  <custom-template-selector\\n                    new-template-path=\\\"kubernetes.templates.custom.new\\\"\\n                    stack-type=\\\"3\\\"\\n                    on-change=\\\"(ctrl.onChangeTemplateId)\\\"\\n                    value=\\\"ctrl.state.templateId\\\"\\n                  ></custom-template-selector>\\n\\n                  <custom-templates-variables-field\\n                    ng-if=\\\"ctrl.isTemplateVariablesEnabled && ctrl.state.template\\\"\\n                    definitions=\\\"ctrl.state.template.Variables\\\"\\n                    value=\\\"ctrl.formValues.Variables\\\"\\n                    on-change=\\\"(ctrl.onChangeTemplateVariables)\\\"\\n                  ></custom-templates-variables-field>\\n                </div>\\n\\n                <!-- editor -->\\n                <div class=\\\"mt-4\\\">\\n                  <web-editor-form\\n                    ng-if=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.WEB_EDITOR || (ctrl.state.BuildMethod === ctrl.BuildMethods.CUSTOM_TEMPLATE && ctrl.state.templateId)\\\"\\n                    identifier=\\\"kubernetes-deploy-editor\\\"\\n                    value=\\\"ctrl.formValues.EditorContent\\\"\\n                    on-change=\\\"(ctrl.onChangeFileContent)\\\"\\n                    ng-required=\\\"true\\\"\\n                    yml=\\\"true\\\"\\n                    placeholder=\\\"# Define or paste the content of your manifest file here\\\"\\n                  >\\n                    <editor-description>\\n                      <span class=\\\"col-sm-12 text-muted small\\\" ng-show=\\\"ctrl.state.DeployType === ctrl.ManifestDeployTypes.COMPOSE\\\">\\n                        <p class=\\\"vertical-center\\\">\\n                          <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                          <span>\\n                            Portainer uses <a href=\\\"https://kompose.io/\\\" target=\\\"_blank\\\">Kompose</a> to convert your Compose manifest to a Kubernetes compliant manifest. Be wary\\n                            that not all the Compose format options are supported by Kompose at the moment.\\n                          </span>\\n                        </p>\\n                        <p>\\n                          You can get more information about Compose file format in the\\n                          <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">official documentation</a>.\\n                        </p>\\n                      </span>\\n                      <span class=\\\"col-sm-12 text-muted small\\\" ng-show=\\\"ctrl.state.DeployType === ctrl.ManifestDeployTypes.KUBERNETES\\\">\\n                        <p class=\\\"vertical-center\\\">\\n                          <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                          This feature allows you to deploy any kind of Kubernetes resource in this environment (Deployment, Secret, ConfigMap...).\\n                        </p>\\n                        <p>\\n                          You can get more information about Kubernetes file format in the\\n                          <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n                        </p>\\n                      </span>\\n                    </editor-description>\\n                  </web-editor-form>\\n                </div>\\n                <!-- !editor -->\\n\\n                <!-- url -->\\n                <div ng-show=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.URL\\\">\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> URL </div>\\n                  <div class=\\\"form-group\\\">\\n                    <span class=\\\"col-sm-12 text-muted small\\\"> Indicate the URL to the manifest. </span>\\n                  </div>\\n                  <div class=\\\"form-group\\\">\\n                    <label for=\\\"manifest_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">URL</label>\\n                    <div class=\\\"col-sm-8\\\">\\n                      <input\\n                        type=\\\"text\\\"\\n                        class=\\\"form-control\\\"\\n                        ng-model=\\\"ctrl.formValues.ManifestURL\\\"\\n                        id=\\\"manifest_url\\\"\\n                        placeholder=\\\"https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/controllers/nginx-deployment.yaml\\\"\\n                        data-cy=\\\"k8sAppDeploy-urlFileUrl\\\"\\n                      />\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- !url -->\\n\\n                <!-- actions -->\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <button\\n                      type=\\\"button\\\"\\n                      class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                      ng-disabled=\\\"!deploymentForm.$valid ||ctrl.disableDeploy()\\\"\\n                      ng-click=\\\"ctrl.deploy()\\\"\\n                      button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                      data-cy=\\\"k8sAppDeploy-deployButton\\\"\\n                      analytics-on\\n                      analytics-category=\\\"kubernetes\\\"\\n                      analytics-event=\\\"kubernetes-application-advanced-deployment\\\"\\n                      analytics-properties=\\\"ctrl.buildAnalyticsProperties()\\\"\\n                    >\\n                      <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Deploy</span>\\n                      <span ng-show=\\\"ctrl.state.actionInProgress\\\">部署进行中...</span>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !actions -->\\n              </form>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"1\\\" disable=\\\"ctrl.state.tabLogsDisabled\\\">\\n              <uib-tab-heading> <pr-icon icon=\\\"'file-text'\\\" feather=\\\"true\\\"></pr-icon> Logs </uib-tab-heading>\\n              <form class=\\\"form-horizontal mt-3\\\">\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.activeTab === 1\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <code-editor identifier=\\\"kubernetes-deploy-logs\\\" read-only=\\\"true\\\" yml=\\\"false\\\" value=\\\"ctrl.errorLog\\\"></code-editor>\\n                  </div>\\n                </div>\\n              </form>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/deploy/deploy.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///32635\n");

}),

9273:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Namespace access management'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.pool.Namespace.Name,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{id: ctrl.pool.Namespace.Name}\\n    },\\n     'Access management'\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.pool\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-header icon=\\\"layers\\\" feather-icon=\\\"true\\\" title-text=\\\"Namespace\\\"></rd-widget-header>\\n        <rd-widget-body>\\n          <table class=\\\"table\\\">\\n            <tbody>\\n              <tr>\\n                <td class=\\\"!pl-0\\\">名称</td>\\n                <td>\\n                  {{ ctrl.pool.Namespace.Name }}\\n                </td>\\n              </tr>\\n            </tbody>\\n          </table>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget ng-if=\\\"ctrl.availableUsersAndTeams\\\">\\n        <rd-widget-header icon=\\\"svg-userlock\\\" title-text=\\\"创建访问权限\\\"></rd-widget-header>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 small text-warning\\\">\\n                <p class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                  增加用户访问权限将要求受影响的用户退出并登录，以便考虑到这些变化。\\n                </p>\\n              </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" for=\\\"users-selector\\\"> 选择用户和/或团队 </label>\\n              <div class=\\\"col-sm-9 col-lg-4\\\">\\n                <span class=\\\"small text-muted\\\" ng-if=\\\"ctrl.availableUsersAndTeams.length === 0\\\">\\n                  环境上没有设置用户或团队的访问权限。请到\\n                  <a ui-sref=\\\"portainer.endpoints\\\">环境视图</a> 中去管理它们。\\n                </span>\\n                <namespace-access-users-selector\\n                  ng-if=\\\"ctrl.availableUsersAndTeams.length > 0\\\"\\n                  input-id=\\\"users-selector\\\"\\n                  value=\\\"ctrl.formValues.multiselectOutput\\\"\\n                  options=\\\"ctrl.availableUsersAndTeams\\\"\\n                  on-change=\\\"(ctrl.onUsersAndTeamsChange)\\\"\\n                ></namespace-access-users-selector>\\n              </div>\\n            </div>\\n\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0 vertical-center\\\"\\n                  ng-disabled=\\\"ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress\\\"\\n                  ng-click=\\\"ctrl.authorizeAccess()\\\"\\n                  button-spinner=\\\"ctrl.actionInProgress\\\"\\n                >\\n                  <span class=\\\"vertical-center\\\" ng-hide=\\\"ctrl.state.actionInProgress\\\"><pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\"></pr-icon> 创建访问</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">创建访问权限...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <access-datatable\\n        ng-if=\\\"ctrl.authorizedUsersAndTeams\\\"\\n        title-text=\\\"Namespace access\\\"\\n        title-icon=\\\"svg-userlock\\\"\\n        table-key=\\\"kubernetes_resourcepool_access\\\"\\n        order-by=\\\"Name\\\"\\n        dataset=\\\"ctrl.authorizedUsersAndTeams\\\"\\n        remove-action=\\\"ctrl.unauthorizeAccess\\\"\\n      >\\n      </access-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/access/resourcePoolAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9273\n");

}),

87925:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <por-switch-field\\n      data-cy=\\\"'k8sNamespaceCreate-enableQuotaToggle'\\\"\\n      label=\\\"'Enable quota'\\\"\\n      label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n      name=\\\"'k8s-resourcepool-storagequota'\\\"\\n      feature-id=\\\"$ctrl.featureId\\\"\\n      checked=\\\"$ctrl.value\\\"\\n      on-change=\\\"($ctrl.handleChange)\\\"\\n    ></por-switch-field>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///87925\n");

}),

28134:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"$ctrl.state.viewReady\\\"\\n  title=\\\"'Create a namespace'\\\"\\n  breadcrumbs=\\\"[{ label:'Namespaces', link:'kubernetes.resourcePools' }, 'Create a namespace']\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"$ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"$ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\" name=\\\"resourcePoolCreationForm\\\">\\n            <!-- #region NAME INPUT -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"pool_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  name=\\\"pool_name\\\"\\n                  ng-model=\\\"$ctrl.formValues.Name\\\"\\n                  ng-pattern=\\\"/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/\\\"\\n                  ng-change=\\\"$ctrl.onChangeName()\\\"\\n                  placeholder=\\\"my-project\\\"\\n                  data-cy=\\\"k8sNamespaceCreate-namespaceNameInput\\\"\\n                  required\\n                  auto-focus\\n                />\\n                <span class=\\\"help-block\\\">\\n                  <div class=\\\"form-group\\\" ng-show=\\\"resourcePoolCreationForm.pool_name.$invalid || $ctrl.state.isAlreadyExist || $ctrl.state.hasPrefixKube\\\">\\n                    <div class=\\\"col-sm-12 small text-warning\\\">\\n                      <div ng-messages=\\\"resourcePoolCreationForm.pool_name.$error\\\">\\n                        <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>本栏为必填项。</p>\\n                        <p class=\\\"vertical-center\\\" ng-message=\\\"pattern\\\"\\n                          ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> This field must consist of lower case alphanumeric characters or '-', and\\n                          contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n                        >\\n                      </div>\\n                      <p class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.state.hasPrefixKube\\\"\\n                        ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Prefix \\\"kube-\\\" is reserved for Kubernetes system namespaces.</p\\n                      >\\n                      <p class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.state.isAlreadyExist\\\">\\n                        <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> A namespace with the same name already exists.\\n                      </p>\\n                    </div>\\n                  </div>\\n                </span>\\n              </div>\\n            </div>\\n\\n            <!-- #endregion -->\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Quota </div>\\n            <!-- #region QUOTA -->\\n            <!-- quotas-switch -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 small text-muted\\\">\\n                <p class=\\\"vertical-center\\\">\\n                  <pr-icon class=\\\"vertical-center\\\" icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n                  A namespace segments the underlying physical Kubernetes cluster into smaller virtual clusters. You should assign a capped limit of resources to this namespace or\\n                  disable for the safe operation of your platform.\\n                </p>\\n              </div>\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  data-cy=\\\"'k8sNamespaceCreate-resourceAssignmentToggle'\\\"\\n                  label=\\\"'Resource assignment'\\\"\\n                  label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n                  name=\\\"'k8s-resourcepool-resourcequota'\\\"\\n                  checked=\\\"$ctrl.formValues.HasQuota\\\"\\n                  on-change=\\\"($ctrl.onToggleResourceQuota)\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n            <!-- !quotas-switch -->\\n            <div ng-if=\\\"$ctrl.formValues.HasQuota\\\">\\n              <div class=\\\"col-sm-12 form-section-title\\\"> Resource limits </div>\\n              <div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 small text-warning\\\" ng-switch on=\\\"$ctrl.formValues.HasQuota && !$ctrl.isQuotaValid()\\\">\\n                    <p class=\\\"vertical-center mb-0\\\" ng-switch-when=\\\"true\\\"\\n                      ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> At least a single limit must be set for the quota to be\\n                      valid.\\n                    </p>\\n                    <p class=\\\"vertical-center mb-0\\\" ng-switch-default></p>\\n                  </span>\\n                </div>\\n\\n                <!-- memory-limit-input -->\\n                <div class=\\\"form-group flex flex-row !mb-0\\\">\\n                  <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Memory limit (MB) </label>\\n                  <div class=\\\"col-xs-6\\\">\\n                    <por-slider\\n                      min=\\\"$ctrl.defaults.MemoryLimit\\\"\\n                      max=\\\"$ctrl.state.sliderMaxMemory\\\"\\n                      step=\\\"128\\\"\\n                      ng-if=\\\"$ctrl.state.sliderMaxMemory\\\"\\n                      value=\\\"$ctrl.formValues.MemoryLimit\\\"\\n                      on-change=\\\"($ctrl.handleMemoryLimitChange)\\\"\\n                      visible-tooltip=\\\"true\\\"\\n                      data-cy=\\\"k8sNamespaceCreate-memoryLimitSlider\\\"\\n                    ></por-slider>\\n                  </div>\\n                  <div class=\\\"col-sm-2 vertical-center pt-6\\\">\\n                    <input\\n                      name=\\\"memory_limit\\\"\\n                      type=\\\"number\\\"\\n                      min=\\\"{{ $ctrl.defaults.MemoryLimit }}\\\"\\n                      max=\\\"{{ $ctrl.state.sliderMaxMemory }}\\\"\\n                      class=\\\"form-control\\\"\\n                      ng-model=\\\"$ctrl.formValues.MemoryLimit\\\"\\n                      id=\\\"memory-limit\\\"\\n                      data-cy=\\\"k8sNamespaceCreate-memoryLimitInput\\\"\\n                      required\\n                    />\\n                  </div>\\n                </div>\\n                <div class=\\\"flex flex-row w-full\\\">\\n                  <span class=\\\"col-sm-3 col-lg-2\\\"></span>\\n                  <span class=\\\"help-block col-sm-9 col-lg-10\\\">\\n                    <div ng-show=\\\"resourcePoolCreationForm.memory_limit.$invalid\\\">\\n                      <div class=\\\"small text-warning\\\">\\n                        <div ng-messages=\\\"resourcePoolCreationForm.pool_name.$error\\\">\\n                          <p class=\\\"vertical-center\\\"\\n                            ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between\\n                            {{ $ctrl.defaults.MemoryLimit }} and\\n                            {{ $ctrl.state.sliderMaxMemory }}\\n                          </p>\\n                        </div>\\n                      </div>\\n                    </div>\\n                  </span>\\n                </div>\\n                <!-- !memory-limit-input -->\\n                <!-- cpu-limit-input -->\\n                <div class=\\\"form-group flex flex-row\\\">\\n                  <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU limit </label>\\n                  <div class=\\\"col-xs-8\\\">\\n                    <por-slider\\n                      min=\\\"$ctrl.defaults.CpuLimit\\\"\\n                      max=\\\"$ctrl.state.sliderMaxCpu\\\"\\n                      step=\\\"0.1\\\"\\n                      ng-if=\\\"$ctrl.state.sliderMaxCpu\\\"\\n                      value=\\\"$ctrl.formValues.CpuLimit\\\"\\n                      on-change=\\\"($ctrl.handleCpuLimitChange)\\\"\\n                      data-cy=\\\"k8sNamespaceCreate-cpuLimitSlider\\\"\\n                      visible-tooltip=\\\"true\\\"\\n                    ></por-slider>\\n                  </div>\\n                </div>\\n                <!-- !cpu-limit-input -->\\n              </div>\\n            </div>\\n            <!-- #endregion -->\\n\\n            <!-- #region LOAD-BALANCERS -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Load balancers </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n                <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n                You can set a quota on the amount of external load balancers that can be created inside this namespace. Set this quota to 0 to effectively disable the use of load\\n                balancers in this namespace.\\n              </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  data-cy=\\\"'k8sNamespaceCreate-loadBalancerQuotaToggle'\\\"\\n                  label=\\\"'Load Balancer quota'\\\"\\n                  label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n                  name=\\\"'k8s-resourcepool-lbquota'\\\"\\n                  feature-id=\\\"$ctrl.LBQuotaFeatureId\\\"\\n                  checked=\\\"$ctrl.formValues.UseLoadBalancersQuota\\\"\\n                  on-change=\\\"($ctrl.onToggleLoadBalancerQuota)\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n            <!-- #endregion -->\\n\\n            <div ng-if=\\\"$ctrl.state.ingressAvailabilityPerNamespace\\\">\\n              <!-- #region INGRESSES -->\\n              <div class=\\\"col-sm-12 form-section-title\\\"> Networking </div>\\n              <ingress-class-datatable\\n                ng-if=\\\"$ctrl.state.ingressAvailabilityPerNamespace\\\"\\n                on-change-controllers=\\\"($ctrl.onChangeIngressControllerAvailability)\\\"\\n                ingress-controllers=\\\"$ctrl.ingressControllers\\\"\\n                description=\\\"'Enable the ingress controllers that users can select when publishing applications in this namespace.'\\\"\\n                no-ingress-controller-label=\\\"'No ingress controllers found in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster.'\\\"\\n                view=\\\"'namespace'\\\"\\n              ></ingress-class-datatable>\\n              <!-- #endregion -->\\n            </div>\\n\\n            <!-- #region REGISTRIES -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Registries </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 small text-muted\\\">\\n                <p class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                  Define which registries can be used by users who have access to this namespace.\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"col-sm-3 col-lg-2 control-label text-left !pt-0\\\" for=\\\"registries-selector\\\"> Select registries </label>\\n              <div class=\\\"col-sm-8 col-lg-9\\\">\\n                <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.registries.length && $ctrl.state.isAdmin\\\">\\n                  No registries available. Head over to the <a ui-sref=\\\"portainer.registries\\\">registry view</a> to define a container registry.\\n                </span>\\n                <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.registries.length && !$ctrl.state.isAdmin\\\">\\n                  No registries available. Contact your administrator to create a container registry.\\n                </span>\\n                <create-namespace-registries-selector\\n                  input-id=\\\"'registries-selector'\\\"\\n                  value=\\\"$ctrl.formValues.Registries\\\"\\n                  on-change=\\\"($ctrl.onRegistriesChange)\\\"\\n                  options=\\\"$ctrl.registries\\\"\\n                >\\n                </create-namespace-registries-selector>\\n              </div>\\n            </div>\\n            <!-- #endregion -->\\n\\n            <!-- #region STORAGES -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Storage </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n                <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                Quotas can be set on each storage option to prevent users from exceeding a specific threshold when deploying applications. You can set a quota to 0 to effectively\\n                prevent the usage of a specific storage option inside this namespace.\\n              </span>\\n            </div>\\n            <div class=\\\"col-sm-12 form-section-title vertical-center\\\">\\n              <pr-icon icon=\\\"'svg-route'\\\"></pr-icon>\\n              standard\\n            </div>\\n\\n            <storage-class-switch value=\\\"sc.Selected\\\" name=\\\"sc.Name\\\" on-change=\\\"(ctrl.onToggleStorageQuota)\\\" authorization=\\\"K8sResourcePoolDetailsW\\\"></storage-class-switch>\\n\\n            <!-- #endregion -->\\n\\n            <!-- summary -->\\n            <kubernetes-summary-view ng-if=\\\"resourcePoolCreationForm.$valid && !$ctrl.isCreateButtonDisabled()\\\" form-values=\\\"$ctrl.formValues\\\"></kubernetes-summary-view>\\n            <!-- !summary -->\\n\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n            <!-- #region ACTIONS -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                  ng-disabled=\\\"!resourcePoolCreationForm.$valid || $ctrl.isCreateButtonDisabled()\\\"\\n                  ng-click=\\\"$ctrl.createResourcePool()\\\"\\n                  button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n                >\\n                  <span ng-hide=\\\"$ctrl.state.actionInProgress\\\" data-cy=\\\"k8sNamespace-createNamespaceButton\\\">Create namespace</span>\\n                  <span ng-show=\\\"$ctrl.state.actionInProgress\\\">正在创建中...</span>\\n                </button>\\n              </div>\\n            </div>\\n\\n            <!-- #endregion -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/create/createResourcePool.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///28134\n");

}),

23932:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for an ingress...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon></span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th ng-if=\\\"$ctrl.hasExpandableItems()\\\" class=\\\"datatable-wide dropdown\\\">\\n                <div class=\\\"cursor-pointer vertical-center\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n                  <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n                  <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n              ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n              ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n              pagination-id=\\\"$ctrl.tableKey\\\"\\n            >\\n              <td ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n                <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n                  <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n                </div>\\n              </td>\\n              <td>{{ item.Name }}</td>\\n              <td>{{ item.Size }}</td>\\n            </tr>\\n            <tr\\n              dir-paginate-end\\n              ng-show=\\\"item.Expanded\\\"\\n              ng-repeat=\\\"path in item.Paths\\\"\\n              ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n            >\\n              <td>\\n                <a style=\\\"margin-left: 15px\\\" ng-href=\\\"http://{{ path.Host ? path.Host : path.IP }}{{ path.Path }}\\\" target=\\\"_blank\\\">\\n                  {{ path.Host ? path.Host : path.IP }}{{ path.Path }}\\n                </a>\\n                <span ng-if=\\\"path.ApplicationName !== '-'\\\">\\n                  <pr-icon icon=\\\"'svg-arrowright'\\\" class-name=\\\"'m-0.5'\\\"></pr-icon>\\n                  <a ui-sref=\\\"kubernetes.applications.application({ name: path.ApplicationName, namespace: item.Namespace })\\\">{{ path.ApplicationName }}</a>\\n                </span>\\n                <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"path.ApplicationName === '-'\\\">未使用</span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">No ingresses available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/edit/components/ingresses-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///23932\n");

}),

50856:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'Namespace details'\\\"\\n  breadcrumbs=\\\"[{ label:'Namespaces', link:'kubernetes.resourcePools' }, ctrl.pool.Namespace.Name]\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'layers'\\\" feather=\\\"true\\\"></pr-icon> Namespace </uib-tab-heading>\\n              <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\" name=\\\"resourcePoolEditForm\\\" style=\\\"padding: 20px; margin-top: 10px\\\">\\n                <!-- name-input -->\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <table class=\\\"table\\\">\\n                      <tbody>\\n                        <tr>\\n                          <td>名称</td>\\n                          <td>\\n                            {{ ctrl.pool.Namespace.Name }}\\n                            <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"ctrl.isSystem\\\">系统</span>\\n                          </td>\\n                        </tr>\\n                      </tbody>\\n                    </table>\\n                  </div>\\n                </div>\\n                <!-- !name-input -->\\n                <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable\\\" class=\\\"col-sm-12 form-section-title\\\">Resource quota</div>\\n                <!-- quotas-switch -->\\n                <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable\\\" class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12 mt-2\\\" ng-if=\\\"ctrl.state.resourceOverCommitEnabled\\\">\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-3 col-lg-2\\\">\\n                        <label class=\\\"control-label text-left\\\"> Resource assignment </label>\\n                      </div>\\n                      <div class=\\\"col-sm-9 pt-2\\\">\\n                        <label class=\\\"switch\\\">\\n                          <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.HasQuota\\\" />\\n                          <span class=\\\"slider round\\\"></span>\\n                        </label>\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.HasQuota && ctrl.isAdmin && ctrl.isEditable && !ctrl.isQuotaValid()\\\">\\n                  <div class=\\\"col-sm-12 small text-warning\\\">\\n                    <p class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                      Not enough resources available in the cluster to apply a resource reservation.\\n                    </p>\\n                  </div>\\n                </div>\\n                <div ng-if=\\\"ctrl.formValues.HasQuota\\\">\\n                  <kubernetes-resource-reservation\\n                    ng-if=\\\"ctrl.pool.Quota\\\"\\n                    description=\\\"Resource reservation represents the total amount of resource assigned to all the applications deployed inside this namespace.\\\"\\n                    cpu-reservation=\\\"ctrl.state.resourceReservation.CPU\\\"\\n                    memory-reservation=\\\"ctrl.state.resourceReservation.Memory\\\"\\n                    cpu-limit=\\\"ctrl.formValues.CpuLimit\\\"\\n                    memory-limit=\\\"ctrl.formValues.MemoryLimit\\\"\\n                    display-usage=\\\"ctrl.state.useServerMetrics\\\"\\n                    cpu-usage=\\\"ctrl.state.resourceUsage.CPU\\\"\\n                    memory-usage=\\\"ctrl.state.resourceUsage.Memory\\\"\\n                  >\\n                  </kubernetes-resource-reservation>\\n                </div>\\n                <!-- !quotas-switch -->\\n                <div ng-if=\\\"ctrl.formValues.HasQuota && ctrl.isAdmin && ctrl.isEditable\\\">\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Resource limits </div>\\n                  <div>\\n                    <!-- memory-limit-input -->\\n                    <div class=\\\"form-group flex\\\">\\n                      <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left vertical-center\\\"> Memory limit (MB) </label>\\n                      <div class=\\\"col-sm-6\\\">\\n                        <por-slider\\n                          min=\\\"ctrl.ResourceQuotaDefaults.MemoryLimit\\\"\\n                          max=\\\"ctrl.state.sliderMaxMemory\\\"\\n                          step=\\\"128\\\"\\n                          ng-if=\\\"ctrl.state.sliderMaxMemory\\\"\\n                          value=\\\"ctrl.formValues.MemoryLimit\\\"\\n                          on-change=\\\"(ctrl.handleMemoryLimitChange)\\\"\\n                          visible-tooltip=\\\"true\\\"\\n                          data-cy=\\\"k8sNamespaceEdit-memoryLimitSlider\\\"\\n                        ></por-slider>\\n                      </div>\\n                      <div class=\\\"col-sm-2 vertical-center pt-6\\\">\\n                        <input\\n                          name=\\\"memory_limit\\\"\\n                          type=\\\"number\\\"\\n                          min=\\\"{{ ctrl.ResourceQuotaDefaults.MemoryLimit }}\\\"\\n                          max=\\\"{{ ctrl.state.sliderMaxMemory }}\\\"\\n                          class=\\\"form-control\\\"\\n                          ng-model=\\\"ctrl.formValues.MemoryLimit\\\"\\n                          id=\\\"memory-limit\\\"\\n                          data-cy=\\\"k8sNamespaceEdit-memoryLimitInput\\\"\\n                          required\\n                        />\\n                      </div>\\n                    </div>\\n                    <div class=\\\"form-group\\\" ng-show=\\\"resourcePoolEditForm.memory_limit.$invalid\\\">\\n                      <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n                      <div class=\\\"col-sm-8 small text-warning\\\">\\n                        <div ng-messages=\\\"resourcePoolEditForm.pool_name.$error\\\">\\n                          <p class=\\\"vertical-center\\\">\\n                            <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between {{ ctrl.ResourceQuotaDefaults.MemoryLimit }} and\\n                            {{ ctrl.state.sliderMaxMemory }}.\\n                          </p>\\n                        </div>\\n                      </div>\\n                    </div>\\n                    <!-- !memory-limit-input -->\\n                    <!-- cpu-limit-input -->\\n                    <div class=\\\"form-group\\\">\\n                      <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU limit </label>\\n                      <div class=\\\"col-sm-8\\\">\\n                        <por-slider\\n                          min=\\\"ctrl.ResourceQuotaDefaults.CpuLimit\\\"\\n                          max=\\\"ctrl.state.sliderMaxCpu\\\"\\n                          step=\\\"0.1\\\"\\n                          ng-if=\\\"ctrl.state.sliderMaxCpu\\\"\\n                          value=\\\"ctrl.formValues.CpuLimit\\\"\\n                          on-change=\\\"(ctrl.handleCpuLimitChange)\\\"\\n                          data-cy=\\\"k8sNamespaceEdit-cpuLimitSlider\\\"\\n                          visible-tooltip=\\\"true\\\"\\n                        ></por-slider>\\n                      </div>\\n                    </div>\\n                    <!-- !cpu-limit-input -->\\n                  </div>\\n                </div>\\n                <!-- #region LOADBALANCERS -->\\n                <div class=\\\"col-sm-12 form-section-title\\\"> Load balancers </div>\\n\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12 small text-muted\\\">\\n                    <p class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      You can set a quota on the amount of external load balancers that can be created inside this namespace. Set this quota to 0 to effectively disable the use of\\n                      load balancers in this namespace.\\n                    </p>\\n                  </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <por-switch-field\\n                      data-cy=\\\"'k8sNamespaceCreate-loadBalancerQuotaToggle'\\\"\\n                      label=\\\"'Load Balancer quota'\\\"\\n                      label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n                      name=\\\"'k8s-resourcepool-Lbquota'\\\"\\n                      feature-id=\\\"ctrl.LBQuotaFeatureId\\\"\\n                      checked=\\\"ctrl.formValues.UseLoadBalancersQuota\\\"\\n                      on-change=\\\"(ctrl.onToggleLoadBalancersQuota)\\\"\\n                    ></por-switch-field>\\n                  </div>\\n                </div>\\n                <!-- #endregion -->\\n                <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable && ctrl.state.ingressAvailabilityPerNamespace\\\">\\n                  <!-- #region INGRESSES -->\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Networking </div>\\n                  <ingress-class-datatable\\n                    ng-if=\\\"ctrl.state.ingressAvailabilityPerNamespace\\\"\\n                    on-change-controllers=\\\"(ctrl.onChangeIngressControllerAvailability)\\\"\\n                    ingress-controllers=\\\"ctrl.ingressControllers\\\"\\n                    description=\\\"'Enable the ingress controllers that users can select when publishing applications in this namespace.'\\\"\\n                    no-ingress-controller-label=\\\"'No ingress controllers found in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster.'\\\"\\n                    view=\\\"'namespace'\\\"\\n                  ></ingress-class-datatable>\\n\\n                  <!-- #endregion -->\\n                </div>\\n                <!-- #region REGISTRIES -->\\n                <div>\\n                  <div class=\\\"col-sm-12 form-section-title\\\"> Registries </div>\\n\\n                  <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.isAdmin || ctrl.isSystem\\\">\\n                    <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"padding-top: 0\\\"> Selected registries </label>\\n                    <div class=\\\"col-sm-9 col-lg-4\\\">\\n                      {{ ctrl.selectedRegistries ? ctrl.selectedRegistries : 'None' }}\\n                    </div>\\n                  </div>\\n\\n                  <div ng-if=\\\"ctrl.isAdmin && !ctrl.isSystem\\\">\\n                    <div class=\\\"form-group\\\">\\n                      <div class=\\\"col-sm-12 small text-muted\\\">\\n                        <p class=\\\"vertical-center\\\">\\n                          <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                          Define which registries can be used by users who have access to this namespace.\\n                        </p>\\n                      </div>\\n                    </div>\\n                    <div class=\\\"form-group\\\">\\n                      <label class=\\\"col-sm-3 col-lg-2 control-label text-left !pt-0\\\" for=\\\"registries-selector\\\"> Select registries </label>\\n                      <div class=\\\"col-sm-9 col-lg-4\\\">\\n                        <span class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.registries.length && ctrl.isAdmin\\\">\\n                          No registries available. Head over to the <a ui-sref=\\\"portainer.registries\\\">registry view</a> to define a container registry.\\n                        </span>\\n                        <span class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.registries.length && !ctrl.isAdmin\\\">\\n                          No registries available. Contact your administrator to create a container registry.\\n                        </span>\\n                        <create-namespace-registries-selector\\n                          input-id=\\\"'registries-selector'\\\"\\n                          value=\\\"ctrl.formValues.Registries\\\"\\n                          on-change=\\\"(ctrl.onRegistriesChange)\\\"\\n                          options=\\\"ctrl.registries\\\"\\n                        >\\n                        </create-namespace-registries-selector>\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n                <!-- #endregion -->\\n\\n                <!-- #region STORAGES -->\\n                <div class=\\\"col-sm-12 form-section-title\\\"> Storage </div>\\n\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"col-sm-12 text-muted small\\\">\\n                    <p class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Quotas can be set on each storage option to prevent users from exceeding a specific threshold when deploying applications. You can set a quota to 0 to\\n                      effectively prevent the usage of a specific storage option inside this namespace.\\n                    </p>\\n                  </span>\\n                </div>\\n\\n                <div class=\\\"form-section-title text-muted col-sm-12\\\" style=\\\"width: 100%\\\">\\n                  <div class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'svg-route'\\\"></pr-icon>standard </div>\\n                  <hr />\\n                </div>\\n\\n                <storage-class-switch value=\\\"sc.Selected\\\" name=\\\"sc.Name\\\" on-change=\\\"(ctrl.onToggleStorageQuota)\\\" authorization=\\\"K8sResourcePoolDetailsW\\\"> </storage-class-switch>\\n\\n                <!-- #endregion -->\\n\\n                <!-- summary -->\\n                <kubernetes-summary-view\\n                  ng-if=\\\"resourcePoolEditForm.$valid && !ctrl.isUpdateButtonDisabled()\\\"\\n                  form-values=\\\"ctrl.formValues\\\"\\n                  old-form-values=\\\"ctrl.savedFormValues\\\"\\n                ></kubernetes-summary-view>\\n                <!-- !summary -->\\n\\n                <!-- actions -->\\n                <div ng-if=\\\"ctrl.isAdmin\\\" class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n                <div ng-if=\\\"ctrl.isAdmin\\\" class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <button\\n                      type=\\\"button\\\"\\n                      ng-if=\\\"!ctrl.isSystem\\\"\\n                      class=\\\"btn btn-primary btn-sm !ml-0 !mr-1\\\"\\n                      ng-disabled=\\\"!resourcePoolEditForm.$valid || ctrl.isUpdateButtonDisabled()\\\"\\n                      ng-click=\\\"ctrl.updateResourcePool()\\\"\\n                      button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                    >\\n                      <span ng-hide=\\\"ctrl.state.actionInProgress\\\" data-cy=\\\"k8sNamespaceEdit-updateNamespaceButton\\\">Update namespace</span>\\n                      <span ng-show=\\\"ctrl.state.actionInProgress\\\">正在更新中...</span>\\n                    </button>\\n                    <button\\n                      ng-if=\\\"!ctrl.isDefaultNamespace\\\"\\n                      type=\\\"button\\\"\\n                      class=\\\"btn btn-light btn-sm !ml-0\\\"\\n                      ng-click=\\\"ctrl.markUnmarkAsSystem()\\\"\\n                      button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                      data-cy=\\\"k8sNamespaceEdit-markSystem\\\"\\n                    >\\n                      <span ng-if=\\\"ctrl.isSystem\\\">Unmark as system</span>\\n                      <span ng-if=\\\"!ctrl.isSystem\\\">Mark as system</span>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !actions -->\\n              </form>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'svg-clockrewind'\\\"></pr-icon> Events\\n                <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n                  {{ ctrl.state.eventWarningCount }} warning(s)\\n                </div>\\n              </uib-tab-heading>\\n              <kubernetes-events-datatable\\n                title-text=\\\"Events\\\"\\n                title-icon=\\\"fa-history\\\"\\n                dataset=\\\"ctrl.events\\\"\\n                table-key=\\\"kubernetes.resourcepool.events\\\"\\n                order-by=\\\"Date\\\"\\n                reverse-order=\\\"true\\\"\\n                loading=\\\"ctrl.state.eventsLoading\\\"\\n                refresh-callback=\\\"ctrl.getEvents\\\"\\n              ></kubernetes-events-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.pool.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\"><pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon> YAML </uib-tab-heading>\\n              <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n                <kubernetes-yaml-inspector key=\\\"resource-pool-yaml\\\" data=\\\"ctrl.pool.Yaml\\\"></kubernetes-yaml-inspector>\\n              </div>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.applications && ctrl.applications.length > 0\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-resource-pool-applications-datatable\\n        dataset=\\\"ctrl.applications\\\"\\n        table-key=\\\"kubernetes.resourcepool.applications\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getApplications\\\"\\n        loading=\\\"ctrl.state.applicationsLoading\\\"\\n        title-text=\\\"Applications running in this namespace\\\"\\n        title-icon=\\\"code\\\"\\n      >\\n      </kubernetes-resource-pool-applications-datatable>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.ingresses && ctrl.ingresses.length > 0\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-resource-pool-ingresses-datatable\\n        dataset=\\\"ctrl.ingresses\\\"\\n        table-key=\\\"kubernetes.resourcepool.ingresses\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getIngresses\\\"\\n        loading=\\\"ctrl.state.ingressesLoading\\\"\\n        title-text=\\\"Ingress routes and applications\\\"\\n        title-icon=\\\"svg-route\\\"\\n      >\\n      </kubernetes-resource-pool-ingresses-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/edit/resourcePool.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///50856\n");

}),

78268:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Namespace list'\\\" breadcrumbs=\\\"['Namespaces']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-resource-pools-datatable\\n        endpoint=\\\"ctrl.endpoint\\\"\\n        dataset=\\\"ctrl.resourcePools\\\"\\n        table-key=\\\"kubernetes.resourcePools\\\"\\n        order-by=\\\"Name\\\"\\n        remove-action=\\\"ctrl.removeAction\\\"\\n        refresh-callback=\\\"ctrl.getResourcePools\\\"\\n        endpoint=\\\"ctrl.endpoint\\\"\\n        data-cy=\\\"k8sNamespace-namespaceTable\\\"\\n      ></kubernetes-resource-pools-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/resourcePools.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///78268\n");

}),

84579:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"state.viewReady\\\"\\n  title=\\\"'Kubernetes security constraints'\\\"\\n  breadcrumbs=\\\"[\\n{ label:'Environments', link:'portainer.endpoints' }, \\n{ label:endpoint.Name, link:'portainer.endpoints.endpoint', linkParams:{id: endpoint.Id} }, \\n'Security constraints'\\n]\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-header icon=\\\"shield\\\" feather-icon=\\\"true\\\" title-text=\\\"Pod security constraints\\\"></rd-widget-header>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" name=\\\"kubernetesSecurityConstraintForm\\\">\\n            <!--  main toggle  -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <por-switch-field\\n                  checked=\\\"formValues.enabled\\\"\\n                  name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n                  label=\\\"'Enable pod security constraints'\\\"\\n                  feature-id=\\\"limitedFeaturePodSecurityPolicy\\\"\\n                  label-class=\\\"'col-sm-3 col-lg-2 px-0'\\\"\\n                  switch-class=\\\"'col-sm-8'\\\"\\n                >\\n                </por-switch-field>\\n              </div>\\n            </div>\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/security-constraint/constraint.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///84579\n");

}),

88336:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'堆栈日志'\\\"\\n  breadcrumbs=\\\"[\\n{ label:'Namespaces', link:'kubernetes.resourcePools' },\\n{ label:ctrl.state.transition.namespace, link:'kubernetes.resourcePools.resourcePool', linkParams:{ id: ctrl.state.transition.namespace } },\\n{ label:'Applications', link:'kubernetes.applications' },\\n'堆栈',\\nctrl.state.transition.name,\\n'Logs'\\n]\\\"\\n  reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n            <!-- auto-refresh -->\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"control-label text-left col-sm-3 col-lg-2 vertical-center !py-2\\\">\\n                自动刷新\\n                <portainer-tooltip message=\\\"'每30秒自动刷新一次日志'\\\"></portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-sm-8 col-sm-9 vertical-center\\\">\\n                <label class=\\\"switch col-sm-8 col-sm-9 vertical-center !mb-0\\\">\\n                  <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.state.autoRefresh\\\" ng-change=\\\"ctrl.updateAutoRefresh()\\\" />\\n                  <span class=\\\"slider round\\\"></span>\\n                </label>\\n              </div>\\n            </div>\\n            <!-- !auto-refresh -->\\n            <!-- search -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"logs_search\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 搜索 </label>\\n              <div class=\\\"col-sm-8 col-lg-9\\\">\\n                <input\\n                  class=\\\"form-control\\\"\\n                  type=\\\"text\\\"\\n                  name=\\\"logs_search\\\"\\n                  ng-model=\\\"ctrl.state.search\\\"\\n                  ng-change=\\\"ctrl.state.selectedLines.length = 0;\\\"\\n                  placeholder=\\\"筛选...\\\"\\n                  auto-focus\\n                />\\n              </div>\\n            </div>\\n            <!-- !search -->\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button class=\\\"btn btn-primary btn-sm !ml-0 vertical-center\\\" type=\\\"button\\\" ng-click=\\\"ctrl.downloadLogs()\\\">\\n                  <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon>\\n                  下载日志\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12 h-[max(400px,calc(100vh-380px))]\\\">\\n      <pre class=\\\"log_viewer\\\">\\n        <div ng-repeat=\\\"log in ctrl.state.filteredLogs = (ctrl.stackLogs | filter:{ 'line': ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\"><span ng-style=\\\"{'color': log.appColor, 'font-weight': 'bold'};\\\">{{ log.appName }}</span> <span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n        <div ng-if=\\\"ctrl.stackLogs.length && !ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有符合 '{{ ctrl.state.search }}' 筛选的日志行。</p></div>\\n        <div ng-if=\\\"ctrl.stackLogs.length === 0\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">没有可用的日志</p></div>\\n    </pre>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/stacks/logs/logs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///88336\n");

}),

17648:

(function(module) {

eval("var _module_exports = \"<div class=\\\"flex justify-start items-center form-section-title interactive\\\" ng-click=\\\"$ctrl.toggleSummary()\\\" ng-if=\\\"$ctrl.state.resources.length > 0\\\">\\n  <pr-icon icon=\\\"$ctrl.state.expandedTemplate ? 'chevron-down' : 'chevron-right'\\\" feather=\\\"true\\\" class=\\\"!mr-1 vertical-center\\\"></pr-icon>\\n  Summary\\n</div>\\n\\n<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.expandedTemplate\\\">\\n  <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    Portainer will execute the following Kubernetes actions.\\n  </div>\\n\\n  <div class=\\\"col-sm-12 small text-muted\\\" style=\\\"padding-top: 1em\\\" ng-if=\\\"$ctrl.state.resources.length > 0\\\">\\n    <ul class=\\\"ml-5\\\">\\n      <li ng-repeat=\\\"summary in $ctrl.state.resources\\\" ng-if=\\\"summary.action && summary.kind && summary.name\\\">\\n        {{ summary.action }}\\n        {{ $ctrl.getArticle(summary.kind, summary.action) }}\\n        <span class=\\\"bold\\\">{{ summary.kind }}</span> named <code>{{ summary.name }}</code>\\n        <span ng-if=\\\"summary.type\\\">\\n          of type <code>{{ summary.type }}</code></span\\n        >\\n      </li>\\n      <li ng-if=\\\"$ctrl.state.limits.memory\\\">\\n        Set the memory resources limits and requests to <code>{{ $ctrl.state.limits.memory }}M</code>\\n      </li>\\n      <li ng-if=\\\"$ctrl.state.limits.cpu\\\">\\n        Set the CPU resources limits and requests to <code>{{ $ctrl.state.limits.cpu }}</code>\\n      </li>\\n    </ul>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/summary/summary.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///17648\n");

}),

71894:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <!-- toolbar header actions and settings -->\\n  <div class=\\\"toolBar !flex-col gap-1\\\">\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full\\\">\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"'hard-drive'\\\" feather=\\\"true\\\"></pr-icon>\\n        </div>\\n        Storage\\n      </div>\\n      <div class=\\\"searchBar vertical-center !mr-0\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"Search for storage...\\\"\\n          auto-focus\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"settings\\\">\\n        <div class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n          <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n            <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n          </span>\\n          <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n            <div class=\\\"tableMenu\\\">\\n              <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n              <div class=\\\"menuContent\\\">\\n                <div>\\n                  <div class=\\\"md-checkbox\\\">\\n                    <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                    <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                  </div>\\n                  <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                    <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                    <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                      <option value=\\\"10\\\">10s</option>\\n                      <option value=\\\"30\\\">30s</option>\\n                      <option value=\\\"60\\\">1min</option>\\n                      <option value=\\\"120\\\">2min</option>\\n                      <option value=\\\"300\\\">5min</option>\\n                    </select>\\n                    <span>\\n                      <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <div>\\n                <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th class=\\\"datatable-wide dropdown\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n            <div class=\\\"cursor-pointer vertical-center\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n              <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n              <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n            </div>\\n          </th>\\n          <th style=\\\"width: 60%\\\">\\n            <table-column-header\\n              col-title=\\\"'Storage'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th style=\\\"width: 38%\\\">\\n            <table-column-header\\n              col-title=\\\"'Usage'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'Size'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'Size' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('Size')\\\"\\n            ></table-column-header>\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n          ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n          ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n          pagination-id=\\\"$ctrl.tableKey\\\"\\n        >\\n          <td ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n            <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n              <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" feather=\\\"true\\\"></pr-icon>\\n              <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" feather=\\\"true\\\"></pr-icon>\\n            </div>\\n          </td>\\n          <td>{{ item.Name }}</td>\\n          <td>{{ item.Size }}</td>\\n        </tr>\\n        <tr\\n          dir-paginate-end\\n          ng-show=\\\"item.Expanded\\\"\\n          ng-repeat=\\\"vol in item.Volumes\\\"\\n          ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n        >\\n          <td></td>\\n          <td>\\n            <a ui-sref=\\\"kubernetes.volumes.volume({ name: vol.PersistentVolumeClaim.Name, namespace: vol.PersistentVolumeClaim.Namespace })\\\">\\n              {{ vol.PersistentVolumeClaim.Name }}\\n            </a>\\n          </td>\\n          <td>\\n            {{ vol.PersistentVolumeClaim.Storage }}\\n          </td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No storage available.</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/components/volumes-storages-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///71894\n");

}),

86604:

(function(module) {

eval("var _module_exports = \"<page-header\\n  ng-if=\\\"ctrl.state.viewReady\\\"\\n  title=\\\"'存储卷详情'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Namespaces', link:'kubernetes.resourcePools' },\\n    {\\n      label:ctrl.volume.ResourcePool.Namespace.Name,\\n      link: 'kubernetes.resourcePools.resourcePool',\\n      linkParams:{ id: ctrl.volume.ResourcePool.Namespace.Name }\\n    },\\n    { label:'存储卷', link:'kubernetes.volumes' },\\n     ctrl.volume.PersistentVolumeClaim.Name,\\n     ]\\\"\\n  reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volTab\\\">\\n                <pr-icon icon=\\\"'database'\\\" feather=\\\"true\\\"></pr-icon>\\n                存储卷\\n              </uib-tab-heading>\\n              <div style=\\\"padding: 20px\\\">\\n                <table class=\\\"table\\\">\\n                  <tbody>\\n                    <tr>\\n                      <td>名称</td>\\n                      <td data-cy=\\\"k8sVolDetail-volName\\\">\\n                        {{ ctrl.volume.PersistentVolumeClaim.Name }}\\n                        <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!ctrl.isSystemNamespace() && ctrl.isExternalVolume()\\\">外部</span>\\n                        <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"!ctrl.isSystemNamespace() && !ctrl.isUsed()\\\">未使用</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>Namespace</td>\\n                      <td>\\n                        <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.volume.ResourcePool.Namespace.Name })\\\" data-cy=\\\"k8sVolDetail-volNamespace\\\">{{\\n                          ctrl.volume.ResourcePool.Namespace.Name\\n                        }}</a>\\n                        <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">系统</span>\\n                      </td>\\n                    </tr>\\n                    <tr>\\n                      <td>存储</td>\\n                      <td data-cy=\\\"k8sVolDetail-volStorageClassname\\\">{{ ctrl.volume.PersistentVolumeClaim.StorageClass.Name }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>共享访问策略</td>\\n                      <td data-cy=\\\"k8sVolDetail-volAccessPolicy\\\"\\n                        >{{ ctrl.state.volumeSharedAccessPolicy }}\\n                        <portainer-tooltip ng-if=\\\"ctrl.state.volumeSharedAccessPolicyTooltip\\\" message=\\\"ctrl.state.volumeSharedAccessPolicyTooltip\\\"></portainer-tooltip\\n                      ></td>\\n                    </tr>\\n                    <tr>\\n                      <td>配置程序</td>\\n                      <td data-cy=\\\"k8sVolDetail-volProvisioner\\\">{{\\n                        ctrl.volume.PersistentVolumeClaim.StorageClass.Provisioner ? ctrl.volume.PersistentVolumeClaim.StorageClass.Provisioner : '-'\\n                      }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>创建日期</td>\\n                      <td data-cy=\\\"k8sVolDetail-volCreatedAt\\\">{{ ctrl.volume.PersistentVolumeClaim.CreationDate | getisodate }}</td>\\n                    </tr>\\n                    <tr>\\n                      <td>大小</td>\\n                      <td ng-if=\\\"!ctrl.state.increaseSize\\\">\\n                        {{ ctrl.volume.PersistentVolumeClaim.Storage }}\\n                        <button\\n                          type=\\\"button\\\"\\n                          class=\\\"btn btn-sm btn-primary\\\"\\n                          ng-click=\\\"ctrl.state.increaseSize = true\\\"\\n                          ng-if=\\\"ctrl.volume.PersistentVolumeClaim.StorageClass.AllowVolumeExpansion\\\"\\n                          data-cy=\\\"k8sVolDetail-increaseSizeButton\\\"\\n                          >增加大小</button\\n                        >\\n                      </td>\\n                      <td ng-if=\\\"ctrl.state.increaseSize\\\">\\n                        <form name=\\\"kubernetesVolumeUpdateForm\\\">\\n                          <div class=\\\"form-inline\\\">\\n                            <div class=\\\"input-group input-group-sm\\\">\\n                              <input\\n                                type=\\\"number\\\"\\n                                class=\\\"form-control\\\"\\n                                name=\\\"size\\\"\\n                                ng-model=\\\"ctrl.state.volumeSize\\\"\\n                                placeholder=\\\"20\\\"\\n                                ng-min=\\\"0\\\"\\n                                min=\\\"0\\\"\\n                                ng-change=\\\"ctrl.onChangeSize()\\\"\\n                                required\\n                                data-cy=\\\"k8sVolDetail-increaseSizeInput\\\"\\n                              />\\n                              <span class=\\\"input-group-addon\\\" style=\\\"padding: 0\\\">\\n                                <select\\n                                  ng-model=\\\"ctrl.state.volumeSizeUnit\\\"\\n                                  ng-change=\\\"ctrl.onChangeSize()\\\"\\n                                  ng-options=\\\"unit for unit in ctrl.state.availableSizeUnits\\\"\\n                                  style=\\\"width: 100%; height: 100%\\\"\\n                                  data-cy=\\\"k8sVolDetail-increaseSizeUnits\\\"\\n                                ></select>\\n                              </span>\\n                            </div>\\n                            <button\\n                              type=\\\"button\\\"\\n                              class=\\\"btn btn-sm btn-primary\\\"\\n                              ng-disabled=\\\"!ctrl.sizeIsValid()\\\"\\n                              ng-click=\\\"ctrl.updateVolume()\\\"\\n                              data-cy=\\\"k8sVolDetail-updateSizeConfirm\\\"\\n                            >\\n                              更新大小\\n                            </button>\\n                            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"ctrl.state.increaseSize = false\\\" data-cy=\\\"k8sVolDetail-cancelUpdateSize\\\">\\n                              取消\\n                            </button>\\n                          </div>\\n\\n                          <div class=\\\"form-inline\\\">\\n                            <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\" ng-show=\\\"ctrl.state.errors.volumeSize || kubernetesVolumeUpdateForm.size.$invalid\\\">\\n                              <div class=\\\"vertical-center\\\" ng-messages=\\\"kubernetesVolumeUpdateForm.size.$error\\\">\\n                                <p ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 本栏为必填项。</p>\\n                              </div>\\n                              <p class=\\\"vertical-center\\\" ng-show=\\\"ctrl.state.errors.volumeSize\\\"\\n                                ><pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 新大小必须大于实际大小。</p\\n                              >\\n                            </div>\\n                          </div>\\n                        </form>\\n                      </td>\\n                    </tr>\\n                  </tbody>\\n                </table>\\n              </div>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volEventsTab\\\">\\n                <pr-icon icon=\\\"'svg-clockrewind'\\\" feather=\\\"true\\\"></pr-icon> Events\\n                <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                  {{ ctrl.state.eventWarningCount }} warning(s)\\n                </div>\\n              </uib-tab-heading>\\n              <kubernetes-events-datatable\\n                title-text=\\\"Events\\\"\\n                title-icon=\\\"file-text\\\"\\n                dataset=\\\"ctrl.events\\\"\\n                table-key=\\\"kubernetes.volume.events\\\"\\n                order-by=\\\"Date\\\"\\n                reverse-order=\\\"true\\\"\\n                loading=\\\"ctrl.state.eventsLoading\\\"\\n                refresh-callback=\\\"ctrl.getEvents\\\"\\n              >\\n              </kubernetes-events-datatable>\\n            </uib-tab>\\n\\n            <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.volume.PersistentVolumeClaim.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volYamlTab\\\"> <pr-icon icon=\\\"'code'\\\" feather=\\\"true\\\"></pr-icon> YAML </uib-tab-heading>\\n              <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n                <kubernetes-yaml-inspector key=\\\"volume-yaml\\\" data=\\\"ctrl.volume.PersistentVolumeClaim.Yaml\\\"></kubernetes-yaml-inspector>\\n              </div>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" ng-if=\\\"ctrl.isUsed(item)\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <kubernetes-integrated-applications-datatable\\n        dataset=\\\"ctrl.volume.Applications\\\"\\n        table-key=\\\"kubernetes.volume.applications\\\"\\n        order-by=\\\"Name\\\"\\n        refresh-callback=\\\"ctrl.getVolume\\\"\\n        title-text=\\\"Applications using this volume\\\"\\n        title-icon=\\\"svg-laptopcode\\\"\\n      >\\n      </kubernetes-integrated-applications-datatable>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/edit/volume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///86604\n");

}),

44000:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'存储卷'\\\" breadcrumbs=\\\"['存储卷']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n            <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'database'\\\" feather=\\\"true\\\"></pr-icon>\\n                存储卷\\n              </uib-tab-heading>\\n              <kubernetes-volumes-datatable\\n                dataset=\\\"ctrl.volumes\\\"\\n                table-key=\\\"kubernetes.volumes\\\"\\n                order-by=\\\"PersistentVolumeClaim.Name\\\"\\n                remove-action=\\\"ctrl.removeAction\\\"\\n                refresh-callback=\\\"ctrl.getVolumes\\\"\\n                data-cy=\\\"k8s-volumes-datatable\\\"\\n              >\\n              </kubernetes-volumes-datatable>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n              <uib-tab-heading class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'hard-drive'\\\" feather=\\\"true\\\"></pr-icon>\\n                存储\\n              </uib-tab-heading>\\n              <kubernetes-volumes-storages-datatable dataset=\\\"ctrl.storages\\\" table-key=\\\"kubernetes.volumes.storages\\\" order-by=\\\"Name\\\" refresh-callback=\\\"ctrl.getVolumes\\\">\\n              </kubernetes-volumes-storages-datatable>\\n            </uib-tab>\\n          </uib-tabset>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/volumes.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///44000\n");

}),

4483:

(function(module) {

eval("var _module_exports = \"<a class=\\\"ml-5 vertical-center\\\" href=\\\"{{ $ctrl.url }}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" ng-if=\\\"$ctrl.limitedToBE\\\">\\n  <ng-transclude></ng-transclude>\\n  <pr-icon icon=\\\"'briefcase'\\\" feather=\\\"true\\\" class-name=\\\"'icon icon-sm vertical-center'\\\"></pr-icon>\\n  <span class=\\\"be-indicator-label\\\">商业版功能</span>\\n</a>\\n\";;\nvar path = 'app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///4483\n");

}),

88659:

(function(module) {

eval("var _module_exports = \"<!--<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <div class=\\\"col-sm-12 form-section-title\\\">\\n          <span style=\\\"float: left\\\">\\n            {{ $ctrl.titleText }}\\n          </span>\\n          <span class=\\\"small\\\" style=\\\"float: right\\\" ng-if=\\\"$ctrl.dismissAction\\\">\\n            <a ng-click=\\\"$ctrl.dismissAction()\\\"><i class=\\\"fa fa-times\\\"></i> dismiss</a>\\n          </span>\\n        </div>\\n        <div class=\\\"form-group\\\">\\n          <ng-transclude></ng-transclude>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>-->\\n\";;\nvar path = 'app/portainer/components/InformationPanel/InformationPanelAngular.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///88659\n");

}),

54296:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n            删除\\n          </button>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"mx-4 mb-4 small text-muted\\\">\\n        <div class=\\\"\\\" ng-if=\\\"$ctrl.inheritFrom\\\">\\n          被标记为<code>inherited</code>的访问是继承自组的访问。它们不能在环境级别被删除或修改，但它们可以被覆盖。\\n        </div>\\n        <div class=\\\"\\\" ng-if=\\\"$ctrl.inheritFrom\\\"> 标记为<code>cover</code>的访问是覆盖相关用户/团队的组访问。 </div>\\n      </div>\\n\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Type'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                {{ item.Name }}\\n                <span ng-if=\\\"$ctrl.inheritFrom && item.Inherited\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">inherited</code></span>\\n                <span ng-if=\\\"$ctrl.inheritFrom && item.Override\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">cover</code></span>\\n              </td>\\n              <td>{{ item.Type }}</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"4\\\" class=\\\"text-center text-muted\\\">没有授权用户或团队。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/access-datatable/accessDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///54296\n");

}),

9420:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <table class=\\\"table table-hover\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <i class=\\\"fa fa-search searchIcon\\\" aria-hidden=\\\"true\\\"></i>\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"searchInput\\\"\\n        ng-model=\\\"$ctrl.state.textFilter\\\"\\n        ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n        placeholder=\\\"搜索...\\\"\\n        ng-model-options=\\\"{ debounce: 300 }\\\"\\n      />\\n    </div>\\n    <thead>\\n      <tr>\\n        <th>\\n          <a ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"> 名称 <span ng-show=\\\"$ctrl.state.orderBy == 'Name' && !$ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n            <span ng-show=\\\"$ctrl.state.orderBy == 'Name' && $ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-up\\\"></span>\\n          </a>\\n        </th>\\n        <th>\\n          <a ng-click=\\\"$ctrl.changeOrderBy('Type')\\\">\\n            Type\\n            <span ng-show=\\\"$ctrl.state.orderBy == 'Type' && !$ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n            <span ng-show=\\\"$ctrl.state.orderBy == 'Type' && $ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-up\\\"></span>\\n          </a>\\n        </th>\\n      </tr>\\n    </thead>\\n    <tbody>\\n      <tr\\n        ng-click=\\\"!item.Inherited && $ctrl.entryClick(item)\\\"\\n        ng-class=\\\"{ interactive: !item.Inherited }\\\"\\n        dir-paginate=\\\"item in $ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n      >\\n        <td>\\n          {{ item.Name }}\\n          <!-- <span class=\\\"image-tag label label-\\\">inherited</span> -->\\n          <span ng-if=\\\"item.Inherited\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">inherited</code></span>\\n        </td>\\n        <td>\\n          <i class=\\\"fa\\\" ng-class=\\\"item.Type === 'user' ? 'fa-user' : 'fa-users'\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n          {{ item.Type }}\\n        </td>\\n      </tr>\\n      <tr ng-if=\\\"!$ctrl.dataset\\\">\\n        <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n      </tr>\\n      <tr\\n        ng-if=\\\"\\n          $ctrl.dataset.length === 0 ||\\n          ($ctrl.dataset | filter: $ctrl.state.textFilter | orderBy: $ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit).length === 0\\n        \\\"\\n      >\\n        <td colspan=\\\"2\\\" class=\\\"text-center text-muted\\\">{{ $ctrl.emptyDatasetMessage }}</td>\\n      </tr>\\n    </tbody>\\n  </table>\\n  <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select ng-model=\\\"$ctrl.state.paginatedItemLimit\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/access-table/accessTable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9420\n");

}),

62495:

(function(module) {

eval("var _module_exports = \"<div>\\n  <div ng-if=\\\"!$ctrl.hideTitle\\\" class=\\\"col-sm-12 form-section-title\\\"> 访问控制 </div>\\n  <!-- access-control-switch -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label-class=\\\"'col-sm-2'\\\"\\n        checked=\\\"$ctrl.formData.AccessControlEnabled\\\"\\n        label=\\\"'启用访问控制'\\\"\\n        tooltip=\\\"'启用后，你可以限制对该资源的访问和管理。'\\\"\\n        on-change=\\\"($ctrl.onChangeEnablement)\\\"\\n        data-cy=\\\"portainer-accessMgmtToggle\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !access-control-switch -->\\n  <!-- restricted-access -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.AccessControlEnabled\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"boxselector_wrapper\\\">\\n        <div ng-if=\\\"$ctrl.isAdmin\\\">\\n          <input type=\\\"radio\\\" id=\\\"access_administrators\\\" ng-model=\\\"$ctrl.formData.Ownership\\\" value=\\\"administrators\\\" />\\n          <label for=\\\"access_administrators\\\" data-cy=\\\"portainer-selectAdminAccess\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'eye-off'\\\" feather=\\\"true\\\"></pr-icon>\\n              管理员\\n            </div>\\n            <p class=\\\"boxselector_content\\\">我想把这个资源的管理限制在只有管理员可以管理的范围内</p>\\n          </label>\\n        </div>\\n        <div ng-if=\\\"$ctrl.isAdmin\\\">\\n          <input type=\\\"radio\\\" id=\\\"access_restricted\\\" ng-model=\\\"$ctrl.formData.Ownership\\\" value=\\\"restricted\\\" />\\n          <label for=\\\"access_restricted\\\" data-cy=\\\"portainer-selectRestrictedAccess\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>\\n              受限的\\n            </div>\\n            <p class=\\\"boxselector_content\\\"> 我想把这个资源的管理限制在一组用户和/或团队中 </p>\\n          </label>\\n        </div>\\n        <div ng-if=\\\"!$ctrl.isAdmin\\\">\\n          <input type=\\\"radio\\\" id=\\\"access_private\\\" ng-model=\\\"$ctrl.formData.Ownership\\\" value=\\\"private\\\" />\\n          <label for=\\\"access_private\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'eye-off'\\\" feather=\\\"true\\\"></pr-icon>\\n              私有的\\n            </div>\\n            <p> 我希望这个资源仅能由我自己管理。 </p>\\n          </label>\\n        </div>\\n        <div ng-if=\\\"!$ctrl.isAdmin && $ctrl.availableTeams.length > 0\\\">\\n          <input type=\\\"radio\\\" id=\\\"access_restricted\\\" ng-model=\\\"$ctrl.formData.Ownership\\\" value=\\\"restricted\\\" />\\n          <label for=\\\"access_restricted\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>\\n\\n              受限的\\n            </div>\\n            <p ng-if=\\\"$ctrl.availableTeams.length === 1\\\">\\n              我希望我的团队的任何成员 (<b>{{ $ctrl.availableTeams[0].Name }}</b\\n              >) 都能管理这个资源\\n            </p>\\n            <p ng-if=\\\"$ctrl.availableTeams.length > 1\\\"> 我想把这个资源的管理限制在我的一个或多个团队中。 </p>\\n          </label>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- restricted-access -->\\n  <!-- authorized-teams -->\\n  <div\\n    class=\\\"form-group mt-4\\\"\\n    ng-if=\\\"$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && ($ctrl.isAdmin || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1))\\\"\\n  >\\n    <div class=\\\"w-full vertical-center\\\">\\n      <label for=\\\"group-access\\\" class=\\\"control-label text-left col-sm-3 col-lg-2 !pt-0\\\">\\n        授权团队\\n        <portainer-tooltip\\n          ng-if=\\\"$ctrl.isAdmin && $ctrl.availableTeams.length > 0\\\"\\n          message=\\\"'你可以选择哪些团队将能够管理该资源。'\\\"\\n        ></portainer-tooltip>\\n        <portainer-tooltip\\n          ng-if=\\\"!$ctrl.isAdmin && $ctrl.availableTeams.length > 1\\\"\\n          message=\\\"'由于你是多个团队的成员，你可以选择哪些团队将能够管理该资源。'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <span ng-if=\\\"$ctrl.isAdmin && $ctrl.availableTeams.length === 0\\\" class=\\\"small text-muted\\\">\\n          你还没有创建任何团队。前往 <a ui-sref=\\\"portainer.teams\\\">团队视图</a> 来管理团队。\\n        </span>\\n\\n        <por-access-control-form-team-selector\\n          ng-if=\\\"($ctrl.isAdmin && $ctrl.availableTeams.length > 0) || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1)\\\"\\n          options=\\\"$ctrl.availableTeams\\\"\\n          value=\\\"$ctrl.formData.AuthorizedTeams\\\"\\n          input-id=\\\"'teams-selector'\\\"\\n          on-change=\\\"($ctrl.onAuthorizedTeamsChange)\\\"\\n        ></por-access-control-form-team-selector>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <!-- !authorized-teams -->\\n  <!-- authorized-users -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && $ctrl.isAdmin\\\">\\n    <div class=\\\"w-full vertical-center\\\">\\n      <label for=\\\"group-access\\\" class=\\\"control-label text-left col-sm-3 col-lg-2 !pt-0\\\">\\n       授权用户\\n        <portainer-tooltip\\n          ng-if=\\\"$ctrl.isAdmin && $ctrl.availableUsers.length > 0\\\"\\n          message=\\\"'你可以选择哪些用户能够管理这个资源。'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <span ng-if=\\\"$ctrl.availableUsers.length === 0\\\" class=\\\"small text-muted\\\">\\n          你还没有创建任何用户。 转到 <a ui-sref=\\\"portainer.users\\\">用户视图</a> 去管理用户。\\n        </span>\\n\\n        <por-access-control-form-user-selector\\n          ng-if=\\\"$ctrl.availableUsers.length > 0\\\"\\n          options=\\\"$ctrl.availableUsers\\\"\\n          value=\\\"$ctrl.formData.AuthorizedUsers\\\"\\n          input-id=\\\"'users-selector'\\\"\\n          on-change=\\\"($ctrl.onAuthorizedUsersChange)\\\"\\n        ></por-access-control-form-user-selector>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !authorized-users -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/accessControlForm/porAccessControlForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62495\n");

}),

63185:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget ng-if=\\\"ctrl.availableUsersAndTeams && ctrl.accessControlledEntity\\\">\\n      <rd-widget-header icon=\\\"user-check\\\" feather-icon=\\\"true\\\" title-text=\\\"创建访问权限\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div ng-if=\\\"ctrl.entityType !== 'registry'\\\" class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 small text-warning\\\">\\n              <p class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                增加用户访问权限将要求受影响的用户退出并登录，以便考虑到这些变化。\\n              </p>\\n            </span>\\n          </div>\\n\\n          <por-access-management-users-selector\\n            options=\\\"ctrl.availableUsersAndTeams\\\"\\n            value=\\\"ctrl.formValues.multiselectOutput\\\"\\n            on-change=\\\"(ctrl.onChangeUsersAndTeams)\\\"\\n          ></por-access-management-users-selector>\\n\\n          <div class=\\\"form-group\\\" ng-if=\\\"ctrl.entityType !== 'registry'\\\">\\n            <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 角色 </label>\\n            <div class=\\\"col-sm-9 col-lg-6\\\">\\n              <div class=\\\"flex items-center\\\">\\n                <div>\\n                  <select\\n                    class=\\\"form-control\\\"\\n                    ng-model=\\\"ctrl.formValues.selectedRole\\\"\\n                    ng-options=\\\"role as ctrl.roleLabel(role) disable when ctrl.isRoleLimitedToBE(role) for role in ctrl.roles\\\"\\n                  >\\n                  </select>\\n                </div>\\n                <be-feature-indicator feature=\\\"ctrl.limitedFeature\\\" class=\\\"space-left\\\"></be-feature-indicator>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <!-- actions -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"submit\\\"\\n                class=\\\"btn btn-primary btn-sm vertical-center\\\"\\n                ng-disabled=\\\"ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress\\\"\\n                ng-click=\\\"ctrl.authorizeAccess()\\\"\\n                button-spinner=\\\"ctrl.actionInProgress\\\"\\n                data-cy=\\\"access-createAccess\\\"\\n              >\\n                <span ng-hide=\\\"ctrl.state.actionInProgress\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>\\n                  创建访问\\n                </span>\\n                <span ng-show=\\\"ctrl.state.actionInProgress\\\">创建访问中...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <access-datatable\\n      ng-if=\\\"ctrl.authorizedUsersAndTeams\\\"\\n      title-text=\\\"访问\\\"\\n      title-icon=\\\"user-x\\\"\\n      table-key=\\\"{{ 'access_' + ctrl.entityType }}\\\"\\n      order-by=\\\"Name\\\"\\n      show-warning=\\\"ctrl.entityType !== 'registry'\\\"\\n      is-update-enabled=\\\"ctrl.entityType !== 'registry'\\\"\\n      show-roles=\\\"ctrl.entityType !== 'registry'\\\"\\n      roles=\\\"ctrl.roles\\\"\\n      inherit-from=\\\"ctrl.inheritFrom\\\"\\n      dataset=\\\"ctrl.authorizedUsersAndTeams\\\"\\n      update-action=\\\"ctrl.updateAction\\\"\\n      remove-action=\\\"ctrl.unauthorizeAccess\\\"\\n    >\\n    </access-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/accessManagement/porAccessManagement.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///63185\n");

}),

3401:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 small text-muted\\\">\\n  你可以选择哪个环境应该是这个组的一部分，把它们移到相关的环境表中。只需点击任何环境条目，就可以把它从一个表\\n  移到另一个表中。\\n</div>\\n<div class=\\\"col-sm-12\\\" style=\\\"margin-top: 20px\\\">\\n  <div class=\\\"table-row-container\\\">\\n    <!-- available-endpoints -->\\n    <div class=\\\"datatable table-in-row\\\">\\n      <group-association-table\\n        loaded=\\\"$ctrl.loaded\\\"\\n        page-type=\\\"$ctrl.pageType\\\"\\n        table-type=\\\"available\\\"\\n        retrieve-page=\\\"$ctrl.getAvailableEndpoints\\\"\\n        dataset=\\\"$ctrl.endpoints.available\\\"\\n        entry-click=\\\"$ctrl.associateEndpoint\\\"\\n        pagination-state=\\\"$ctrl.state.available\\\"\\n        empty-dataset-message=\\\"No environment available\\\"\\n        tags=\\\"$ctrl.tags\\\"\\n        show-tags=\\\"true\\\"\\n        groups=\\\"$ctrl.groups\\\"\\n        show-groups=\\\"true\\\"\\n        has-backend-pagination=\\\"true\\\"\\n        title=\\\"可用的环境\\\"\\n        data-cy=\\\"edgeGroupCreate-availableEndpoints\\\"\\n      ></group-association-table>\\n    </div>\\n    <!-- !available-endpoints -->\\n    <!-- associated-endpoints -->\\n    <div class=\\\"datatable table-in-row\\\">\\n      <group-association-table\\n        loaded=\\\"$ctrl.loaded\\\"\\n        page-type=\\\"$ctrl.pageType\\\"\\n        table-type=\\\"associated\\\"\\n        retrieve-page=\\\"$ctrl.getAssociatedEndpoints\\\"\\n        dataset=\\\"$ctrl.endpoints.associated\\\"\\n        entry-click=\\\"$ctrl.dissociateEndpoint\\\"\\n        pagination-state=\\\"$ctrl.state.associated\\\"\\n        empty-dataset-message=\\\"No associated environment\\\"\\n        tags=\\\"$ctrl.tags\\\"\\n        show-tags=\\\"true\\\"\\n        groups=\\\"$ctrl.groups\\\"\\n        show-groups=\\\"true\\\"\\n        has-backend-pagination=\\\"true\\\"\\n        title=\\\"相关的环境\\\"\\n        data-cy=\\\"edgeGroupCreate-associatedEndpoints\\\"\\n      ></group-association-table>\\n    </div>\\n    <!-- !associated-endpoints -->\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/associated-endpoints-selector/associatedEndpointsSelector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///3401\n");

}),

78254:

(function(module) {

eval("var _module_exports = \"<information-panel title-text=\\\"Information\\\">\\n  <span class=\\\"small\\\">\\n    <p class=\\\"text-muted\\\">\\n      <i class=\\\"fa fa-flask orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n      This is a beta feature.\\n    </p>\\n  </span>\\n</information-panel>\\n\";;\nvar path = 'app/portainer/components/beta-panel/betaPanel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///78254\n");

}),

98778:

(function(module) {

eval("var _module_exports = \"<textarea id=\\\"{{ $ctrl.identifier }}\\\" class=\\\"form-control\\\" placeholder=\\\"{{ $ctrl.placeholder }}\\\"></textarea>\\n\";;\nvar path = 'app/portainer/components/code-editor/codeEditor.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98778\n");

}),

18164:

(function(module) {

eval("var _module_exports = \"<span>\\n  <button type=\\\"button\\\" class=\\\"btn btn-link nopadding\\\" ng-click=\\\"$ctrl.copyValueText()\\\" title=\\\"Copy Value\\\">\\n    <pr-icon icon=\\\"'clipboard'\\\" feather=\\\"true\\\"></pr-icon>\\n    Copy\\n  </button>\\n  <span ng-class=\\\"{ 'copy-button-fadeout': $ctrl.state.isFading }\\\" class=\\\"copy-button-copy-text\\\">\\n    <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon>\\n    copied\\n  </span>\\n</span>\\n\";;\nvar path = 'app/portainer/components/copy-button/copy-button.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///18164\n");

}),

48794:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"commonCustomTemplateForm\\\">\\n  <!-- title-input -->\\n  <div class=\\\"form-group mb-0\\\">\\n    <label for=\\\"template_title\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\"> 标题 </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.formValues.Title\\\"\\n        ng-pattern=\\\"$ctrl.nameRegex\\\"\\n        id=\\\"template_title\\\"\\n        name=\\\"template_title\\\"\\n        placeholder=\\\"例如 mytemplate\\\"\\n        auto-focus\\n        required\\n      />\\n      <span class=\\\"help-block\\\">\\n        <div ng-show=\\\"commonCustomTemplateForm.template_title.$invalid\\\">\\n          <div class=\\\"mt-2 small text-warning\\\">\\n            <div ng-messages=\\\"commonCustomTemplateForm.template_title.$error\\\">\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 标题是必填项。 </p>\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"pattern\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                该字段必须由小写字母数字字符组成， '_' 或 '-' (例如 'my-name', or 'abc-123').\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </span>\\n    </div>\\n  </div>\\n  <!-- !title-input -->\\n\\n  <!-- description-input -->\\n  <div class=\\\"form-group mb-0\\\">\\n    <label for=\\\"description\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">描述</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"description\\\" ng-model=\\\"$ctrl.formValues.Description\\\" name=\\\"description\\\" required />\\n      <span class=\\\"help-block\\\">\\n        <div class=\\\"mt-2 small text-warning\\\">\\n          <div ng-show=\\\"commonCustomTemplateForm.description.$invalid\\\">\\n            <div ng-messages=\\\"commonCustomTemplateForm.description.$error\\\">\\n              <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon> 描述必须填写。</p>\\n            </div>\\n          </div>\\n        </div>\\n      </span>\\n    </div>\\n  </div>\\n  <!-- !description-input -->\\n\\n  <!-- note-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"note\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">备注</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"note\\\" ng-model=\\\"$ctrl.formValues.Note\\\" />\\n    </div>\\n  </div>\\n  <!-- !note-input -->\\n\\n  <!-- icon-url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"icon-url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Icon URL</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"icon-url\\\" ng-model=\\\"$ctrl.formValues.Logo\\\" />\\n    </div>\\n  </div>\\n  <!-- !icon-url-input -->\\n\\n  <!-- platform-input -->\\n  <div ng-if=\\\"$ctrl.showPlatformField\\\" class=\\\"form-group\\\">\\n    <label for=\\\"platform\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">平台</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.Platform\\\" ng-options=\\\"+(opt.value) as opt.label for opt in $ctrl.platformTypes\\\"> </select>\\n    </div>\\n  </div>\\n  <!-- !platform-input -->\\n\\n  <!-- platform-input -->\\n  <div ng-if=\\\"$ctrl.showTypeField\\\" class=\\\"form-group\\\">\\n    <label for=\\\"platform\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">类别</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.Type\\\" ng-options=\\\"+(opt.value) as opt.label for opt in $ctrl.templateTypes\\\"> </select>\\n    </div>\\n  </div>\\n  <!-- !platform-input -->\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/custom-template-common-fields/customTemplateCommonFields.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48794\n");

}),

43921:

(function(module) {

eval("var _module_exports = \"<div>\\n  <div class=\\\"form-group pt-3\\\">\\n    <label for=\\\"stack_template\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 模板 </label>\\n    <div class=\\\"col-sm-8 vertical-center\\\">\\n      <select\\n        ng-if=\\\"$ctrl.templates.length\\\"\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.value\\\"\\n        ng-options=\\\"template.Id as template.label for template in $ctrl.templates\\\"\\n        ng-change=\\\"$ctrl.handleChangeTemplate($ctrl.value)\\\"\\n      >\\n        <option value=\\\"\\\" label=\\\"Select a Custom template\\\" disabled selected=\\\"selected\\\"> </option>\\n      </select>\\n      <span class=\\\"small text-muted pt-[7px]\\\" ng-if=\\\"!$ctrl.templates.length\\\">\\n        没有可用的自定义模板。请到 <a ui-state=\\\"$ctrl.newTemplatePath\\\">自定义模板视图</a> 中创建一个。\\n      </span>\\n    </div>\\n  </div>\\n\\n  <!-- description -->\\n  <div ng-if=\\\"$ctrl.selectedTemplate.note\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.selectedTemplate.note\\\"></div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !description -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/custom-template-selector/custom-template-selector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///43921\n");

}),

81704:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\" class-name=\\\"'icon-nested-blue'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n          自定义模板\\n        </div>\\n        <div class=\\\"searchBar vertical-center !mr-0\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索模板...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-state=\\\"$ctrl.createPath\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>\\n            添加自定义模板\\n          </button>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"blocklist !px-[20px] gap-y-2 !pb-[20px]\\\">\\n        <template-item\\n          ng-repeat=\\\"template in $ctrl.templates | filter:$ctrl.state.textFilter\\\"\\n          model=\\\"template\\\"\\n          type-label=\\\"{{ $ctrl.typeLabel(template.Type) }}\\\"\\n          on-select=\\\"($ctrl.onSelectClick)\\\"\\n        >\\n          <template-item-actions>\\n            <div ng-if=\\\"$ctrl.isEditAllowed(template)\\\" class=\\\"vertical-center\\\">\\n              <a ui-state=\\\"$ctrl.editPath\\\" ui-state-params=\\\"{id: template.Id}\\\" ng-click=\\\"$event.stopPropagation();\\\" class=\\\"btn btn-secondary btn-sm vertical-center\\\">\\n                <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                编辑\\n              </a>\\n              <button class=\\\"btn btn-dangerlight btn-sm vertical-center\\\" ng-click=\\\"$ctrl.onDeleteClick(template.Id); $event.stopPropagation();\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n                删除\\n              </button>\\n            </div>\\n          </template-item-actions>\\n        </template-item>\\n        <div ng-if=\\\"!$ctrl.templates\\\" class=\\\"text-center text-muted\\\"> 加载中... </div>\\n        <div ng-if=\\\"($ctrl.templates | filter: $ctrl.state.textFilter).length === 0\\\" class=\\\"text-center text-muted\\\"> 没有可用的模板。 </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/custom-templates-list/customTemplatesList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///81704\n");

}),

24122:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\" style=\\\"margin-top: 25px\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          <span>{{ $ctrl.titleText }}</span>\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar\\\">\\n          <button\\n            ng-if=\\\"!$ctrl.endpointType\\\"\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n            <span>删除</span>\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary vertical-center\\\" ng-click=\\\"$ctrl.onClickAdd()\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n            <span>添加访问令牌</span>\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'描述'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'description'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'description' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('description')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'前缀'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'prefix'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'prefix' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('prefix')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'dateCreated'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'dateCreated' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('dateCreated')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'最后使用'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'lastUsed'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'lastUsed' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('lastUsed')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                {{ item.description }}\\n              </td>\\n              <td>\\n                {{ item.prefix }}\\n              </td>\\n              <td>\\n                {{ item.dateCreated | getisodatefromtimestamp }}\\n              </td>\\n              <td>\\n                <span ng-if=\\\"item.lastUsed > 0\\\">{{ item.lastUsed | getisodatefromtimestamp }}</span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///24122\n");

}),

58430:

(function(module) {

eval("var _module_exports = \"<span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.state.isOpen }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.state.isOpen\\\">\\n  <span uib-dropdown-toggle aria-label=\\\"Columns\\\">\\n    <pr-icon icon=\\\"'columns'\\\" feather=\\\"true\\\"></pr-icon>\\n  </span>\\n  <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n    <div class=\\\"tableMenu\\\">\\n      <div class=\\\"menuHeader\\\"> 显示/隐藏列 </div>\\n      <div class=\\\"menuContent\\\">\\n        <div class=\\\"md-checkbox\\\" ng-repeat=\\\"(key, value) in $ctrl.columns\\\">\\n          <input id=\\\"col_vis_{{::key}}\\\" ng-change=\\\"$ctrl.onChange($ctrl.columns)\\\" type=\\\"checkbox\\\" ng-model=\\\"value.display\\\" />\\n          <label for=\\\"col_vis_{{::key}}\\\">{{ value.label }}</label>\\n        </div>\\n      </div>\\n      <div>\\n        <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.state.isOpen = false;\\\">关闭</a>\\n      </div>\\n    </div>\\n  </div>\\n</span>\\n\";;\nvar path = 'app/portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///58430\n");

}),

75970:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            auto-focus\\n            placeholder=\\\"搜索...\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"endpoint-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"endpoint-removeEndpointButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n            <span>删除</span>\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary h-fit\\\" ng-click=\\\"$ctrl.setReferrer()\\\" ui-sref=\\\"portainer.wizard.endpoints\\\" data-cy=\\\"endpoint-addEndpointButton\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n            <span>添加环境</span>\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"endpoint-endpointTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'名称'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'类别'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'URL'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'URL'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'URL' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('URL')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'群组名'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'GroupName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'GroupName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('GroupName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header col-title=\\\"'操作'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in $ctrl.state.filteredDataSet | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n              total-items=\\\"$ctrl.state.totalFilteredDataSet\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"portainer.endpoints.endpoint({id: item.Id})\\\">{{ item.Name }}</a>\\n              </td>\\n              <td>\\n                <span>\\n                  <i ng-class=\\\"item.Type | endpointtypeicon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                  {{ item.Type | endpointtypename }}\\n                </span>\\n              </td>\\n              <td>\\n                <span ng-if=\\\"item.Type !== 4\\\">{{ item.URL | stripprotocol }}</span>\\n                <span ng-if=\\\"item.Type === 4\\\">-</span>\\n              </td>\\n              <td>{{ item.GroupName }}</td>\\n              <td>\\n                <a ui-sref=\\\"portainer.endpoints.endpoint.access({id: item.Id})\\\">\\n                  <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>\\n                  管理访问权限\\n                </a>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.loading\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No environment available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onPageChange(newPageNumber, oldPageNumber)\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/endpoints-datatable/endpointsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///75970\n");

}),

29656:

(function(module) {

eval("var _module_exports = \"<div uib-dropdown dropdown-append-to-body auto-close=\\\"outsideClick\\\" is-open=\\\"$ctrl.isOpen\\\">\\n  <span ng-transclude></span>\\n  <div class=\\\"filter-button\\\">\\n    <span uib-dropdown-toggle class=\\\"table-filter vertical-center\\\" ng-class=\\\"{ 'filter-active': $ctrl.isEnabled() }\\\">\\n      Filter\\n      <pr-icon ng-if=\\\"$ctrl.isEnabled()\\\" icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon>\\n      <pr-icon ng-if=\\\"!$ctrl.isEnabled()\\\" icon=\\\"'filter'\\\" feather=\\\"true\\\"></pr-icon>\\n    </span>\\n  </div>\\n  <div class=\\\"dropdown-menu\\\" style=\\\"min-width: 0\\\" uib-dropdown-menu>\\n    <div class=\\\"tableMenu\\\">\\n      <div class=\\\"menuContent\\\">\\n        <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.labels track by filter.value\\\">\\n          <input\\n            id=\\\"filter_{{ $ctrl.filterKey }}_{{ $index }}\\\"\\n            type=\\\"checkbox\\\"\\n            ng-value=\\\"filter.value\\\"\\n            ng-checked=\\\"$ctrl.state.includes(filter.value)\\\"\\n            ng-click=\\\"$ctrl.onChangeItem(filter.value)\\\"\\n          />\\n          <label for=\\\"filter_{{ $ctrl.filterKey }}_{{ $index }}\\\">\\n            {{ filter.label }}\\n          </label>\\n        </div>\\n      </div>\\n      <div>\\n        <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.isOpen = false;\\\"> Close </a>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/filter/datatable-filter.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///29656\n");

}),

34095:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"Search for a group...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"endpointGroup-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"endpointGroup-removeGroupButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n            Remove\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary h-fit\\\" ui-sref=\\\"portainer.groups.new\\\" data-cy=\\\"endpointGroup-addGroupButton\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>Add group\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"endpointGroup-endpointGroupTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"endpointGroup-selectAllCheckbox\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"portainer.groups.group({id: item.Id})\\\">{{ item.Name }}</a>\\n              </td>\\n              <td>\\n                <div class=\\\"vertical-center\\\">\\n                  <a ui-sref=\\\"portainer.groups.group.access({id: item.Id})\\\">\\n                    <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>\\n                    管理访问权限\\n                  </a>\\n                </div>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No group available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/groups-datatable/groupsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///34095\n");

}),

5050:

(function(module) {

eval("var _module_exports = \"<div class=\\\"paginationControls\\\">\\n  <form class=\\\"form-inline\\\">\\n    <span class=\\\"limitSelector\\\">\\n      <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n      <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.limit\\\" ng-change=\\\"$ctrl.onChangeLimit($ctrl.limit)\\\">\\n        <option ng-if=\\\"$ctrl.enableNoLimit\\\" ng-value=\\\"0\\\">All</option>\\n        <option ng-value=\\\"10\\\">10</option>\\n        <option ng-value=\\\"25\\\">25</option>\\n        <option ng-value=\\\"50\\\">50</option>\\n        <option ng-value=\\\"100\\\">100</option>\\n      </select>\\n    </span>\\n    <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onChangePage(newPageNumber)\\\"> </dir-pagination-controls>\\n  </form>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/pagination/pagination.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///5050\n");

}),

81853:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索注册表...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"registry-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n          <button\\n            ng-if=\\\"!$ctrl.endpointType\\\"\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"registry-removeRegistryButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n          </button>\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\" ui-sref=\\\"portainer.registries.new\\\" data-cy=\\\"registry-addRegistryButton\\\">\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>添加注册表\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'URL'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'URL'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'URL' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('URL')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr>\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" disabled />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <span><default-registry-name></default-registry-name></span>\\n              </td>\\n              <td> <default-registry-domain></default-registry-domain> </td>\\n              <td>\\n                <default-registry-action ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\"></default-registry-action>\\n              </td>\\n            </tr>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"portainer.registries.registry({id: item.Id})\\\" ng-if=\\\"$ctrl.enableGoToLink(item)\\\">{{ item.Name }}</a>\\n                <span ng-if=\\\"!$ctrl.enableGoToLink(item)\\\">{{ item.Name }}</span>\\n                <span ng-if=\\\"item.Authentication\\\" style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\">authentication-enabled</span>\\n              </td>\\n              <td>\\n                {{ item.URL }}\\n              </td>\\n              <td>\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-link hover:no-underline !ml-0 px-0 vertical-center\\\"\\n                  ng-if=\\\"$ctrl.canManageAccess(item)\\\"\\n                  ng-click=\\\"$ctrl.redirectToManageAccess(item)\\\"\\n                >\\n                  <pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon>管理访问权限\\n                </button>\\n                <be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\" ng-if=\\\"$ctrl.canBrowse(item)\\\">\\n                  <span class=\\\"text-muted space-left\\\" style=\\\"padding-right: 5px\\\"> <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon> 浏览 </span>\\n                </be-feature-indicator>\\n\\n                <span ng-if=\\\"!$ctrl.canBrowse(item) && !$ctrl.canManageAccess(item)\\\"> - </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/registries-datatable/registriesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///81853\n");

}),

39477:

(function(module) {

eval("var _module_exports = \"<i\\n  class=\\\"fa fa-sort-alpha-down\\\"\\n  ng-class=\\\"{\\n    'fa-sort-alpha-down': !$ctrl.reverseOrder,\\n    'fa-sort-alpha-up': $ctrl.reverseOrder,\\n  }\\\"\\n  aria-hidden=\\\"true\\\"\\n  ng-if=\\\"$ctrl.isCurrentSortOrder()\\\"\\n></i>\\n\";;\nvar path = 'app/portainer/components/datatables/sort-icon/datatable-sort-icon.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///39477\n");

}),

68861:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\" ng-if=\\\"$ctrl.createEnabled\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"'layers'\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center !mr-0\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索堆栈...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n            data-cy=\\\"stack-searchInput\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            authorization=\\\"PortainerStackDelete\\\"\\n            ng-disabled=\\\"!$ctrl.createEnabled || $ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"stack-removeStackButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n          </button>\\n          <button\\n            ng-disabled=\\\"!$ctrl.createEnabled\\\"\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-primary h-fit vertical-center !ml-0\\\"\\n            ui-sref=\\\"docker.stacks.newstack\\\"\\n            authorization=\\\"PortainerStackCreate\\\"\\n            data-cy=\\\"stack-addStackButton\\\"\\n          >\\n            <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>添加堆栈\\n          </button>\\n        </div>\\n        <div class=\\\"settings\\\">\\n          <datatable-columns-visibility columns=\\\"$ctrl.columnVisibility.columns\\\" on-change=\\\"($ctrl.onColumnVisibilityChange)\\\"></datatable-columns-visibility>\\n          <span class=\\\"setting ml-2\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n            <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n              <pr-icon icon=\\\"'more-vertical'\\\" feather=\\\"true\\\"></pr-icon>\\n            </span>\\n            <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n              <div class=\\\"tableMenu\\\">\\n                <div class=\\\"menuHeader\\\"> 表格设置 </div>\\n                <div class=\\\"menuContent\\\">\\n                  <div>\\n                    <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n                      <input id=\\\"setting_all_orphaned_stacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.allOrphanedStacks\\\" ng-change=\\\"$ctrl.onSettingsAllOrphanedStacksChange()\\\" />\\n                      <label for=\\\"setting_all_orphaned_stacks\\\">显示所有孤立堆栈</label>\\n                    </div>\\n                    <div class=\\\"md-checkbox\\\">\\n                      <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n                      <label for=\\\"setting_auto_refresh\\\">自动刷新</label>\\n                    </div>\\n                    <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n                      <label for=\\\"settings_refresh_rate\\\"> 刷新频率 </label>\\n                      <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n                        <option value=\\\"10\\\">10s</option>\\n                        <option value=\\\"30\\\">30s</option>\\n                        <option value=\\\"60\\\">1min</option>\\n                        <option value=\\\"120\\\">2min</option>\\n                        <option value=\\\"300\\\">5min</option>\\n                      </select>\\n                      <span>\\n                        <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div>\\n                  <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">关闭</a>\\n                </div>\\n              </div>\\n            </div>\\n          </span>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"stack-stackTable\\\">\\n          <thead>\\n            <tr>\\n              <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\">\\n                <div class=\\\"flex flex-row flex-no-wrap gap-1\\\">\\n                  <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'名称'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                  <div>\\n                    <span uib-dropdown-toggle ng-class=\\\"['table-filter vertical-center !ml-1', { 'filter-active': $ctrl.filters.state.enabled }]\\\">\\n                      筛选\\n                      <pr-icon ng-if=\\\"$ctrl.filters.state.enabled\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" size=\\\"'sm'\\\"></pr-icon>\\n                      <pr-icon ng-if=\\\"!$ctrl.filters.state.enabled\\\" icon=\\\"'filter'\\\" feather=\\\"true\\\" size=\\\"'sm'\\\"></pr-icon>\\n                    </span>\\n                  </div>\\n                  <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n                    <div class=\\\"tableMenu\\\">\\n                      <div class=\\\"menuHeader\\\"> 按活动筛选 </div>\\n                      <div class=\\\"menuContent\\\">\\n                        <div class=\\\"md-checkbox\\\">\\n                          <input id=\\\"filter_usage_activeStacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showActiveStacks\\\" ng-change=\\\"$ctrl.onFilterChange()\\\" />\\n                          <label for=\\\"filter_usage_activeStacks\\\">活动堆栈</label>\\n                        </div>\\n                        <div class=\\\"md-checkbox\\\">\\n                          <input id=\\\"filter_usage_unactiveStacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUnactiveStacks\\\" ng-change=\\\"$ctrl.onFilterChange()\\\" />\\n                          <label for=\\\"filter_usage_unactiveStacks\\\">非活动堆栈</label>\\n                        </div>\\n                      </div>\\n                      <div>\\n                        <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">关闭</a>\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'类型'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th><table-column-header col-title=\\\"'控制权'\\\" can-sort=\\\"false\\\"></table-column-header></th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'创建于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.CreationDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.CreationDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.CreationDate')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th ng-if=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n                <table-column-header\\n                  col-title=\\\"'更新于'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.UpdateDate'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.UpdateDate' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.UpdateDate')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'所有权'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-if=\\\"!$ctrl.offlineMode\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a\\n                  ng-if=\\\"!$ctrl.offlineMode && $ctrl.createEnabled\\\"\\n                  ui-sref=\\\"docker.stacks.stack({ name: item.Name, id: item.Id, type: item.Type, regular: item.Regular, external: item.External, orphaned: item.Orphaned, orphanedRunning: item.OrphanedRunning })\\\"\\n                  >{{ item.Name }}</a\\n                >\\n                <span ng-if=\\\"$ctrl.offlineMode\\\">{{ item.Name }}</span>\\n                <span ng-if=\\\"item.Regular && item.Status == 2\\\" class=\\\"label label-warning image-tag ml-2\\\">未激活</span>\\n              </td>\\n              <td>{{ item.Type === 1 ? 'Swarm' : 'Compose' }}</td>\\n              <td>\\n                <span\\n                  ng-if=\\\"item.Orphaned\\\"\\n                  class=\\\"interactive vertical-center\\\"\\n                  tooltip-append-to-body=\\\"true\\\"\\n                  tooltip-placement=\\\"bottom\\\"\\n                  tooltip-class=\\\"portainer-tooltip\\\"\\n                  uib-tooltip=\\\"这个堆栈是在一个不再在Portainer中注册的环境中创建的。\\\"\\n                >\\n                  Orphaned\\n                  <pr-icon icon=\\\"'alert-circle'\\\" feather=\\\"true\\\" class-name=\\\"'ml-0.5'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                </span>\\n                <span\\n                  ng-if=\\\"item.External\\\"\\n                  class=\\\"interactive vertical-center\\\"\\n                  tooltip-append-to-body=\\\"true\\\"\\n                  tooltip-placement=\\\"bottom\\\"\\n                  tooltip-class=\\\"portainer-tooltip\\\"\\n                  uib-tooltip=\\\"这个堆栈是在Portainer之外创建的。对这个堆栈的控制是有限的。\\\"\\n                >\\n                  有限制的\\n                  <pr-icon icon=\\\"'alert-circle'\\\" feather=\\\"true\\\" class-name=\\\"'ml-0.5'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                </span>\\n                <span ng-if=\\\"item.Regular\\\">全部的</span>\\n              </td>\\n              <td>\\n                <span ng-if=\\\"item.CreationDate\\\">{{ item.CreationDate | getisodatefromtimestamp }} {{ item.CreatedBy ? 'by ' + item.CreatedBy : '' }}</span>\\n                <span ng-if=\\\"!item.CreationDate\\\"> - </span>\\n              </td>\\n              <td ng-if=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n                <span ng-if=\\\"item.UpdateDate\\\">{{ item.UpdateDate | getisodatefromtimestamp }} {{ item.UpdatedBy ? 'by ' + item.UpdatedBy : '' }}</span>\\n                <span ng-if=\\\"!item.UpdateDate\\\"> - </span>\\n              </td>\\n              <td>\\n                <span class=\\\"vertical-center\\\">\\n                  <pr-icon ng-attr-icon=\\\"item.ResourceControl.Ownership | ownershipicon\\\" feather=\\\"true\\\" class-name=\\\"'icon ml-0.5'\\\"></pr-icon>\\n                  {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n                </span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\" data-cy=\\\"stacks-loadingTableRow\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\" data-cy=\\\"stacks-noStackTableRow\\\">\\n              <td colspan=\\\"6\\\" class=\\\"text-center text-muted\\\">没有可用堆栈。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\">\\n          {{ $ctrl.state.selectedItemCount }}\\n          所选项目\\n        </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"mr-1\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/stacks-datatable/stacksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///68861\n");

}),

83287:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap w-full relative\\\">\\n      <div class=\\\"toolBarTitle vertical-center\\\">\\n        <div class=\\\"widget-icon space-right\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n        </div>\\n\\n        {{ $ctrl.titleText }}\\n      </div>\\n      <div class=\\\"searchBar vertical-center\\\">\\n        <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"searchInput\\\"\\n          ng-model=\\\"$ctrl.state.textFilter\\\"\\n          ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n          placeholder=\\\"搜索...\\\"\\n          ng-model-options=\\\"{ debounce: 300 }\\\"\\n        />\\n      </div>\\n      <div class=\\\"actionBar\\\">\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n          ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n          ng-click=\\\"$ctrl.onRemove($ctrl.state.selectedItems)\\\"\\n        >\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Remove\\n        </button>\\n      </div>\\n    </div>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                  <label for=\\\"select_all\\\"></label>\\n                </span>\\n                <table-column-header\\n                  col-title=\\\"$ctrl.columnHeader\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  style=\\\"display: inline-block\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n              ng-class=\\\"{ active: $ctrl.state.selectedItems.includes(item) }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input\\n                    id=\\\"select_{{ $index }}\\\"\\n                    type=\\\"checkbox\\\"\\n                    ng-checked=\\\"$ctrl.state.selectedItems.includes(item)\\\"\\n                    ng-disabled=\\\"$ctrl.disableRemove(item)\\\"\\n                    ng-click=\\\"$ctrl.selectItem(item, $event)\\\"\\n                  />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                {{ item.value }}\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td class=\\\"text-center text-muted\\\">{{ $ctrl.emptyDatasetMessage }}</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/strings-datatable/strings-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83287\n");

}),

30908:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索标记...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n        <div class=\\\"actionBar !gap-3\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-dangerlight h-fit\\\" ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\" ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\">\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>删除\\n          </button>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                {{ item.Name }}\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"1\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"1\\\" class=\\\"text-center text-muted\\\">没有可用的标记。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline vertical-center\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span class=\\\"space-right\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/tags-datatable/tagsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///30908\n");

}),

10049:

(function(module) {

eval("var _module_exports = \"<div class=\\\"toolBar\\\">\\n  <div class=\\\"toolBarTitle\\\">\\n    <pr-icon icon=\\\"$ctrl.icon\\\" feather=\\\"$ctrl.featherIcon\\\" class-name=\\\"space-right\\\"></pr-icon>\\n    {{ $ctrl.title }}\\n    <be-feature-indicator feature=\\\"$ctrl.feature\\\"></be-feature-indicator>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/titlebar/datatable-titlebar.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10049\n");

}),

63978:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.titleText }}\\n        </div>\\n\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n\\n        <div class=\\\"actionBar !gap-3\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-sm btn-dangerlight h-fit vertical-center !ml-0\\\"\\n            ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n            ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n            data-cy=\\\"user-removeUserButton\\\"\\n          >\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>Remove\\n          </button>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\" data-cy=\\\"user-userTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Name'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Username'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Username' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Username')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Role'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'RoleName'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'RoleName' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('RoleName')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Authentication'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'AuthenticationMethod'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'AuthenticationMethod' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('AuthenticationMethod')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                <a ui-sref=\\\"portainer.users.user({id: item.Id})\\\" ng-show=\\\"$ctrl.isAdmin\\\">{{ item.Username }}</a>\\n                <span ng-show=\\\"!$ctrl.isAdmin\\\">{{ item.Username }}</span>\\n              </td>\\n              <td>\\n                <span class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'svg-usercircle'\\\" ng-if=\\\"item.Role === 1 && !item.isTeamLeader\\\"></pr-icon>\\n                  <pr-icon icon=\\\"'user'\\\" ng-if=\\\"item.Role !== 1 && item.isTeamLeader\\\" feather=\\\"true\\\"></pr-icon>\\n                  <pr-icon icon=\\\"'user-plus'\\\" ng-if=\\\"item.Role !== 1 && !item.isTeamLeader\\\" feather=\\\"true\\\"></pr-icon>\\n                  {{ item.RoleName ? item.RoleName : '-' }}\\n                </span>\\n              </td>\\n              <td>\\n                <span ng-if=\\\"item.Id === 1 || ($ctrl.authenticationMethod !== 2 && $ctrl.authenticationMethod !== 3)\\\">Internal</span>\\n                <span ng-if=\\\"item.Id !== 1 && $ctrl.authenticationMethod === 2\\\">LDAP</span>\\n                <span ng-if=\\\"item.Id !== 1 && $ctrl.authenticationMethod === 3\\\">OAuth</span>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No user available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/users-datatable/usersDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///63978\n");

}),

86943:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\" ng-if=\\\"$ctrl.isDemo\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-exclamation-triangle\\\" title-text=\\\"Feature not available\\\"> </rd-widget-header>\\n      <rd-widget-body>\\n        <span class=\\\"small text-muted\\\">{{ $ctrl.content }}</span>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/demo-feature-indicator/demo-feature-indicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///86943\n");

}),

9062:

(function(module) {

eval("var _module_exports = \"<div>\\n  <!-- tls-checkbox -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'TLS'\\\"\\n        label-class=\\\"'col-sm-2'\\\"\\n        checked=\\\"$ctrl.formData.TLS\\\"\\n        on-change=\\\"($ctrl.onToggleTLS)\\\"\\n        tooltip=\\\"'Enable this option if you need to connect to the Docker environment with TLS.'\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !tls-checkbox -->\\n  <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"$ctrl.formData.TLS\\\"> TLS mode </div>\\n  <!-- note -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.TLS\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <span class=\\\"small text-muted\\\">\\n        You can find out more information about how to protect a Docker environment with TLS in the\\n        <a href=\\\"https://docs.docker.com/engine/security/https/\\\" target=\\\"_blank\\\">Docker documentation</a>.\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\"></div>\\n  <!-- endpoint-tls-mode -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.TLS\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <div class=\\\"boxselector_wrapper\\\">\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"tls_client_ca\\\" ng-model=\\\"$ctrl.formData.TLSMode\\\" value=\\\"tls_client_ca\\\" />\\n          <label for=\\\"tls_client_ca\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'shield'\\\" feather=\\\"true\\\"></pr-icon>\\n              TLS with server and client verification\\n            </div>\\n            <p>Use client certificates and server verification</p>\\n          </label>\\n        </div>\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"tls_client_noca\\\" ng-model=\\\"$ctrl.formData.TLSMode\\\" value=\\\"tls_client_noca\\\" />\\n          <label for=\\\"tls_client_noca\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'shield'\\\" feather=\\\"true\\\"></pr-icon>\\n              TLS with client verification only\\n            </div>\\n            <p>Use client certificates without server verification</p>\\n          </label>\\n        </div>\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"tls_ca\\\" ng-model=\\\"$ctrl.formData.TLSMode\\\" value=\\\"tls_ca\\\" />\\n          <label for=\\\"tls_ca\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'shield'\\\" feather=\\\"true\\\"></pr-icon>\\n              TLS with server verification only\\n            </div>\\n            <p>Only verify the server certificate</p>\\n          </label>\\n        </div>\\n        <div>\\n          <input type=\\\"radio\\\" id=\\\"tls_only\\\" ng-model=\\\"$ctrl.formData.TLSMode\\\" value=\\\"tls_only\\\" />\\n          <label for=\\\"tls_only\\\">\\n            <div class=\\\"boxselector_header\\\">\\n              <pr-icon icon=\\\"'shield'\\\" feather=\\\"true\\\"></pr-icon>\\n              TLS only\\n            </div>\\n            <p>No server/client verification</p>\\n          </label>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !endpoint-tls-mode -->\\n  <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"$ctrl.formData.TLS && $ctrl.formData.TLSMode !== 'tls_only'\\\"> Required TLS files </div>\\n  <!-- tls-file-upload -->\\n  <div ng-if=\\\"$ctrl.formData.TLS\\\">\\n    <!-- tls-file-ca -->\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.TLSMode === 'tls_client_ca' || $ctrl.formData.TLSMode === 'tls_ca'\\\">\\n      <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS CA certificate</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSCACert\\\">选择文件</button>\\n        <span class=\\\"space-left\\\">\\n          {{ $ctrl.formData.TLSCACert.name }}\\n          <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSCACert && $ctrl.formData.TLSCACert === $ctrl.endpoint.TLSConfig.TLSCACert\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n          <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSCACert\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n        </span>\\n      </div>\\n    </div>\\n    <!-- !tls-file-ca -->\\n    <!-- tls-files-cert-key -->\\n    <div ng-if=\\\"$ctrl.formData.TLSMode === 'tls_client_ca' || $ctrl.formData.TLSMode === 'tls_client_noca'\\\">\\n      <!-- tls-file-cert -->\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"tls_cert\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS certificate</label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSCert\\\">选择文件</button>\\n          <span class=\\\"space-left\\\">\\n            {{ $ctrl.formData.TLSCert.name }}\\n            <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSCert && $ctrl.formData.TLSCert === $ctrl.endpoint.TLSConfig.TLSCert\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n            <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSCert\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n          </span>\\n        </div>\\n      </div>\\n      <!-- !tls-file-cert -->\\n      <!-- tls-file-key -->\\n      <div class=\\\"form-group\\\">\\n        <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS key</label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSKey\\\">选择文件</button>\\n          <span class=\\\"space-left\\\">\\n            {{ $ctrl.formData.TLSKey.name }}\\n            <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSKey && $ctrl.formData.TLSKey === $ctrl.endpoint.TLSConfig.TLSKey\\\" mode=\\\"'success'\\\" feather=\\\"true\\\"></pr-icon>\\n            <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSKey\\\" mode=\\\"'danger'\\\" feather=\\\"true\\\"></pr-icon>\\n          </span>\\n        </div>\\n      </div>\\n      <!-- !tls-file-key -->\\n    </div>\\n    <!-- tls-files-cert-key -->\\n  </div>\\n  <!-- !tls-file-upload -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/endpointSecurity/porEndpointSecurity.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9062\n");

}),

94176:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"form-horizontal environment-variables-panel\\\" name=\\\"$ctrl.envVarsForm\\\">\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px; margin-left: 15px; width: 98%\\\"> 环境变量 </div>\\n    <div class=\\\"col-sm-12 environment-variables-panel--explanation\\\">\\n      {{::$ctrl.explanation}}\\n    </div>\\n\\n    <environment-variables-simple-mode\\n      ng-if=\\\"$ctrl.mode == 'simple'\\\"\\n      ng-model=\\\"$ctrl.ngModel\\\"\\n      on-change=\\\"($ctrl.handleSimpleChange)\\\"\\n      on-switch-mode-click=\\\"($ctrl.switchEnvMode)\\\"\\n      show-help-message=\\\"$ctrl.showHelpMessage\\\"\\n    ></environment-variables-simple-mode>\\n\\n    <div ng-if=\\\"$ctrl.mode == 'advanced'\\\" class=\\\"environment-variables-panel--advanced\\\">\\n      <div class=\\\"col-sm-12 text-clickable\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center\\\" ng-click=\\\"$ctrl.switchEnvMode()\\\">\\n          <pr-icon icon=\\\"'list'\\\" feather=\\\"true\\\"></pr-icon> 简单模式\\n        </button>\\n      </div>\\n      <div class=\\\"col-sm-12 small text-muted\\\">\\n        <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n        切换到简单模式，逐行定义变量，或从.env文件加载。\\n      </div>\\n      <div class=\\\"form-group\\\" style=\\\"margin-left: 1px\\\">\\n        <code-editor identifier=\\\"environment-variables-editor\\\" placeholder=\\\"例如 key=value\\\" value=\\\"$ctrl.editorText\\\" yml=\\\"false\\\" on-change=\\\"($ctrl.editorUpdate)\\\"></code-editor>\\n      </div>\\n      <div class=\\\"col-sm-12 small text-muted\\\" ng-if=\\\"$ctrl.showHelpMessage\\\">\\n        <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n        在手动或通过webhook进行重新部署之前，环境变化将不会生效。\\n      </div>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/environment-variables-panel/environment-variables-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///94176\n");

}),

52927:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"env-item mt-1\\\" name=\\\"$ctrl.{{ $ctrl.formName }}\\\">\\n  <div class=\\\"col-sm-5\\\">\\n    <div class=\\\"input-group input-group-sm env-item-key w-full\\\">\\n      <span class=\\\"input-group-addon\\\">名称</span>\\n      <input\\n        type=\\\"text\\\"\\n        name=\\\"name\\\"\\n        class=\\\"form-control\\\"\\n        placeholder=\\\"例如 FOO\\\"\\n        ng-model=\\\"$ctrl.variable.name\\\"\\n        ng-disabled=\\\"$ctrl.variable.added\\\"\\n        ng-change=\\\"$ctrl.onChangeName($ctrl.variable.name)\\\"\\n        required\\n      />\\n    </div>\\n    <div class=\\\"form-group\\\" style=\\\"margin-top: 5px\\\" ng-show=\\\"$ctrl[$ctrl.formName].name.$invalid\\\">\\n      <div class=\\\"col-sm-12 small\\\">\\n        <div ng-messages=\\\"$ctrl[$ctrl.formName].name.$error\\\">\\n          <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 名称是必填项。 </p>\\n          <p ng-message=\\\"pattern\\\">\\n            <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i>\\n            这个字段必须由字母数字字符'-'或'_'组成，以一个字母字符开始，以一个字母数字字符结束 (例如 'my-var'或 'MY_VAR123').\\n          </p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"col-sm-6\\\">\\n    <div class=\\\"w-full env-item-value\\\">\\n      <div class=\\\"input-group input-group-sm\\\">\\n        <span class=\\\"input-group-addon\\\">value</span>\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          ng-model=\\\"$ctrl.variable.value\\\"\\n          placeholder=\\\"例如 bar\\\"\\n          ng-trim=\\\"false\\\"\\n          name=\\\"value\\\"\\n          ng-change=\\\"$ctrl.onChangeValue($ctrl.variable.value)\\\"\\n        />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group\\\" ng-show=\\\"$ctrl[$ctrl.formName].value.$invalid\\\">\\n      <div class=\\\"col-sm-12 small text-warning\\\">\\n        <div ng-messages=\\\"$ctrl[$ctrl.formName].value.$error\\\">\\n          <p ng-message=\\\"pattern\\\"> <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> Value 必须填写。 </p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div>\\n    <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemove($ctrl.index)\\\">\\n      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n    </button>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/environment-variables-panel/environment-variables-simple-mode/environment-variables-simple-mode-item/environment-variables-simple-mode-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///52927\n");

}),

9277:

(function(module) {

eval("var _module_exports = \"<div class=\\\"environment-variables-simple-mode\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0\\\" ng-click=\\\"$ctrl.onSwitchModeClick()\\\">\\n      <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon> 高级模式\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12 small text-muted\\\">\\n    <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    切换到高级模式来复制和粘贴多个变量\\n  </div>\\n  <div class=\\\"col-sm-12 environment-variables-simple-mode--actions\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$ctrl.add()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加环境变量 </button>\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-sm btn-default\\\"\\n      ngf-select=\\\"$ctrl.addFromFile($file)\\\"\\n      ngf-accept=\\\"'.env'\\\"\\n      ngf-pattern=\\\"'.env'\\\"\\n      ngf-max-size=\\\"1MB\\\"\\n      ngf-model-invalid=\\\"errorFile\\\"\\n    >\\n      <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon> 从.env文件加载变量\\n    </button>\\n    <span class=\\\"space-left\\\" ng-if=\\\"errorFile.$error == 'maxSize'\\\">\\n      <i class=\\\"fa fa-times red-icon space-right\\\" aria-hidden=\\\"true\\\"></i>\\n      文件太大！尝试上传小于1MB的文件\\n    </span>\\n  </div>\\n  <div class=\\\"col-sm-12 form-inline env-items-list\\\">\\n    <environment-variables-simple-mode-item\\n      ng-repeat=\\\"variable in $ctrl.ngModel\\\"\\n      variable=\\\"variable\\\"\\n      index=\\\"$index\\\"\\n      on-change=\\\"($ctrl.onChangeVariable)\\\"\\n      on-remove=\\\"($ctrl.remove)\\\"\\n    ></environment-variables-simple-mode-item>\\n  </div>\\n  <div class=\\\"col-sm-12 small text-muted\\\" ng-if=\\\"$ctrl.ngModel.length > 0 && $ctrl.showHelpMessage\\\">\\n    <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    在手动或通过webhook进行重新部署之前，环境变化将不会生效。\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/environment-variables-panel/environment-variables-simple-mode/environment-variables-simple-mode.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9277\n");

}),

49424:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"file-upload-form\\\" name=\\\"$ctrl.fileUploadForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\" ng-transclude=\\\"description\\\"> </span>\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <file-upload-field on-change=\\\"($ctrl.onChange)\\\" required=\\\"($ctrl.ngRequired)\\\" value=\\\"($ctrl.file)\\\"></file-upload-field>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/form-components/file-upload-form/file-upload-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///49424\n");

}),

57582:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"$ctrl.webEditorForm\\\">\\n  <div class=\\\"web-editor overflow-auto\\\">\\n    <div ng-if=\\\"!$ctrl.hideTitle\\\" class=\\\"col-sm-12 form-section-title pr-0\\\"\\n      >网络编辑\\n      <div class=\\\"text-muted small vertical-center float-right mt-0\\\">\\n        <span ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM !== 'mac'\\\" class=\\\"vertical-center\\\">Ctrl+F搜索</span>\\n        <span ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM === 'mac'\\\" class=\\\"vertical-center\\\">Cmd+F进行搜索</span>\\n        <portainer-tooltip\\n          ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM !== 'mac'\\\"\\n          message=\\\"'Ctrl+F - 开始搜索 <br />\\n              Ctrl+G - 查找下一个 <br />\\n              Ctrl+Shift+G - 查找上一个 <br />\\n              Ctrl+Shift+F - 替换 <br />\\n              Ctrl+Shift+R - 全部替换 <br />\\n              Alt+G - 跳转到行 <br />\\n              Alt+F - 持续搜索： <br />\\n              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter - 查找下一个 <br />\\n              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shift+Enter - 查找上一个 <br />'\\\"\\n          class-name=\\\"'[&>span]:!text-left'\\\"\\n        >\\n        </portainer-tooltip>\\n        <portainer-tooltip\\n          ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM === 'mac'\\\"\\n          message=\\\"'Cmd+F - 开始搜索 <br />\\n              Cmd+G - 查找下一个 <br />\\n              Cmd+Shift+G - 查找上一个 <br />\\n              Cmd+Option+F - 替换 <br />\\n              Cmd+Option+R - 全部替换 <br />\\n              Option+G - 跳转到行 <br />\\n              Option+F - 持续搜索： <br />\\n              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter - 查找下一个 <br />\\n              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shift+Enter - 查找上一个 <br />'\\\"\\n          class-name=\\\"'[&>span]:!text-left'\\\"\\n        >\\n        </portainer-tooltip>\\n      </div>\\n    </div>\\n    <div class=\\\"trancluded-item form-group col-sm-9 col-lg-10 text-muted small\\\" ng-transclude=\\\"description\\\"></div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12 col-lg-12\\\">\\n        <code-editor\\n          identifier=\\\"{{ $ctrl.identifier }}\\\"\\n          placeholder=\\\"{{ $ctrl.placeholder }}\\\"\\n          read-only=\\\"$ctrl.readOnly\\\"\\n          yml=\\\"$ctrl.yml\\\"\\n          value=\\\"$ctrl.value\\\"\\n          on-change=\\\"($ctrl.editorUpdate)\\\"\\n        ></code-editor>\\n      </div>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/form-components/web-editor-form/web-editor-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///57582\n");

}),

10852:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"env-item form-horizontal\\\" name=\\\"$ctrl.{{ $ctrl.formName }}\\\">\\n  <div class=\\\"form-group col-sm-12\\\">\\n    <div class=\\\"form-inline mt-3\\\">\\n      <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n        <span class=\\\"input-group-addon required\\\">path</span>\\n        <input type=\\\"text\\\" name=\\\"name\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.variable\\\" ng-change=\\\"$ctrl.onChangePath($ctrl.variable)\\\" required />\\n      </div>\\n      <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.removeValue()\\\" title=\\\"Remove\\\">\\n        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n      </button>\\n    </div>\\n    <div ng-show=\\\"$ctrl[$ctrl.formName].name.$invalid\\\">\\n      <div class=\\\"small text-warning\\\">\\n        <div ng-messages=\\\"$ctrl[$ctrl.formName].name.$error\\\" class=\\\"mt-1\\\">\\n          <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Path is required. </p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-additional-files-panel/git-form-additional-file-item/git-form-additional-file-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10852\n");

}),

65568:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 p-0\\\">\\n    <div class=\\\"col-sm-3 col-lg-2\\\">\\n      <label class=\\\"control-label text-left\\\">额外路径</label>\\n    </div>\\n    <div class=\\\"col-sm-9 pt-1\\\">\\n      <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"$ctrl.add()\\\">\\n        <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\" mode=\\\"'alt'\\\" feather=\\\"true\\\"></pr-icon> <span>添加文件</span>\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"col-sm-12 form-inline\\\">\\n    <git-form-additional-file-item\\n      ng-repeat=\\\"variable in $ctrl.model.AdditionalFiles track by $index\\\"\\n      variable=\\\"variable\\\"\\n      index=\\\"$index\\\"\\n      on-change=\\\"($ctrl.onChangeVariable)\\\"\\n    ></git-form-additional-file-item>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-additional-files-panel/git-form-additional-files-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///65568\n");

}),

98173:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <por-switch-field\\n      checked=\\\"$ctrl.model.RepositoryAuthentication\\\"\\n      label=\\\"'Authentication'\\\"\\n      label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n      name=\\\"'authSwitch'\\\"\\n      on-change=\\\"($ctrl.onChangeAuth)\\\"\\n      data-cy=\\\"'component-gitAuthToggle'\\\"\\n      switch-values=\\\"{on:'Yes',off:'No'}\\\"\\n    ></por-switch-field>\\n  </div>\\n</div>\\n<div class=\\\"small mt-1 mb-3\\\" ng-if=\\\"$ctrl.model.RepositoryAuthentication && $ctrl.showAuthExplanation\\\">\\n  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n  <span class=\\\"text-muted\\\">Enabling authentication will store the credentials and it is advisable to use a git service account</span>\\n</div>\\n<div ng-if=\\\"$ctrl.model.RepositoryAuthentication\\\" class=\\\"row\\\">\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"repository_username\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left required\\\"> Username </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.model.RepositoryUsername\\\"\\n        name=\\\"repository_username\\\"\\n        placeholder=\\\"git username\\\"\\n        ng-change=\\\"$ctrl.onChangeUsername($ctrl.model.RepositoryUsername)\\\"\\n        data-cy=\\\"component-gitUsernameInput\\\"\\n      />\\n    </div>\\n  </div>\\n  <div class=\\\"form-group flex\\\">\\n    <label for=\\\"repository_password\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left !pt-0\\\">\\n      <div class=\\\"required\\\"> Personal Access Token </div>\\n      <portainer-tooltip message=\\\"'Provide a personal access token or password'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input\\n        type=\\\"password\\\"\\n        class=\\\"form-control\\\"\\n        ng-model=\\\"$ctrl.model.RepositoryPassword\\\"\\n        name=\\\"repository_password\\\"\\n        placeholder=\\\"*******\\\"\\n        ng-change=\\\"$ctrl.onChangePassword($ctrl.model.RepositoryPassword)\\\"\\n        ng-required=\\\"!$ctrl.isEdit\\\"\\n        data-cy=\\\"component-gitPasswordInput\\\"\\n      />\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-auth-fieldset/git-form-auth-fieldset.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98173\n");

}),

17560:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"autoUpdateForm\\\">\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        name=\\\"'autoUpdate'\\\"\\n        checked=\\\"$ctrl.model.RepositoryAutomaticUpdates\\\"\\n        label=\\\"'自动更新'\\\"\\n        label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n        on-change=\\\"($ctrl.onChangeAutoUpdate)\\\"\\n        switch-values=\\\"{on:'Yes',off:'No'}\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <div class=\\\"small vertical-center\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n    <span class=\\\"text-warning\\\"\\n      >Any changes to this stack or application made locally in Portainer will be overridden, which may cause service interruption. Do you wish to continue?</span\\n    >\\n  </div>\\n  <div class=\\\"form-group mt-2\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <label for=\\\"repository_mechanism\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\"> Mechanism </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <div class=\\\"input-group col-sm-10 input-group-sm\\\">\\n        <div class=\\\"btn-group btn-group-sm\\\">\\n          <label class=\\\"btn btn-light\\\" ng-click=\\\"$ctrl.onChangeMechanism($ctrl.model.RepositoryMechanism)\\\" ng-model=\\\"$ctrl.model.RepositoryMechanism\\\" uib-btn-radio=\\\"'Interval'\\\"\\n            >Polling</label\\n          >\\n          <label class=\\\"btn btn-light\\\" ng-click=\\\"$ctrl.onChangeMechanism($ctrl.model.RepositoryMechanism)\\\" ng-model=\\\"$ctrl.model.RepositoryMechanism\\\" uib-btn-radio=\\\"'Webhook'\\\"\\n            >Webhook</label\\n          >\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates && $ctrl.model.RepositoryMechanism === 'Webhook'\\\">\\n    <label for=\\\"repository_mechanism\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Webhook </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <span class=\\\"text-muted\\\"> {{ $ctrl.model.RepositoryWebhookURL | truncatelr }} </span>\\n      <button type=\\\"button\\\" class=\\\"btn btn-sm btn-light btn-sm space-left vertical-center\\\" ng-if=\\\"$ctrl.model.RepositoryWebhookURL\\\" ng-click=\\\"$ctrl.copyWebhook()\\\">\\n        <pr-icon icon=\\\"'copy'\\\" size=\\\"'sm'\\\" feather=\\\"true\\\"></pr-icon> Copy link\\n      </button>\\n      <span>\\n        <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\" feather=\\\"true\\\" style=\\\"display: none\\\"></pr-icon>\\n      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates && $ctrl.model.RepositoryMechanism === 'Interval'\\\">\\n    <label for=\\\"repository_fetch_interval\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\"> Fetch interval </label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        ng-change=\\\"$ctrl.onChangeInterval($ctrl.model.RepositoryFetchInterval)\\\"\\n        ng-model=\\\"$ctrl.model.RepositoryFetchInterval\\\"\\n        name=\\\"repository_fetch_interval\\\"\\n        placeholder=\\\"5m\\\"\\n        required\\n        interval-format\\n      />\\n      <div class=\\\"help-group\\\">\\n        <div class=\\\"form-group col-md-12 pt-1\\\" ng-show=\\\"autoUpdateForm.repository_fetch_interval.$touched && autoUpdateForm.repository_fetch_interval.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"autoUpdateForm.repository_fetch_interval.$error\\\">\\n              <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n              <p ng-message=\\\"invalidIntervalFormat\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Please enter a valid time interval.</p>\\n              <p ng-message=\\\"minimumInterval\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon> Minimum interval is 1m</p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.showForcePullImage && $ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        name=\\\"'forcePullImage'\\\"\\n        feature-id=\\\"$ctrl.stackPullImageFeature\\\"\\n        checked=\\\"$ctrl.model.ForcePullImage\\\"\\n        label=\\\"'Pull latest image'\\\"\\n        label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        name=\\\"'forceUpdate'\\\"\\n        feature-id=\\\"$ctrl.limitedFeature\\\"\\n        checked=\\\"$ctrl.model.RepositoryAutomaticUpdatesForce\\\"\\n        label=\\\"'Force Redeployment'\\\"\\n        label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n        on-change=\\\"($ctrl.onChangeAutoUpdateForce)\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <div class=\\\"small vertical-center\\\" ng-if=\\\"$ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    <span class=\\\"text-muted\\\">启用后，在每个间隔期或webhook调用时强制执行自动部署。</span>\\n  </div>\\n  <div class=\\\"small vertical-center\\\" ng-if=\\\"!$ctrl.model.RepositoryAutomaticUpdates\\\">\\n    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    <span class=\\\"text-muted\\\">启用后，来自git仓库的更新将在某个时间间隔或webhook自动发生。</span>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-auto-update-fieldset/git-form-auto-update-fieldset.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///17560\n");

}),

6942:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"pathForm\\\">\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n      <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      <span\\n        >指明仓库根目录中 {{ $ctrl.deployMethod == 'compose' ? 'Compose' : 'Manifest' }} 文件的路径。\\n        <span ng-if=\\\"$ctrl.isDockerStandalone\\\">\\n          如果已经存在于Docker独立环境中，要启用重建镜像，请在你的编译文件中加入<code>pull_policy: build</code>根据\\n          <a href=\\\"https://docs.docker.com/compose/compose-file/#pull_policy\\\">Docker文档</a>在你的编译文件中。</span\\n        ></span\\n      >\\n    </span>\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"stack_repository_path\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left required\\\">{{ $ctrl.deployMethod == 'compose' ? 'Compose' : 'Manifest' }} path</label>\\n    <div class=\\\"col-sm-8\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        name=\\\"repoPathField\\\"\\n        ng-model=\\\"$ctrl.value\\\"\\n        ng-change=\\\"$ctrl.onChange($ctrl.value)\\\"\\n        id=\\\"stack_repository_path\\\"\\n        placeholder=\\\"{{ $ctrl.deployMethod == 'compose' ? 'docker-compose.yml' : 'manifest.yml' }}\\\"\\n        required\\n      />\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-compose-path-field/git-form-compose-path-field.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///6942\n");

}),

48037:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\" ng-class=\\\"$ctrl.className\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <p>\\n      This {{ $ctrl.type }} was deployed from the git repository <code>{{ $ctrl.url }}</code>\\n      .\\n    </p>\\n    <p>\\n      Update\\n      <code\\n        >{{ $ctrl.configFilePath }}<span ng-if=\\\"$ctrl.additionalFiles.length > 0\\\">, {{ $ctrl.additionalFiles.join(',') }}</span></code\\n      >\\n      in git and pull from here to update the {{ $ctrl.type }}.\\n    </p>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-info-panel/git-form-info-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48037\n");

}),

6605:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n    <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n    <span>\\n      使用以下语法指定版本库的引用：使用 <code>refs/heads/branch_name</code> 的分支或使用 <code>refs/tags/tag_name</code>的标签。 \\n      如果不指定，将使用默认的 <code>HEAD</code> 引用，通常是 <code>master</code> 分支。\\n    </span>\\n  </span>\\n</div>\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"stack_repository_reference_name\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\">仓库参考</label>\\n  <div class=\\\"col-sm-8\\\">\\n    <input\\n      type=\\\"text\\\"\\n      class=\\\"form-control\\\"\\n      ng-model=\\\"$ctrl.value\\\"\\n      id=\\\"stack_repository_reference_name\\\"\\n      placeholder=\\\"refs/heads/master\\\"\\n      ng-change=\\\"$ctrl.onChange($ctrl.value)\\\"\\n      data-cy=\\\"component-gitRefInput\\\"\\n    />\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-ref-field/git-form-ref-field.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///6605\n");

}),

53754:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <span class=\\\"col-sm-12 text-muted small\\\"> 你可以使用一个git仓库的URL。 </span>\\n</div>\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"stack_repository_url\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left required\\\">仓库 URL</label>\\n  <div class=\\\"col-sm-8\\\">\\n    <input\\n      type=\\\"text\\\"\\n      name=\\\"repoUrlField\\\"\\n      class=\\\"form-control\\\"\\n      ng-model=\\\"$ctrl.value\\\"\\n      ng-change=\\\"$ctrl.onChange($ctrl.value)\\\"\\n      id=\\\"stack_repository_url\\\"\\n      placeholder=\\\"https://github.com/portainer/portainer-compose\\\"\\n      data-cy=\\\"component-gitUrlInput\\\"\\n      required\\n    />\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form-url-field/git-form-url-field.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53754\n");

}),

23283:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"$ctrl.gitForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Git 仓库 </div>\\n  <git-form-auth-fieldset model=\\\"$ctrl.model\\\" on-change=\\\"($ctrl.onChange)\\\"></git-form-auth-fieldset>\\n\\n  <git-form-url-field value=\\\"$ctrl.model.RepositoryURL\\\" on-change=\\\"($ctrl.onChangeURL)\\\"></git-form-url-field>\\n\\n  <git-form-ref-field value=\\\"$ctrl.model.RepositoryReferenceName\\\" on-change=\\\"($ctrl.onChangeRefName)\\\"></git-form-ref-field>\\n\\n  <git-form-compose-path-field\\n    value=\\\"$ctrl.model.ComposeFilePathInRepository\\\"\\n    on-change=\\\"($ctrl.onChangeComposePath)\\\"\\n    deploy-method=\\\"{{ $ctrl.deployMethod }}\\\"\\n    is-docker-standalone=\\\"$ctrl.isDockerStandalone\\\"\\n  ></git-form-compose-path-field>\\n\\n  <git-form-additional-files-panel ng-if=\\\"$ctrl.additionalFile\\\" model=\\\"$ctrl.model\\\" on-change=\\\"($ctrl.onChange)\\\"></git-form-additional-files-panel>\\n\\n  <git-form-auto-update-fieldset\\n    ng-if=\\\"$ctrl.autoUpdate\\\"\\n    model=\\\"$ctrl.model\\\"\\n    on-change=\\\"($ctrl.onChange)\\\"\\n    show-force-pull-image=\\\"$ctrl.showForcePullImage\\\"\\n  ></git-form-auto-update-fieldset>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/forms/git-form/git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///23283\n");

}),

69688:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"endpointGroupForm\\\">\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"group_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"group_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"例如 my-group\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"endpointGroupForm.group_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"endpointGroupForm.group_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- description-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"group_description\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">描述</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"group_description\\\" ng-model=\\\"$ctrl.model.Description\\\" placeholder=\\\"例如 production environments...\\\" />\\n    </div>\\n  </div>\\n  <!-- !description-input -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 元数据 </div>\\n\\n  <tag-selector ng-if=\\\"$ctrl.model.TagIds\\\" value=\\\"$ctrl.model.TagIds\\\" on-change=\\\"($ctrl.onChangeTags)\\\" allow-create=\\\"$ctrl.state.allowCreateTag\\\"> </tag-selector>\\n\\n  <!-- environments -->\\n  <div ng-if=\\\"$ctrl.model.Id !== 1\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\"> 相关环境 </div>\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12 small text-muted\\\">\\n        你可以通过把它们移到相关的环境表中来选择哪个环境应该是这个组的一部分。只需点击任何环境条目，就可以把它从一个\\n        到另一个表中。\\n      </div>\\n      <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 20px\\\">\\n        <!-- available-endpoints -->\\n        <div class=\\\"table-row-container\\\">\\n          <div class=\\\"datatable table-in-row\\\">\\n            <group-association-table\\n              loaded=\\\"$ctrl.loaded\\\"\\n              page-type=\\\"$ctrl.pageType\\\"\\n              table-type=\\\"available\\\"\\n              retrieve-page=\\\"$ctrl.getPaginatedEndpointsByGroup\\\"\\n              dataset=\\\"$ctrl.availableEndpoints\\\"\\n              entry-click=\\\"$ctrl.associateEndpoint\\\"\\n              pagination-state=\\\"$ctrl.state.available\\\"\\n              empty-dataset-message=\\\"No environment available\\\"\\n              title=\\\"可用的环境\\\"\\n              cy-value=\\\"available-endpoints\\\"\\n            ></group-association-table>\\n          </div>\\n          <!-- !available-endpoints -->\\n          <!-- associated-endpoints -->\\n          <div class=\\\"table-in-row\\\">\\n            <group-association-table\\n              loaded=\\\"$ctrl.loaded\\\"\\n              page-type=\\\"$ctrl.pageType\\\"\\n              table-type=\\\"associated\\\"\\n              retrieve-page=\\\"$ctrl.getPaginatedEndpointsByGroup\\\"\\n              dataset=\\\"$ctrl.associatedEndpoints\\\"\\n              entry-click=\\\"$ctrl.dissociateEndpoint\\\"\\n              pagination-state=\\\"$ctrl.state.associated\\\"\\n              empty-dataset-message=\\\"No associated environment\\\"\\n              has-backend-pagination=\\\"this.pageType !== 'create'\\\"\\n              title=\\\"相关环境\\\"\\n              cy-value=\\\"associated-endpoints\\\"\\n            ></group-association-table>\\n          </div>\\n        </div>\\n        <!-- !associated-endpoints -->\\n      </div>\\n    </div>\\n  </div>\\n  <div ng-if=\\\"$ctrl.model.Id === 1\\\">\\n    <div class=\\\"table-in-row\\\">\\n      <group-association-table\\n        loaded=\\\"$ctrl.loaded\\\"\\n        page-type=\\\"$ctrl.pageType\\\"\\n        table-type=\\\"associated\\\"\\n        retrieve-page=\\\"$ctrl.getPaginatedEndpointsByGroup\\\"\\n        dataset=\\\"$ctrl.associatedEndpoints\\\"\\n        pagination-state=\\\"$ctrl.state.associated\\\"\\n        empty-dataset-message=\\\"No environment available\\\"\\n        title=\\\"未关联的环境\\\"\\n      ></group-association-table>\\n    </div>\\n  </div>\\n  <!-- !endpoints -->\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-click=\\\"$ctrl.formAction()\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !endpointGroupForm.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/group-form/groupForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///69688\n");

}),

5032:

(function(module) {

eval("var _module_exports = \"<form name=\\\"$ctrl.redeployGitForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Redeploy from git repository </div>\\n  <div class=\\\"form-group text-muted\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <p> Pull the latest manifest from git and redeploy the application. </p>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <p>\\n        <a class=\\\"small interactive\\\" ng-click=\\\"$ctrl.state.showConfig = !$ctrl.state.showConfig\\\">\\n          <i ng-class=\\\"['fa space-right', { 'fa-minus': $ctrl.state.showConfig, 'fa-plus': !$ctrl.state.showConfig }]\\\" aria-hidden=\\\"true\\\"></i>\\n          {{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration\\n        </a>\\n      </p>\\n    </div>\\n  </div>\\n  <git-form-ref-field ng-if=\\\"$ctrl.state.showConfig\\\" value=\\\"$ctrl.formValues.RefName\\\" on-change=\\\"($ctrl.onChangeRef)\\\"></git-form-ref-field>\\n  <git-form-auth-fieldset\\n    ng-if=\\\"$ctrl.state.showConfig\\\"\\n    model=\\\"$ctrl.formValues\\\"\\n    is-edit=\\\"$ctrl.state.isEdit\\\"\\n    on-change=\\\"($ctrl.onChange)\\\"\\n    show-auth-explanation=\\\"true\\\"\\n  ></git-form-auth-fieldset>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <!-- #Git buttons -->\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.pullAndRedeployApplication()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"ctrl.state.redeployInProgress\\\"\\n    analytics-on\\n    analytics-category=\\\"kubernetes\\\"\\n    analytics-event=\\\"kubernetes-application-edit-git-pull\\\"\\n  >\\n    <span ng-show=\\\"!$ctrl.state.redeployInProgress\\\"> <i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i> 拉取和更新应用程序 </span>\\n    <span ng-show=\\\"$ctrl.state.redeployInProgress\\\">正在进行中...</span>\\n  </button>\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.saveGitSettings()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"$ctrl.state.saveGitSettingsInProgress\\\"\\n  >\\n    <span ng-show=\\\"!$ctrl.state.saveGitSettingsInProgress\\\"> 保存设置 </span>\\n    <span ng-show=\\\"$ctrl.state.saveGitSettingsInProgress\\\">正在进行中...</span>\\n  </button>\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///5032\n");

}),

96927:

(function(module) {

eval("var _module_exports = \"<form name=\\\"$ctrl.redeployGitForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 从git仓库重新部署 </div>\\n  <div class=\\\"form-group text-muted\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <p> 从git中拉取最新的清单并重新部署应用程序。 </p>\\n    </div>\\n  </div>\\n  <git-form-auto-update-fieldset model=\\\"$ctrl.formValues.AutoUpdate\\\" on-change=\\\"($ctrl.onChangeAutoUpdate)\\\"></git-form-auto-update-fieldset>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <p>\\n        <a class=\\\"small interactive\\\" ng-click=\\\"$ctrl.state.showConfig = !$ctrl.state.showConfig\\\">\\n          <i ng-class=\\\"['fa space-right', { 'fa-minus': $ctrl.state.showConfig, 'fa-plus': !$ctrl.state.showConfig }]\\\" aria-hidden=\\\"true\\\"></i>\\n          {{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration\\n        </a>\\n      </p>\\n    </div>\\n  </div>\\n  <git-form-ref-field ng-if=\\\"$ctrl.state.showConfig\\\" value=\\\"$ctrl.formValues.RefName\\\" on-change=\\\"($ctrl.onChangeRef)\\\"></git-form-ref-field>\\n  <git-form-auth-fieldset\\n    ng-if=\\\"$ctrl.state.showConfig\\\"\\n    model=\\\"$ctrl.formValues\\\"\\n    is-edit=\\\"$ctrl.state.isEdit\\\"\\n    on-change=\\\"($ctrl.onChange)\\\"\\n    show-auth-explanation=\\\"true\\\"\\n  ></git-form-auth-fieldset>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <!-- #Git buttons -->\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.pullAndRedeployApplication()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || $ctrl.state.hasUnsavedChanges|| !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"$ctrl.state.redeployInProgress\\\"\\n    analytics-on\\n    analytics-category=\\\"kubernetes\\\"\\n    analytics-event=\\\"kubernetes-application-edit-git-pull\\\"\\n  >\\n    <span ng-show=\\\"!$ctrl.state.redeployInProgress\\\"> <i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i> 拉取和更新应用程序 </span>\\n    <span ng-show=\\\"$ctrl.state.redeployInProgress\\\">正在进行中...</span>\\n  </button>\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.saveGitSettings()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.state.hasUnsavedChanges|| !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"$ctrl.state.saveGitSettingsInProgress\\\"\\n    analytics-on\\n    analytics-category=\\\"kubernetes\\\"\\n    analytics-event=\\\"kubernetes-application-edit\\\"\\n    analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n  >\\n    <span ng-show=\\\"!$ctrl.state.saveGitSettingsInProgress\\\"> 保存设置 </span>\\n    <span ng-show=\\\"$ctrl.state.saveGitSettingsInProgress\\\">正在进行中...</span>\\n  </button>\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///96927\n");

}),

6693:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormEcr\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\">\\n      关于如何生成访问密钥的信息，请遵循\\n      <a href=\\\"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console\\\" target=\\\"_blank\\\">AWS 指南</a>.\\n    </span>\\n  </div>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> ECR 连接详细信息 </div>\\n\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-ecr-registry\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormEcr.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              已存在同名的注册表。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      <span class=\\\"required\\\">注册表 URL</span>\\n      <portainer-tooltip message=\\\"'亚马逊Elastic 容器注册表的URL，其中包含账户ID和区域。'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        id=\\\"registry_url\\\"\\n        name=\\\"registry_url\\\"\\n        ng-model=\\\"$ctrl.model.URL\\\"\\n        placeholder=\\\"aws-account-id.dkr.ecr.us-east-1.amazonaws.com/\\\"\\n        required\\n      />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormEcr.registry_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- url-input -->\\n\\n  <!-- authentication-checkbox -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'认证'\\\"\\n        label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n        tooltip=\\\"'如果你需要指定凭证来连接到一个私人注册表，请启用这个选项。'\\\"\\n        name=\\\"'administrator'\\\"\\n        checked=\\\"$ctrl.model.Authentication\\\"\\n        on-change=\\\"($ctrl.toggleAuthentication)\\\"\\n        label-class=\\\"'col-sm-2'\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !authentication-checkbox -->\\n\\n  <div ng-if=\\\"$ctrl.model.Authentication\\\">\\n    <!-- aws-access-key -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_access_key\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">AWS Access Key</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_access_key\\\" name=\\\"registry_access_key\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_access_key.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormEcr.registry_access_key.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !aws-access-key -->\\n\\n    <!-- aws-secret-access-key -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_secret_access_key\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">AWS Secret Access Key</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_secret_access_key\\\" name=\\\"registry_secret_access_key\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_secret_access_key.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormEcr.registry_secret_access_key.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !aws-secret-access-key -->\\n\\n    <!-- region -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_region\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">区域</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_region\\\" name=\\\"registry_region\\\" placeholder=\\\"us-west-1\\\" ng-model=\\\"$ctrl.model.Ecr.Region\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_region.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormEcr.registry_region.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n              <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                已有一个同名的注册表存在。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !region -->\\n  </div>\\n\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormEcr.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'ecr' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///6693\n");

}),

56440:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormAzure\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Azure registry details </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-azure-registry\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormAzure.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              A registry with the same name already exists.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      <span class=\\\"required\\\">Registry URL</span>\\n      <portainer-tooltip message=\\\"'URL of an Azure Container Registry. Any protocol will be stripped.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"myproject.azurecr.io\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormAzure.registry_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- url-input -->\\n  <!-- credentials-user -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">用户名</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_username.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormAzure.registry_username.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-user -->\\n  <!-- credentials-password -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">密码</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_password.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormAzure.registry_password.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-password -->\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormAzure.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'azure' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-azure/registry-form-azure.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///56440\n");

}),

35778:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormCustom\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 重要通知 </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\">\\n      Docker要求您连接到 <a href=\\\"https://docs.docker.com/registry/deploying/#running-a-domain-registry\\\" target=\\\"_blank\\\">安全的注册表</a>。您可以找到更多\\n      关于如何连接到不安全的注册表的更多信息，见 <a href=\\\"https://docs.docker.com/registry/insecure/\\\" target=\\\"_blank\\\">Docker 文档</a>。\\n    </span>\\n  </div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 自定义注册表详细信息 </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-custom-registry\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormCustom.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              已存在同名的注册表。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">\\n      注册表 URL\\n      <portainer-tooltip message=\\\"'Docker注册中心的URL或IP地址。如果存在任何协议和尾部斜线，将被剥离。'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"10.0.0.10:5000 or myregistry.domain.tld\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormCustom.registry_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- url-input -->\\n  <!-- authentication-checkbox -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'身份认证'\\\"\\n        label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n        tooltip=\\\"'如果你需要指定凭证连接到该注册表，请启用此选项。'\\\"\\n        name=\\\"'administrator'\\\"\\n        checked=\\\"$ctrl.model.Authentication\\\"\\n        on-change=\\\"($ctrl.toggleAuthentication)\\\"\\n        label-class=\\\"'col-sm-2'\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !authentication-checkbox -->\\n  <div ng-if=\\\"$ctrl.model.Authentication\\\">\\n    <!-- credentials-user -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">用户名</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_username.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormCustom.registry_username.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !credentials-user -->\\n    <!-- credentials-password -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">密码</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_password.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormCustom.registry_password.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !credentials-password -->\\n  </div>\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormCustom.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'custom' }}\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-custom/registry-form-custom.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///35778\n");

}),

85683:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormDockerhub\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\">\\n      <p>\\n        关于如何生成DockerHub访问令牌的信息，请遵循\\n        <a href=\\\"https://docs.docker.com/docker-hub/access-tokens/\\\" target=\\\"_blank\\\">dockerhub 指南</a>.\\n      </p>\\n    </span>\\n  </div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> DockerHub 帐户详细信息s </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"dockerhub-prod-us\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              已存在同名的注册表。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- credentials-user -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">DockerHub 用户名</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_username.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_username.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-user -->\\n  <!-- credentials-password -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">DockerHub access token</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_password.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_password.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-password -->\\n\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormDockerhub.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'dockerhub' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///85683\n");

}),

51338:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\" class-name=\\\"'icon-blue'\\\"></pr-icon>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class=\\\"searchIcon\\\"></pr-icon>\\n          <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" ng-change=\\\"$ctrl.onTextFilterChange()\\\" placeholder=\\\"搜索...\\\" auto-focus />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <span class=\\\"md-checkbox vertical-center\\\">\\n                    <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n                    <label for=\\\"select_all\\\"></label>\\n                  </span>\\n                  <table-column-header\\n                    col-title=\\\"'Namespace'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.state.orderBy === 'Namespace'\\\"\\n                    is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace' && $ctrl.state.reverseOrder\\\"\\n                    ng-click=\\\"$ctrl.changeOrderBy('Namespace')\\\"\\n                  ></table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'PathWithNamespace'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'PathWithNamespace'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'PathWithNamespace' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('PathWithNamespace')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header col-title=\\\"'Description'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <span class=\\\"md-checkbox\\\">\\n                  <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableSelection(item)\\\" />\\n                  <label for=\\\"select_{{ $index }}\\\"></label>\\n                </span>\\n                {{ item.Namespace }}\\n              </td>\\n              <td>\\n                {{ item.Name }}\\n              </td>\\n              <td>\\n                {{ item.PathWithNamespace }}\\n              </td>\\n              <td>\\n                {{ item.Description }}\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">没有可用的项目。</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///51338\n");

}),

62796:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"registryFormGitlab\\\" ng-submit=\\\"$ctrl.retrieveRegistries()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\">\\n      <p>\\n        关于如何生成Gitlab个人访问令牌的信息，请遵循\\n        <a href=\\\"https://gitlab.com/help/user/profile/personal_access_tokens.md\\\" target=\\\"_blank\\\">gitlab 指南</a>.\\n      </p>\\n    </span>\\n  </div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Gitlab 注册表连接详细信息 </div>\\n  <!-- credentials-user -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">用户名</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_username.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"registryFormGitlab.registry_username.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-user -->\\n  <!-- credentials-pat -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_perso_acc_token\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Personal Access Token </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_perso_acc_token\\\" name=\\\"registry_perso_acc_token\\\" ng-model=\\\"$ctrl.model.Token\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_perso_acc_token.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"registryFormGitlab.registry_perso_acc_token.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-pat -->\\n\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0\\\"\\n        ng-if=\\\"!$ctrl.state.overrideConfiguration\\\"\\n        ng-click=\\\"$ctrl.state.overrideConfiguration = true;\\\"\\n      >\\n        <pr-icon icon=\\\"'tool'\\\" feather=\\\"true\\\"></pr-icon>\\n        覆盖默认配置\\n      </button>\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-link btn-sm hover:no-underline !ml-0 p-0\\\"\\n        ng-if=\\\"$ctrl.state.overrideConfiguration\\\"\\n        ng-click=\\\"$ctrl.state.overrideConfiguration = false; $ctrl.resetDefaults()\\\"\\n      >\\n        <pr-icon icon=\\\"'settings'\\\" feather=\\\"true\\\"></pr-icon>\\n        使用默认配置\\n      </button>\\n    </div>\\n  </div>\\n\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\">\\n    <label for=\\\"instance_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">\\n      Instance URL\\n      <portainer-tooltip message=\\\"'URL of Gitlab instance.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"instance_url\\\" name=\\\"instance_url\\\" ng-model=\\\"$ctrl.model.Gitlab.InstanceURL\\\" placeholder=\\\"https://gitlab.com\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.instance_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"registryFormGitlab.instance_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !url-input -->\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\">\\n    <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">\\n      Registry URL\\n      <portainer-tooltip message=\\\"'URL of Gitlab registry instance.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"https://registry.gitlab.com\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"registryFormGitlab.registry_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !url-input -->\\n\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"$ctrl.actionInProgress || !registryFormGitlab.$valid\\\" button-spinner=\\\"$ctrl.actionInProgress\\\">\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">Retrieve projects</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n</form>\\n<div class=\\\"form-horizontal\\\" ng-if=\\\"$ctrl.projects\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Gitlab projects </div>\\n  <div class=\\\"form-group\\\">\\n    <span class=\\\"col-sm-12 text-muted small\\\"> Select the project's registries you want to manage. Portainer will create one registry for each selected project. </span>\\n    <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"'icon-warning'\\\"></pr-icon>\\n      If you can't select a project, make sure that registry feature is activated on it.\\n    </span>\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <gitlab-projects-datatable\\n        title-text=\\\"Gitlab projects\\\"\\n        title-icon=\\\"list\\\"\\n        dataset=\\\"$ctrl.projects\\\"\\n        table-key=\\\"gitlab_projects\\\"\\n        state=\\\"$ctrl.state.gitlab\\\"\\n        order-by=\\\"Name\\\"\\n      ></gitlab-projects-datatable>\\n    </div>\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        ng-click=\\\"$ctrl.createRegistries()\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.state.gitlab.selectedItemCount\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'gitlab' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">创建注册表</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-gitlab/registry-form-gitlab.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62796\n");

}),

64837:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormProGet\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12 text-muted small\\\">\\n      Any Portainer user that has access to this registry will be able to use the Registry Manager features against the content of any Feed in the ProGet registry that the ProGet\\n      user has access to.\\n    </div>\\n  </div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> ProGet registry details </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"proget-registry\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormProGet.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              A registry with the same name already exists.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      <span class=\\\"required\\\">Registry URL</span>\\n      <portainer-tooltip message=\\\"'The URL of the ProGet registry including the Feed name'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"proget.example.com/example-registry\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormProGet.registry_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- url-input -->\\n  <!-- base-url-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_base_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      <span class=\\\"required\\\">Base URL</span>\\n      <portainer-tooltip message=\\\"'The base URL of the ProGet registry'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_base_url\\\" name=\\\"registry_base_url\\\" ng-model=\\\"$ctrl.model.BaseURL\\\" placeholder=\\\"proget.example.com\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_base_url.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormProGet.registry_base_url.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !base-url-input -->\\n  <div>\\n    <!-- credentials-user -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">用户名</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_username.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormProGet.registry_username.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !credentials-user -->\\n    <!-- credentials-password -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">密码</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_password.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormProGet.registry_password.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !credentials-password -->\\n  </div>\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormProGet.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'proget' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-proget/registry-form-proget.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///64837\n");

}),

26548:

(function(module) {

eval("var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormQuay\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Quay account details </div>\\n  <!-- name-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"Quay\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_name.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormQuay.registry_name.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n            <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              A registry with the same name already exists.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !name-input -->\\n  <!-- credentials-user -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">用户名</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required auto-focus />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_username.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormQuay.registry_username.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-user -->\\n  <!-- credentials-password -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">密码</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n      <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_password.$invalid\\\">\\n        <div class=\\\"small text-warning\\\">\\n          <div ng-messages=\\\"$ctrl.registryFormQuay.registry_password.$error\\\">\\n            <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n              本栏为必填项。\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !credentials-password -->\\n\\n  <!-- organization-checkbox -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'Use organisation registry'\\\"\\n        checked=\\\"$ctrl.model.Quay.useOrganisation\\\"\\n        on-change=\\\"($ctrl.toggleOrganisation)\\\"\\n        label-class=\\\"'col-sm-2'\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !organisation-checkbox -->\\n  <div ng-if=\\\"$ctrl.model.Quay.useOrganisation\\\">\\n    <!-- organisation_name -->\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"organisation_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">Organisation name</label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"organisation_name\\\" name=\\\"organisation_name\\\" ng-model=\\\"$ctrl.model.Quay.organisationName\\\" required />\\n        <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.organisation_name.$invalid\\\">\\n          <div class=\\\"small text-warning\\\">\\n            <div ng-messages=\\\"$ctrl.registryFormQuay.organisation_name.$error\\\">\\n              <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon>\\n                本栏为必填项。\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <!-- !organisation_name -->\\n  </div>\\n\\n  <!-- actions -->\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary btn-sm\\\"\\n        ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormQuay.$valid\\\"\\n        button-spinner=\\\"$ctrl.actionInProgress\\\"\\n        analytics-on\\n        analytics-category=\\\"portainer\\\"\\n        analytics-event=\\\"portainer-registry-creation\\\"\\n        analytics-properties=\\\"{ metadata: { type: 'quay' } }\\\"\\n      >\\n        <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n        <span ng-show=\\\"$ctrl.actionInProgress\\\">正在进行中...</span>\\n      </button>\\n    </div>\\n  </div>\\n  <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-quay/registry-form-quay.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///26548\n");

}),

11361:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12\\\">\\n  <rd-widget>\\n    <rd-widget-custom-header icon=\\\"$ctrl.template.Logo\\\" title-text=\\\"$ctrl.template.Title\\\"></rd-widget-custom-header>\\n    <rd-widget-body classes=\\\"padding\\\">\\n      <form class=\\\"form-horizontal\\\" name=\\\"stackTemplateForm\\\">\\n        <!-- description -->\\n        <div ng-if=\\\"$ctrl.template.Note\\\">\\n          <div class=\\\"form-section-title\\\"> 信息 </div>\\n          <div class=\\\"col-sm-12 form-group\\\">\\n            <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.template.Note\\\"></div>\\n          </div>\\n        </div>\\n        <!-- !description -->\\n        <div class=\\\"form-section-title\\\"> 配置 </div>\\n        <!-- name-input -->\\n        <div class=\\\"form-group\\\">\\n          <label for=\\\"template_name\\\" class=\\\"col-sm-2 control-label text-left\\\">名称</label>\\n          <div class=\\\"col-sm-6\\\">\\n            <input type=\\\"text\\\" name=\\\"template_name\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.name\\\" ng-pattern=\\\"$ctrl.nameRegex\\\" placeholder=\\\"例如 myStack\\\" required />\\n          </div>\\n        </div>\\n        <div class=\\\"form-group\\\" ng-if=\\\"stackTemplateForm.template_name.$invalid\\\">\\n          <div class=\\\"col-sm-12 small text-warning\\\">\\n            <div ng-messages=\\\"stackTemplateForm.template_name.$error\\\">\\n              <p ng-message=\\\"pattern\\\">\\n                <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i>\\n                <span>该字段必须由小写字母数字字符组成， '_' or '-' (例如 'my-name', 或 'abc-123').</span>\\n              </p>\\n              <p ng-message=\\\"required\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 本栏为必填项。</p>\\n            </div>\\n          </div>\\n        </div>\\n        <!-- !name-input -->\\n        <!-- env -->\\n        <div ng-repeat=\\\"var in $ctrl.template.Env\\\" ng-if=\\\"!var.preset || var.select\\\" class=\\\"form-group\\\">\\n          <label for=\\\"field_{{ $index }}\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n            {{ var.label }}\\n            <portainer-tooltip ng-if=\\\"var.description\\\" message=\\\"var.description\\\"></portainer-tooltip>\\n          </label>\\n          <div class=\\\"col-sm-6\\\">\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" ng-if=\\\"!var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\" />\\n            <select class=\\\"form-control\\\" ng-if=\\\"var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\">\\n              <option selected disabled hidden value=\\\"\\\">选择数值</option>\\n              <option ng-repeat=\\\"choice in var.select\\\" value=\\\"{{ choice.value }}\\\">{{ choice.text }}</option>\\n            </select>\\n          </div>\\n        </div>\\n        <!-- !env -->\\n        <ng-transclude ng-transclude-slot=\\\"advanced\\\"></ng-transclude>\\n\\n        <!-- access-control -->\\n        <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n        <!-- !access-control -->\\n        <!-- actions -->\\n        <div class=\\\"form-section-title\\\"> 操作 </div>\\n        <div class=\\\"form-group\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <button\\n              type=\\\"button\\\"\\n              class=\\\"btn btn-primary\\\"\\n              ng-disabled=\\\"$ctrl.state.actionInProgress || !$ctrl.formValues.name || !$ctrl.state.deployable || stackTemplateForm.$invalid\\\"\\n              ng-click=\\\"$ctrl.createTemplate()\\\"\\n              button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n            >\\n              <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">部署堆栈</span>\\n              <span ng-show=\\\"$ctrl.state.actionInProgress\\\">部署进行中...</span>\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$ctrl.unselectTemplate($ctrl.template)\\\">隐藏</button>\\n            <div class=\\\"cols-sm-12 small text-danger space-left mt-1\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">{{ $ctrl.state.formValidationError }}</div>\\n            <div class=\\\"cols-sm-12 small text-danger space-left mt-1\\\" ng-if=\\\"!$ctrl.state.deployable\\\">无法在此环境上部署此模板类型。</div>\\n          </div>\\n        </div>\\n        <!-- !actions -->\\n      </form>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///11361\n");

}),

8849:

(function(module) {

eval("var _module_exports = \"<form name=\\\"$ctrl.redeployGitForm\\\" class=\\\"form-horizontal my-8\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Redeploy from git repository </div>\\n  <git-form-info-panel\\n    class-name=\\\"text-muted small\\\"\\n    url=\\\"$ctrl.model.URL\\\"\\n    type=\\\"stack\\\"\\n    config-file-path=\\\"$ctrl.model.ConfigFilePath\\\"\\n    additional-files=\\\"$ctrl.stack.AdditionalFiles\\\"\\n  ></git-form-info-panel>\\n\\n  <git-form-auto-update-fieldset\\n    model=\\\"$ctrl.formValues.AutoUpdate\\\"\\n    on-change=\\\"($ctrl.onChangeAutoUpdate)\\\"\\n    show-force-pull-image=\\\"$ctrl.stack.Type !== 3\\\"\\n  ></git-form-auto-update-fieldset>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <p>\\n        <a class=\\\"small interactive\\\" ng-click=\\\"$ctrl.state.showConfig = !$ctrl.state.showConfig\\\">\\n          <i ng-class=\\\"{ 'fa fa-minus space-right': $ctrl.state.showConfig, 'fa fa-plus space-right': !$ctrl.state.showConfig }\\\" aria-hidden=\\\"true\\\"></i>\\n          {{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration\\n        </a>\\n      </p>\\n    </div>\\n  </div>\\n  <git-form-ref-field ng-if=\\\"$ctrl.state.showConfig\\\" value=\\\"$ctrl.formValues.RefName\\\" on-change=\\\"($ctrl.onChangeRef)\\\"></git-form-ref-field>\\n  <git-form-auth-fieldset\\n    ng-if=\\\"$ctrl.state.showConfig\\\"\\n    is-edit=\\\"$ctrl.state.isEdit\\\"\\n    model=\\\"$ctrl.formValues\\\"\\n    on-change=\\\"($ctrl.onChange)\\\"\\n    show-auth-explanation=\\\"true\\\"\\n  ></git-form-auth-fieldset>\\n  <environment-variables-panel\\n    ng-model=\\\"$ctrl.formValues.Env\\\"\\n    explanation=\\\"这些值将被用作堆栈文件中的替代值\\\"\\n    on-change=\\\"($ctrl.onChangeEnvVar)\\\"\\n    show-help-message=\\\"true\\\"\\n  ></environment-variables-panel>\\n  <option-panel ng-if=\\\"$ctrl.stack.Type === 1 && $ctrl.endpoint.apiVersion >= 1.27\\\" ng-model=\\\"$ctrl.formValues.Option\\\" on-change=\\\"($ctrl.onChangeOption)\\\"></option-panel>\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.submit()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || $ctrl.state.hasUnsavedChanges || !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"$ctrl.state.redeployInProgress\\\"\\n    analytics-on\\n    analytics-event=\\\"docker-stack-pull-redeploy\\\"\\n    analytics-category=\\\"docker\\\"\\n  >\\n    <span ng-hide=\\\"$ctrl.state.redeployInProgress\\\"> <i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i> 拉取并重新部署 </span>\\n    <span ng-show=\\\"$ctrl.state.redeployInProgress\\\">正在进行中...</span>\\n  </button>\\n\\n  <button\\n    class=\\\"btn btn-sm btn-primary\\\"\\n    ng-click=\\\"$ctrl.saveGitSettings()\\\"\\n    ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.state.hasUnsavedChanges || !$ctrl.redeployGitForm.$valid\\\"\\n    style=\\\"margin-top: 7px; margin-left: 0\\\"\\n    button-spinner=\\\"$ctrl.state.inProgress\\\"\\n    analytics-on\\n    analytics-event=\\\"docker-stack-update-git-settings\\\"\\n    analytics-category=\\\"docker\\\"\\n    analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n  >\\n    <span ng-hide=\\\"$ctrl.state.inProgress\\\"> 保存设置 </span>\\n    <span ng-show=\\\"$ctrl.state.inProgress\\\">正在进行中...</span>\\n  </button>\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///8849\n");

}),

17775:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <div class=\\\"toolBar\\\">\\n    <div class=\\\"toolBarTitle\\\">{{ $ctrl.title }}</div>\\n    <div class=\\\"searchBar vertical-center\\\">\\n      <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"searchInput\\\"\\n        ng-model=\\\"$ctrl.paginationState.filter\\\"\\n        ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n        ng-model-options=\\\"{ debounce: 300 }\\\"\\n        placeholder=\\\"搜索...\\\"\\n      />\\n    </div>\\n  </div>\\n  <table class=\\\"table table-hover\\\" data-cy=\\\"{{ $ctrl.cyValue }}\\\">\\n    <thead>\\n      <tr>\\n        <th> 名称 </th>\\n        <th ng-if=\\\"$ctrl.showGroups\\\"> Group </th>\\n        <th ng-if=\\\"$ctrl.showTags\\\"> Tags </th>\\n      </tr>\\n    </thead>\\n    <tbody>\\n      <tr\\n        ng-if=\\\"!$ctrl.hasBackendPagination\\\"\\n        ng-click=\\\"$ctrl.entryClick(item)\\\"\\n        class=\\\"interactive\\\"\\n        dir-paginate=\\\"item in $ctrl.dataset | filter:$ctrl.paginationState.filter | itemsPerPage: $ctrl.paginationState.limit\\\"\\n        pagination-id=\\\"$ctrl.tableType\\\"\\n      >\\n        <td>\\n          {{ item.Name | truncate: 64 }}\\n        </td>\\n        <td ng-if=\\\"$ctrl.showGroups\\\">\\n          {{ $ctrl.groupIdToGroupName(item.GroupId) | truncate: 64 }}\\n        </td>\\n        <td ng-if=\\\"$ctrl.showTags\\\">\\n          {{ $ctrl.tagIdsToTagNames(item.TagIds) | arraytostr | truncate: 64 }}\\n        </td>\\n      </tr>\\n      <tr\\n        ng-if=\\\"$ctrl.hasBackendPagination\\\"\\n        ng-click=\\\"$ctrl.entryClick(item)\\\"\\n        class=\\\"interactive\\\"\\n        dir-paginate=\\\"item in $ctrl.dataset | itemsPerPage: $ctrl.paginationState.limit\\\"\\n        pagination-id=\\\"$ctrl.tableType\\\"\\n        total-items=\\\"$ctrl.paginationState.totalCount\\\"\\n      >\\n        <td>\\n          {{ item.Name | truncate: 64 }}\\n        </td>\\n        <td ng-if=\\\"$ctrl.showGroups\\\">\\n          {{ $ctrl.groupIdToGroupName(item.GroupId) | truncate: 64 }}\\n        </td>\\n        <td ng-if=\\\"$ctrl.showTags\\\">\\n          {{ $ctrl.tagIdsToTagNames(item.TagIds) | truncate: 64 }}\\n        </td>\\n      </tr>\\n\\n      <tr ng-if=\\\"!$ctrl.dataset\\\">\\n        <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n      </tr>\\n      <tr ng-if=\\\"$ctrl.dataset.length === 0\\\">\\n        <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">{{ $ctrl.emptyDatasetMessage }}</td>\\n      </tr>\\n    </tbody>\\n  </table>\\n  <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span class=\\\"space-right\\\"> 每页项目数 </span>\\n          <select ng-model=\\\"$ctrl.paginationState.limit\\\" ng-change=\\\"$ctrl.onPaginationLimitChanged()\\\">\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls pagination-id=\\\"$ctrl.tableType\\\" max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onPageChanged(newPageNumber, oldPageNumber)\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/group-association-table/groupAssociationTable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///17775\n");

}),

94081:

(function(module) {

eval("var _module_exports = \"<information-panel title-text=\\\"Offline mode\\\" cant-dismiss=\\\"true\\\">\\n  <span class=\\\"small\\\">\\n    <p class=\\\"text-muted\\\">\\n      <i class=\\\"fa fa-exclamation-circle orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n      This environment is currently offline (read-only). Data shown is based on the latest available snapshot.\\n    </p>\\n    <p class=\\\"text-muted\\\">\\n      <i class=\\\"fa fa-clock\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n      Last snapshot: {{ $ctrl.snapshotTime | getisodatefromtimestamp }}\\n    </p>\\n    <button type=\\\"button\\\" class=\\\"btn btn-xs btn-primary\\\" ng-click=\\\"$ctrl.triggerSnapshot()\\\" ng-if=\\\"$ctrl.showRefreshButton\\\">\\n      <i class=\\\"fa fa-sync space-right\\\" aria-hidden=\\\"true\\\"></i>Refresh\\n    </button>\\n  </span>\\n</information-panel>\\n\";;\nvar path = 'app/portainer/components/information-panel-offline/informationPanelOffline.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///94081\n");

}),

50182:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"form-horizontal\\\" name=\\\"$ctrl.optionForm\\\">\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px; margin-left: 15px; width: 98%\\\">选项 </div>\\n\\n    <!-- Prune service -->\\n    <div class=\\\"col-sm-12\\\">\\n      <label class=\\\"control-label text-left\\\">\\n        Prune services\\n        <portainer-tooltip position=\\\"'top'\\\" message=\\\"'Prune services that are no longer referenced.'\\\"></portainer-tooltip>\\n      </label>\\n      <label class=\\\"switch\\\" style=\\\"margin-left: 20px\\\"> <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.ngModel.Prune\\\" ng-change=\\\"$ctrl.switchPruneService()\\\" /><i></i> </label>\\n    </div>\\n    <!-- !Prune service -->\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/option-panel/option-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///50182\n");

}),

52273:

(function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _module_exports = \"<!-- extension -->\\n<div class=\\\"blocklist-item\\\" ng-click=\\\"$ctrl.goTo($ctrl.model)\\\">\\n  <div class=\\\"blocklist-item-box\\\">\\n    <!-- extension-image -->\\n    <span class=\\\"blocklist-item-logo\\\">\\n      <img class=\\\"blocklist-item-logo\\\" ng-if=\\\"$ctrl.model.Id == 1 || $ctrl.model.Id == 2 || $ctrl.model.Id == 3\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/support_1.png */ 21306) + \"\\\" />\\n      <img class=\\\"blocklist-item-logo\\\" ng-if=\\\"$ctrl.model.Id == 4 || $ctrl.model.Id == 5\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/support_2.png */ 6186) + \"\\\" />\\n    </span>\\n    <!-- !extension-image -->\\n    <!-- extension-details -->\\n    <span class=\\\"col-sm-12\\\">\\n      <!-- blocklist-item-line1 -->\\n      <div class=\\\"blocklist-item-line\\\">\\n        <span>\\n          <span class=\\\"blocklist-item-title\\\">\\n            {{ $ctrl.model.Name }}\\n          </span>\\n        </span>\\n      </div>\\n      <!-- !blocklist-item-line1 -->\\n      <!-- blocklist-item-line2 -->\\n      <div class=\\\"blocklist-item-line\\\">\\n        <span>\\n          <span class=\\\"blocklist-item-desc\\\">\\n            {{ $ctrl.model.ShortDescription }}\\n          </span>\\n        </span>\\n      </div>\\n      <!-- !blocklist-item-line2 -->\\n    </span>\\n    <!-- !extension-details -->\\n  </div>\\n  <!-- !extension -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/product-list/product-item/productItem.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///52273\n");

}),

2050:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle\\\"> <i class=\\\"fa fa-bolt\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i> {{ $ctrl.titleText }} </div>\\n      </div>\\n\\n      <div class=\\\"blocklist\\\">\\n        <product-item ng-repeat=\\\"product in $ctrl.products\\\" model=\\\"product\\\" go-to=\\\"$ctrl.goTo\\\"></product-item>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/product-list/productList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2050\n");

}),

22746:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\" ng-if=\\\"$ctrl.registry\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"radio\\\" feather-icon=\\\"true\\\" title-text=\\\"Registry\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td style=\\\"padding-left: 20px\\\">名称</td>\\n              <td>\\n                {{ $ctrl.registry.Name }}\\n              </td>\\n            </tr>\\n            <tr>\\n              <td style=\\\"padding-left: 20px\\\">URL</td>\\n              <td>\\n                {{ $ctrl.registry.URL }}\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/registry-details/registry-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///22746\n");

}),

63010:

(function(module) {

eval("var _module_exports = \"<div class=\\\"sensitive-details-container\\\">\\n  <div class=\\\"text-wrap\\\">{{ $ctrl.key }}</div>\\n  <show-hide class=\\\"show-hide-container\\\" value=\\\"$ctrl.value\\\" use-asterisk=\\\"true\\\"></show-hide>\\n  <copy-button value=\\\"$ctrl.value\\\"></copy-button>\\n</div>\\n\";;\nvar path = 'app/portainer/components/sensitive-details/sensitive-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///63010\n");

}),

39773:

(function(module) {

eval("var _module_exports = \"<div class=\\\"small text-muted text-wrap\\\">\\n  <span ng-if=\\\"!$ctrl.show && $ctrl.useAsterisk\\\">********</span>\\n  <span ng-if=\\\"$ctrl.show\\\">{{ $ctrl.value }}</span>\\n</div>\\n\\n<button type=\\\"button\\\" class=\\\"btn btn-link nopadding\\\" ng-click=\\\"$ctrl.show = !$ctrl.show\\\" title=\\\"Show/Hide value\\\">\\n  <div ng-if=\\\"!$ctrl.show\\\">\\n    <pr-icon icon=\\\"'eye-off'\\\" feather=\\\"true\\\"></pr-icon>\\n    Show</div\\n  >\\n  <div ng-if=\\\"$ctrl.show\\\">\\n    <pr-icon icon=\\\"'eye'\\\" feather=\\\"true\\\"></pr-icon>\\n    Hide</div\\n  >\\n</button>\\n\";;\nvar path = 'app/portainer/components/show-hide/show-hide.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///39773\n");

}),

55419:

(function(module) {

eval("var _module_exports = \"<div>\\n  <rzslider rz-slider-options=\\\"$ctrl.options\\\" rz-slider-model=\\\"$ctrl.model\\\"></rzslider>\\n</div>\\n\";;\nvar path = 'app/portainer/components/slider/slider.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///55419\n");

}),

78196:

(function(module) {

eval("var _module_exports = \"<div authorization=\\\"PortainerStackMigrate\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 堆栈复制/迁移 </div>\\n  <rd-widget>\\n    <rd-widget-body>\\n      <form class=\\\"form-horizontal\\\" name=\\\"dupStackForm\\\">\\n        <div class=\\\"form-group\\\">\\n          <span class=\\\"small\\\" style=\\\"margin-top: 10px\\\">\\n            <p class=\\\"text-muted\\\"> 此功能允许您复制或迁移此堆栈。 </p>\\n          </span>\\n        </div>\\n\\n        <div class=\\\"form-group\\\">\\n          <input\\n            class=\\\"form-control\\\"\\n            placeholder=\\\"堆栈名称（迁移时可选）\\\"\\n            aria-placeholder=\\\"Stack name\\\"\\n            name=\\\"new_stack_name\\\"\\n            ng-pattern=\\\"$ctrl.STACK_NAME_VALIDATION_REGEX\\\"\\n            ng-model=\\\"$ctrl.formValues.newName\\\"\\n          />\\n        </div>\\n        <div class=\\\"form-group\\\" ng-show=\\\"dupStackForm.new_stack_name.$invalid\\\">\\n          <div class=\\\"col-sm-12 small text-warning\\\">\\n            <div ng-messages=\\\"dupStackForm.new_stack_name.$error\\\">\\n              <p ng-message=\\\"pattern\\\">\\n                <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i>\\n                <span>该字段必须由小写字母数字字符组成， '_' 或 '-' (例如 'my-name', or 'abc-123').</span>\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.endpoints && $ctrl.groups\\\">\\n          <por-select value=\\\"$ctrl.formValues.endpointId\\\" on-change=\\\"($ctrl.onChangeEnvironment)\\\" options=\\\"$ctrl.environmentSelectorOptions\\\"></por-select>\\n        </div>\\n\\n        <div class=\\\"form-group\\\">\\n          <button\\n            class=\\\"btn btn-sm btn-primary\\\"\\n            ng-click=\\\"$ctrl.migrateStack()\\\"\\n            ng-disabled=\\\"$ctrl.isMigrationButtonDisabled()\\\"\\n            style=\\\"margin-top: 7px; margin-left: 0\\\"\\n            button-spinner=\\\"$ctrl.state.migrationInProgress\\\"\\n          >\\n            <span ng-hide=\\\"$ctrl.state.migrationInProgress\\\"> <i class=\\\"fa fa-long-arrow-alt-right space-right\\\" aria-hidden=\\\"true\\\"></i> 迁移 </span>\\n            <span ng-show=\\\"$ctrl.state.migrationInProgress\\\">正在进行迁移...</span>\\n          </button>\\n          <button\\n            class=\\\"btn btn-sm btn-primary\\\"\\n            ng-click=\\\"$ctrl.duplicateStack()\\\"\\n            ng-disabled=\\\"!$ctrl.isFormValidForDuplication() || $ctrl.state.duplicationInProgress || $ctrl.state.migrationInProgress\\\"\\n            style=\\\"margin-top: 7px; margin-left: 0\\\"\\n            button-spinner=\\\"$ctrl.state.duplicationInProgress\\\"\\n          >\\n            <span ng-hide=\\\"$ctrl.state.duplicationInProgress\\\"> <i class=\\\"fa fa-clone space-right\\\" aria-hidden=\\\"true\\\"></i> 复制 </span>\\n            <span ng-show=\\\"$ctrl.state.duplicationInProgress\\\">正在复制...</span>\\n          </button>\\n        </div>\\n\\n        <div class=\\\"form-group\\\">\\n          <div ng-if=\\\"$ctrl.yamlError && $ctrl.isEndpointSelected()\\\">\\n            <span class=\\\"text-danger small\\\">{{ $ctrl.yamlError }}</span>\\n          </div>\\n        </div>\\n      </form>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/stack-duplication-form/stack-duplication-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///78196\n");

}),

80240:

(function(module) {

eval("var _module_exports = \"<i aria-hidden=\\\"true\\\" ng-class=\\\"['status-indicator', { ok: $ctrl.ok }]\\\"></i>\\n\";;\nvar path = 'app/portainer/components/status-indicator/status-indicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///80240\n");

}),

76339:

(function(module) {

eval("var _module_exports = \"<!-- template -->\\n<div ng-class=\\\"{ 'blocklist-item--selected': $ctrl.model.Selected }\\\" class=\\\"blocklist-item template-item !mr-0 !my-0\\\" ng-click=\\\"$ctrl.onSelect($ctrl.model)\\\">\\n  <div class=\\\"blocklist-item-box\\\">\\n    <!-- template-image -->\\n    <div class=\\\"vertical-center justify-center min-w-[56px]\\\">\\n      <fallback-image\\n        src=\\\"$ctrl.model.Logo\\\"\\n        fallback-icon=\\\"'svg-rocket'\\\"\\n        class-name=\\\"'blocklist-item-logo'\\\"\\n        fallback-class-name=\\\"'!h-14 !w-14 [&>*]:!h-8 [&>*]:!w-auto icon-nested-blue'\\\"\\n        fallback-mode=\\\"'primary'\\\"\\n      ></fallback-image>\\n    </div>\\n    <!-- !template-image -->\\n    <!-- template-details -->\\n    <div class=\\\"col-sm-12 template-item-details\\\">\\n      <!-- blocklist-item-line1 -->\\n      <div class=\\\"blocklist-item-line gap-2\\\">\\n        <span class=\\\"blocklist-item-title\\\">\\n          {{ $ctrl.model.Title }}\\n        </span>\\n        <div class=\\\"inline-flex items-center space-left blocklist-item-subtitle\\\">\\n          <div ng-if=\\\"$ctrl.model.Type != 3\\\" class=\\\"vertical-center\\\">\\n            <i class=\\\"fab fa-linux space-right\\\" aria-hidden=\\\"true\\\" ng-if=\\\"$ctrl.model.Platform === 1 || $ctrl.model.Platform === 'linux' || !$ctrl.model.Platform\\\"></i>\\n            <span ng-if=\\\"!$ctrl.model.Platform\\\"> &amp; </span>\\n            <pr-icon\\n              icon=\\\"'svg-microsoft'\\\"\\n              ng-if=\\\"$ctrl.model.Platform === 2 || $ctrl.model.Platform === 'windows' || !$ctrl.model.Platform\\\"\\n              class-name=\\\"'[&>*]:flex [&>*]:items-center'\\\"\\n              size=\\\"'lg'\\\"\\n            ></pr-icon>\\n          </div>\\n          <div ng-if=\\\"$ctrl.model.Type === 3\\\" class=\\\"vertical-center\\\">\\n            <pr-icon icon=\\\"'svg-kubernetes'\\\" size=\\\"'lg'\\\" class=\\\"align-bottom\\\" class-name=\\\"'[&>*]:flex [&>*]:items-center'\\\"></pr-icon>\\n          </div>\\n          {{ $ctrl.typeLabel }}\\n        </div>\\n      </div>\\n      <!-- !blocklist-item-line1 -->\\n      <span class=\\\"blocklist-item-actions\\\" ng-transclude=\\\"actions\\\"></span>\\n      <!-- blocklist-item-line2 -->\\n      <div class=\\\"blocklist-item-line template-item-details-sub\\\">\\n        <span class=\\\"blocklist-item-desc\\\">\\n          {{ $ctrl.model.Description }}\\n        </span>\\n        <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.model.Categories.length > 0\\\">\\n          {{ $ctrl.model.Categories.join(', ') }}\\n        </span>\\n      </div>\\n      <!-- !blocklist-item-line2 -->\\n    </div>\\n    <!-- !template-details -->\\n  </div>\\n  <!-- !template -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/template-list/template-item/templateItem.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///76339\n");

}),

14309:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"{{ $ctrl.titleIcon }}\\\" feather-icon=\\\"true\\\" title-text=\\\"{{ $ctrl.titleText }}\\\"></rd-widget-header>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"actionBar\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"docker.templates.new\\\" ng-if=\\\"$ctrl.showAddAction\\\">\\n              <i class=\\\"fa fa-plus space-right\\\" aria-hidden=\\\"true\\\"></i>添加模板\\n            </button>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-sm-3\\\">\\n            <template-list-dropdown\\n              options=\\\"$ctrl.state.categories\\\"\\n              on-change=\\\"($ctrl.applyCategoriesFilter)\\\"\\n              placeholder=\\\"'类别'\\\"\\n              value=\\\"$ctrl.state.selectedCategory\\\"\\n            ></template-list-dropdown>\\n          </div>\\n          <div class=\\\"col-sm-3\\\">\\n            <template-list-dropdown\\n              options=\\\"$ctrl.state.typeFilters\\\"\\n              on-change=\\\"($ctrl.applyTypeFilter)\\\"\\n              placeholder=\\\"'类型'\\\"\\n              value=\\\"$ctrl.state.filterByType\\\"\\n            ></template-list-dropdown>\\n          </div>\\n          <div class=\\\"col-sm-3 col-sm-offset-3\\\">\\n            <template-list-sort\\n              on-change=\\\"($ctrl.changeOrderBy)\\\"\\n              on-descending=\\\"($ctrl.invertOrder)\\\"\\n              options=\\\"$ctrl.state.orderByFields\\\"\\n              sort-by-button=\\\"true\\\"\\n              sort-by-descending=\\\"$ctrl.state.orderDesc\\\"\\n              placeholder=\\\"'排序依据'\\\"\\n              value=\\\"$ctrl.state.selectedOrderBy\\\"\\n            ></template-list-sort>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <div class=\\\"searchBar items-center flex gap-1\\\">\\n              <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"searchInput\\\"\\n                ng-model=\\\"$ctrl.state.textFilter\\\"\\n                ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n                placeholder=\\\"搜索...\\\"\\n                auto-focus\\n                ng-model-options=\\\"{ debounce: 300 }\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"blocklist !px-[20px] gap-y-2 !pb-[20px]\\\">\\n        <template-item\\n          ng-repeat=\\\"template in $ctrl.templates | filter: $ctrl.filterByTemplateType | filter:$ctrl.filterByCategory | filter:$ctrl.state.textFilter\\\"\\n          model=\\\"template\\\"\\n          type-label=\\\"{{ template.Type === 1 ? 'container' : 'stack' }}\\\"\\n          on-select=\\\"($ctrl.selectAction)\\\"\\n        >\\n          <template-item-actions ng-if=\\\"template.Type === 2 || template.Type === 3\\\">\\n            <button ng-click=\\\"$event.stopPropagation(); $ctrl.duplicateTemplate(template)\\\" class=\\\"btn btn-primary btn-xs\\\"> 复制为自定义 </button>\\n          </template-item-actions>\\n        </template-item>\\n        <div ng-if=\\\"!$ctrl.templates\\\" class=\\\"text-center text-muted\\\"> 加载中... </div>\\n        <div\\n          ng-if=\\\"($ctrl.templates | filter: $ctrl.filterByTemplateType | filter: $ctrl.filterByCategory | filter: $ctrl.state.textFilter).length === 0\\\"\\n          class=\\\"text-center text-muted\\\"\\n        >\\n        没有可用的模板。\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/template-list/templateList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///14309\n");

}),

42662:

(function(module) {

eval("var _module_exports = \"<div class=\\\"mt-6\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"sliders\\\" feather-icon=\\\"true\\\" title-text=\\\"用户主题\\\"></rd-widget-header>\\n    <rd-widget-body>\\n      <form class=\\\"form-horizontal\\\">\\n        <box-selector radio-name=\\\"'theme'\\\" value=\\\"$ctrl.state.userTheme\\\" options=\\\"$ctrl.state.availableThemes\\\" on-change=\\\"($ctrl.setTheme)\\\"></box-selector>\\n      </form>\\n      <p class=\\\"mt-2 vertical-center\\\">\\n        <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'icon-primary'\\\" feather=\\\"true\\\"></pr-icon>\\n        深色和高对比度主题是试验性的。一些用户界面组件可能无法正常显示。\\n      </p>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/theme/theme-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///42662\n");

}),

91539:

(function(module) {

eval("var _module_exports = \"<div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Azure configuration </div>\\n  <!-- applicationId-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"azure_credential_appid\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Application ID</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"azure_credential_appid\\\" ng-model=\\\"$ctrl.applicationId\\\" placeholder=\\\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\\" required />\\n    </div>\\n  </div>\\n  <!-- !applicationId-input -->\\n  <!-- tenantId-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"azure_credential_tenantid\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Tenant ID</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"azure_credential_tenantid\\\" ng-model=\\\"$ctrl.tenantId\\\" placeholder=\\\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\\" required />\\n    </div>\\n  </div>\\n  <!-- !tenantId-input -->\\n  <!-- authenticationkey-input -->\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"azure_credential_authkey\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Authentication key</label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        name=\\\"azure_credential_authkey\\\"\\n        ng-model=\\\"$ctrl.authenticationKey\\\"\\n        placeholder=\\\"cOrXoK/1D35w8YQ8nH1/8ZGwzz45JIYD5jxHKXEQknk=\\\"\\n        required\\n      />\\n    </div>\\n  </div>\\n  <!-- !authenticationkey-input -->\\n</div>\\n\";;\nvar path = 'app/portainer/environments/azure-endpoint-config/azureEndpointConfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///91539\n");

}),

59154:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Provider </div>\\n\\n<box-selector value=\\\"$ctrl.value\\\" options=\\\"$ctrl.options\\\" on-change=\\\"($ctrl.onChange)\\\" radio-name=\\\"'oauth_provider'\\\"></box-selector>\\n\";;\nvar path = 'app/portainer/oauth/components/oauth-providers-selector/oauth-providers-selector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///59154\n");

}),

11318:

(function(module) {

eval("var _module_exports = \"<ng-form name=\\\"oauthSettingsForm\\\">\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Single Sign-On </div>\\n\\n  <!-- SSO -->\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'使用 SSO'\\\"\\n        tooltip=\\\"'当使用SSO时，OAuth提供者不会被强制提示凭证。'\\\"\\n        name=\\\"'use-sso'\\\"\\n        checked=\\\"$ctrl.settings.SSO\\\"\\n        on-change=\\\"($ctrl.updateSSO)\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !SSO -->\\n\\n  <!-- HideInternalAuth -->\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.SSO\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'隐藏内部认证提示'\\\"\\n        name=\\\"'hide-internal-auth'\\\"\\n        feature-id=\\\"$ctrl.limitedFeature\\\"\\n        checked=\\\"$ctrl.settings.HideInternalAuth\\\"\\n        on-change=\\\"($ctrl.onChangeHideInternalAuth)\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n  <!-- !HideInternalAuth -->\\n\\n  <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.OAuthAutoCreateUsers\\\">\\n    <field-description>\\n      启用自动用户配置后，Portainer将自动创建具有标准用户角色的用户。如果禁用，用户必须事先在Portainer中创建\\n      中创建用户，以便登录。\\n    </field-description>\\n  </auto-user-provision-toggle>\\n\\n  <div ng-if=\\\"$ctrl.settings.OAuthAutoCreateUsers\\\">\\n    <div class=\\\"form-group\\\">\\n      <span class=\\\"col-sm-12 text-muted small\\\">\\n        <p>由自动供应功能创建的用户可以在创建时被添加到一个默认的团队。</p>\\n        <p>\\n          通过将新创建的用户分配到一个团队，他们将能够访问与该团队相关的环境。这个设置是可选的，如果不设置，新创建的\\n          用户将不能访问任何环境。\\n        </p>\\n      </span>\\n    </div>\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">默认团队</label>\\n      <span class=\\\"small text-muted\\\" style=\\\"margin-left: 20px\\\" ng-if=\\\"$ctrl.teams.length === 0\\\">\\n        你还没有创建任何团队，请到 <a ui-sref=\\\"portainer.teams\\\">团队视图</a> 中管理团队。\\n      </span>\\n\\n      <div class=\\\"col-sm-9\\\" ng-if=\\\"$ctrl.teams.length > 0\\\">\\n        <div class=\\\"col-sm-12 small text-muted\\\">\\n          <p class=\\\"vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n            启用自动团队成员资格后，默认团队选项将被禁用。\\n          </p>\\n        </div>\\n        <div class=\\\"col-xs-12 vertical-center\\\">\\n          <select\\n            class=\\\"form-control\\\"\\n            ng-disabled=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n            ng-model=\\\"$ctrl.settings.DefaultTeamID\\\"\\n            ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\"\\n          >\\n            <option value=\\\"\\\">No team</option>\\n          </select>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-md btn-danger\\\"\\n            ng-click=\\\"$ctrl.settings.DefaultTeamID = null\\\"\\n            ng-disabled=\\\"!$ctrl.settings.DefaultTeamID || $ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n            ng-if=\\\"$ctrl.teams.length > 0\\\"\\n          >\\n            <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 团队成员 </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12 text-muted small\\\"> 自动团队成员资格根据来自OAuth提供者的令牌中的自定义要求，同步团队成员资格。 </div>\\n  </div>\\n  <div class=\\\"form-group\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <por-switch-field\\n        label=\\\"'自动团队成员'\\\"\\n        name=\\\"'tls'\\\"\\n        feature-id=\\\"$ctrl.limitedFeature\\\"\\n        checked=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n        on-change=\\\"($ctrl.onToggleAutoTeamMembership)\\\"\\n      ></por-switch-field>\\n    </div>\\n  </div>\\n\\n  <div ng-if=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\">\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Claim name\\n        <portainer-tooltip message=\\\"'包含用户所属团队标识的OpenID Connect UserInfo Claim名称。'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <div class=\\\"col-xs-11 col-lg-10\\\">\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"oauth_token_claim_name\\\" ng-model=\\\"$ctrl.settings.TeamMemberships.OAuthClaimName\\\" placeholder=\\\"groups\\\" />\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Statically assigned teams </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <span class=\\\"label label-default interactive vertical-center ml-4\\\" ng-click=\\\"$ctrl.addTeamMembershipMapping()\\\">\\n          <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n          添加团队映射\\n        </span>\\n\\n        <div class=\\\"col-sm-12 form-inline\\\" ng-repeat=\\\"mapping in $ctrl.settings.TeamMemberships.OAuthClaimMappings\\\" style=\\\"margin-top: 0.75em\\\">\\n          <div class=\\\"input-group input-group-sm col-sm-5\\\">\\n            <span class=\\\"input-group-addon\\\">claim value regex</span>\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"mapping.ClaimValRegex\\\" />\\n          </div>\\n          <span style=\\\"margin: 0px 0.5em\\\">映射到</span>\\n          <div class=\\\"input-group input-group-sm col-sm-3 col-lg-4\\\">\\n            <span class=\\\"input-group-addon\\\">团队</span>\\n            <select\\n              class=\\\"form-control\\\"\\n              ng-init=\\\"mapping.Team = mapping.Team || $ctrl.settings.DefaultTeamID\\\"\\n              ng-model=\\\"mapping.Team\\\"\\n              ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\"\\n            >\\n              <option selected value=\\\"\\\">选择团队</option>\\n            </select>\\n          </div>\\n          <button type=\\\"button\\\" class=\\\"btn btn-md btn-danger\\\" ng-click=\\\"$ctrl.removeTeamMembership($index)\\\">\\n            <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n          </button>\\n\\n          <div>\\n            <div class=\\\"small text-warning vertical-center mt-1\\\" ng-show=\\\"!mapping.ClaimValRegex\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n              Claim value regex is required.\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 0.5em\\\"> 当用户不属于任何其他团队时，将分配默认团队 </div>\\n      <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">默认团队</label>\\n      <span class=\\\"small text-muted\\\" style=\\\"margin-left: 20px\\\" ng-if=\\\"$ctrl.teams.length === 0\\\">\\n        您尚未创建任何团队。转到 <a ui-sref=\\\"portainer.teams\\\">团队视图</a> 中管理团队。\\n      </span>\\n\\n      <div class=\\\"col-sm-9\\\" ng-if=\\\"$ctrl.teams.length > 0\\\">\\n        <div class=\\\"col-xs-11\\\">\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.settings.DefaultTeamID\\\" ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\">\\n            <option value=\\\"\\\">No team</option>\\n          </select>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <oauth-providers-selector on-change=\\\"($ctrl.onSelectProvider)\\\" value=\\\"$ctrl.state.provider\\\"></oauth-providers-selector>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\">OAuth Configuration</div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.provider == 'microsoft'\\\">\\n    <label for=\\\"oauth_microsoft_tenant_id\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Tenant ID\\n      <portainer-tooltip message=\\\"'要针对其进行身份验证的Azure目录的ID。也称为目录ID'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"form-control\\\"\\n        id=\\\"oauth_microsoft_tenant_id\\\"\\n        placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n        ng-model=\\\"$ctrl.state.microsoftTenantID\\\"\\n        ng-change=\\\"$ctrl.onMicrosoftTenantIDChange()\\\"\\n        limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\"\\n        limited-feature-class=\\\"limited-be\\\"\\n        limited-feature-disabled\\n        limited-feature-tabindex=\\\"-1\\\"\\n        required\\n      />\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"oauth_client_id\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      {{ $ctrl.state.provider == 'microsoft' ? 'Application ID' : 'Client ID' }}\\n      <portainer-tooltip message=\\\"'Public identifier of the OAuth application'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"text\\\"\\n        id=\\\"oauth_client_id\\\"\\n        ng-model=\\\"$ctrl.settings.ClientID\\\"\\n        placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n        ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n        ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n      />\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"oauth_client_secret\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      {{ $ctrl.state.provider == 'microsoft' ? 'Application key' : 'Client secret' }}\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input\\n        type=\\\"password\\\"\\n        class=\\\"form-control\\\"\\n        id=\\\"oauth_client_secret\\\"\\n        ng-model=\\\"$ctrl.settings.ClientSecret\\\"\\n        placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n        autocomplete=\\\"new-password\\\"\\n        ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n        ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n      />\\n    </div>\\n  </div>\\n\\n  <div ng-if=\\\"$ctrl.state.provider == 'custom' || $ctrl.state.overrideConfiguration\\\">\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_authorization_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Authorization URL\\n        <portainer-tooltip message=\\\"'URL used to authenticate against the OAuth provider. Will redirect the user to the OAuth provider login view'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_authorization_uri\\\"\\n          ng-model=\\\"$ctrl.settings.AuthorizationURI\\\"\\n          placeholder=\\\"https://example.com/oauth/authorize\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_access_token_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Access token URL\\n        <portainer-tooltip message=\\\"'URL used by Portainer to exchange a valid OAuth authentication code for an access token'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_access_token_uri\\\"\\n          ng-model=\\\"$ctrl.settings.AccessTokenURI\\\"\\n          placeholder=\\\"https://example.com/oauth/token\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_resource_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Resource URL\\n        <portainer-tooltip message=\\\"'URL used by Portainer to retrieve information about the authenticated user'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_resource_uri\\\"\\n          ng-model=\\\"$ctrl.settings.ResourceURI\\\"\\n          placeholder=\\\"https://example.com/user\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_redirect_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Redirect URL\\n        <portainer-tooltip\\n          message=\\\"'URL used by the OAuth provider to redirect the user after successful authentication. Should be set to your Portainer instance URL'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_redirect_uri\\\"\\n          ng-model=\\\"$ctrl.settings.RedirectURI\\\"\\n          placeholder=\\\"http://yourportainer.com/\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_logout_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Logout URL\\n        <portainer-tooltip\\n          message=\\\"'URL used by Portainer to redirect the user to the OAuth provider in order to log the user out of the identity provider session.'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_logout_url\\\"\\n          ng-model=\\\"$ctrl.settings.LogoutURI\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_user_identifier\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        User identifier\\n        <portainer-tooltip\\n          message=\\\"'Identifier that will be used by Portainer to create an account for the authenticated user. Retrieved from the resource server specified via the Resource URL field'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_user_identifier\\\"\\n          ng-model=\\\"$ctrl.settings.UserIdentifier\\\"\\n          placeholder=\\\"id\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"oauth_scopes\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n        Scopes\\n        <portainer-tooltip\\n          message=\\\"'Scopes required by the OAuth provider to retrieve information about the authenticated user. Refer to your OAuth provider documentation for more information about this'\\\"\\n        ></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-9 col-lg-10\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"oauth_scopes\\\"\\n          ng-model=\\\"$ctrl.settings.Scopes\\\"\\n          placeholder=\\\"id,email,name\\\"\\n          ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n          ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n        />\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.provider != 'custom'\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"!$ctrl.state.overrideConfiguration\\\" ng-click=\\\"$ctrl.state.overrideConfiguration = true;\\\">\\n        <pr-icon icon=\\\"'tool'\\\" feather=\\\"true\\\"></pr-icon>\\n        Override default configuration\\n      </a>\\n      <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\" ng-click=\\\"$ctrl.useDefaultProviderConfiguration($ctrl.state.provider)\\\">\\n        <pr-icon icon=\\\"'settings'\\\" feather=\\\"true\\\"></pr-icon>\\n        Use default configuration\\n      </a>\\n    </div>\\n  </div>\\n  <save-auth-settings-button\\n    on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n    save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n    save-button-disabled=\\\"!$ctrl.isOAuthTeamMembershipFormValid() || oauthSettingsForm.$invalid\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeature\\\"\\n    limited-feature-class=\\\"$ctrl.limitedFeatureClass\\\"\\n    class-name=\\\"'oauth-save-settings-button'\\\"\\n  ></save-auth-settings-button>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/oauth/components/oauth-settings/oauth-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///11318\n");

}),

27707:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable access-viewer-datatable\\\">\\n  <div class=\\\"toolBar vertical-center pl-0 pr-0\\\">\\n    <div class=\\\"toolBarTitle vertical-center\\\">\\n      <div>\\n        <div class=\\\"form-section-title mb-1\\\">访问</div>\\n        <div class=\\\"vertical-center\\\">\\n          <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\" size=\\\"'sm'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n          <span class=\\\"small text-muted\\\"> 每个环境的有效角色将显示给所选用户 </span>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"searchBar vertical-center\\\">\\n      <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" feather=\\\"true\\\"></pr-icon>\\n      <input\\n        type=\\\"text\\\"\\n        class=\\\"searchInput ml-1\\\"\\n        ng-model=\\\"$ctrl.state.textFilter\\\"\\n        ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n        placeholder=\\\"搜索...\\\"\\n        ng-model-options=\\\"{ debounce: 300 }\\\"\\n      />\\n    </div>\\n  </div>\\n  <div class=\\\"table-responsive\\\">\\n    <table class=\\\"table table-hover nowrap-cells\\\">\\n      <thead>\\n        <tr>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'环境'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'EndpointName'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'EndpointName' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('EndpointName')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>\\n            <table-column-header\\n              col-title=\\\"'角色'\\\"\\n              can-sort=\\\"true\\\"\\n              is-sorted=\\\"$ctrl.state.orderBy === 'RoleName'\\\"\\n              is-sorted-desc=\\\"$ctrl.state.orderBy === 'RoleName' && $ctrl.state.reverseOrder\\\"\\n              ng-click=\\\"$ctrl.changeOrderBy('RoleName')\\\"\\n            ></table-column-header>\\n          </th>\\n          <th>访问来源</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr\\n          dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n        >\\n          <td>{{ item.EndpointName }}</td>\\n          <td>{{ item.RoleName }}</td>\\n          <td\\n            >{{ item.TeamName ? 'Team' : 'User' }} <code ng-if=\\\"item.TeamName\\\">{{ item.TeamName }}</code> access defined on {{ item.AccessLocation }}\\n            <code ng-if=\\\"item.GroupName\\\">{{ item.GroupName }}</code>\\n            <a ng-if=\\\"!item.GroupName && $ctrl.isAdmin\\\" ui-sref=\\\"portainer.endpoints.endpoint.access({id: item.EndpointId})\\\"\\n              ><pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon> 管理访问\\n            </a>\\n            <a ng-if=\\\"item.GroupName && $ctrl.isAdmin\\\" ui-sref=\\\"portainer.groups.group.access({id: item.GroupId})\\\"\\n              ><pr-icon icon=\\\"'users'\\\" feather=\\\"true\\\"></pr-icon> 管理访问\\n            </a>\\n          </td>\\n        </tr>\\n        <tr ng-if=\\\"!$ctrl.dataset\\\">\\n          <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">选择一个用户以显示相关的访问和角色</td>\\n        </tr>\\n        <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n          <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">所选用户没有访问任何环境的权限</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n    <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n    <div class=\\\"paginationControls\\\">\\n      <form class=\\\"form-inline\\\">\\n        <span class=\\\"limitSelector\\\">\\n          <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n          <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n            <option value=\\\"0\\\">All</option>\\n            <option value=\\\"10\\\">10</option>\\n            <option value=\\\"25\\\">25</option>\\n            <option value=\\\"50\\\">50</option>\\n            <option value=\\\"100\\\">100</option>\\n          </select>\\n        </span>\\n        <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n      </form>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/access-viewer/access-viewer-datatable/access-viewer-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///27707\n");

}),

98538:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 0px\\\">\\n  <rd-widget>\\n    <rd-widget-header icon=\\\"svg-userlock\\\" feather-icon=\\\"true\\\">\\n      <header-title>\\n        有效访问查看器\\n        <be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\" class=\\\"space-left\\\"></be-feature-indicator>\\n      </header-title>\\n    </rd-widget-header>\\n    <rd-widget-body>\\n      <form class=\\\"form-horizontal\\\">\\n        <div class=\\\"col-sm-12 form-section-title\\\"> 用户 </div>\\n        <div class=\\\"form-group\\\">\\n          <div class=\\\"col-sm-12\\\">\\n            <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.users.length === 0\\\"> 没有可用用户 </span>\\n\\n            <por-select ng-if=\\\"$ctrl.users.length > 0\\\" value=\\\"$ctrl.selectedUserId\\\" options=\\\"$ctrl.users\\\" on-change=\\\"($ctrl.onUserSelect)\\\" placeholder=\\\"'Select a user'\\\">\\n            </por-select>\\n          </div>\\n        </div>\\n        <access-viewer-datatable table-key=\\\"access_viewer\\\" dataset=\\\"$ctrl.userRoles\\\" order-by=\\\"EndpointName\\\" is-admin=\\\"$ctrl.isAdmin\\\"> </access-viewer-datatable>\\n      </form>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/access-viewer/access-viewer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98538\n");

}),

71450:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\" class=\\\"vertical-center\\\" class-name=\\\"'icon-white icon-primary icon-nested-blue'\\\"></pr-icon>{{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput ml-1\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Description'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Description'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Description' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Description')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th class=\\\"be-visual-indicator-col\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>{{ item.Name }}</td>\\n              <td>{{ item.Description }}</td>\\n              <td class=\\\"be-visual-indicator-col\\\" ng-switch on=\\\"$ctrl.isDefaultItem(item)\\\">\\n                <span ng-switch-when=\\\"false\\\">\\n                  <be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator>\\n                </span>\\n                <b ng-switch-when=\\\"true\\\">Default</b>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">No role available.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} 所选项目 </div>\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/roles-datatable/roles-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///71450\n");

}),

49458:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Roles'\\\" breadcrumbs=\\\"['Role management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <roles-datatable title-text=\\\"Roles\\\" title-icon=\\\"svg-filecode\\\" dataset=\\\"$ctrl.roles\\\" table-key=\\\"roles\\\"></roles-datatable>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <access-viewer> </access-viewer>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/views/roles/roles.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///49458\n");

}),

50551:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Automatic user provisioning </div>\\n<div class=\\\"form-group\\\">\\n  <span class=\\\"col-sm-12 text-muted small\\\" ng-transclude=\\\"description\\\"> </span>\\n</div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 vertical-center\\\">\\n    <label for=\\\"tls\\\" class=\\\"control-label text-left !pt-0\\\"> Automatic user provisioning </label>\\n    <label class=\\\"switch ml-6 my-0\\\">\\n      <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.ngModel\\\" />\\n      <span class=\\\"slider round\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/auto-user-provision-toggle/auto-user-provision-toggle.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///50551\n");

}),

22555:

(function(module) {

eval("var _module_exports = \"<ng-form class=\\\"ad-settings\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-class=\\\"limited-be\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'This feature is currently limited to Business Edition users only. '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.AutoCreateUsers\\\">\\n        <field-description>\\n          With automatic user provisioning enabled, Portainer will create user(s) automatically with standard user role and assign them to team(s) which matches to LDAP group\\n          name(s). If disabled, users must be created in Portainer beforehand.\\n        </field-description>\\n      </auto-user-provision-toggle>\\n\\n      <div>\\n        <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n        <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n          When using Microsoft AD authentication, Portainer will delegate user authentication to the Domain Controller(s) configured below; if there is no connectivity, Portainer\\n          will fallback to internal authentication.\\n        </div>\\n      </div>\\n\\n      <div class=\\\"col-sm-12 form-section-title\\\"> AD configuration </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <div class=\\\"col-sm-12 small text-muted\\\">\\n          <p class=\\\"vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n            You can configure multiple AD Controllers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all\\n            use the same certificates).\\n          </p>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"display: flex; flex-wrap: wrap\\\">\\n          AD Controller\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"label label-default interactive vertical-center\\\"\\n            style=\\\"border: 0\\\"\\n            ng-click=\\\"$ctrl.addLDAPUrl()\\\"\\n            limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n            limited-feature-tabindex=\\\"-1\\\"\\n          >\\n            <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n            Add additional server\\n          </button>\\n        </label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <div ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\" style=\\\"display: flex; margin-bottom: 10px\\\">\\n            <input\\n              type=\\\"text\\\"\\n              class=\\\"form-control\\\"\\n              id=\\\"ldap_url\\\"\\n              ng-model=\\\"$ctrl.settings.URLs[$index]\\\"\\n              placeholder=\\\"例如 10.0.0.10:389 or myldap.domain.tld:389\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            />\\n            <button\\n              ng-if=\\\"$index > 0\\\"\\n              class=\\\"btn btn-sm btn-danger\\\"\\n              type=\\\"button\\\"\\n              ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n            </button>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n          Service Account\\n          <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n        </label>\\n        <div class=\\\"col-sm-9\\\">\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"form-control\\\"\\n            id=\\\"ldap_username\\\"\\n            ng-model=\\\"$ctrl.settings.ReaderDN\\\"\\n            placeholder=\\\"reader@domain.tld\\\"\\n            ng-change=\\\"$ctrl.onAccountChange($ctrl.settings.ReaderDN)\\\"\\n            limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n            limited-feature-tabindex=\\\"-1\\\"\\n          />\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n          Service Account Password\\n          <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n        </label>\\n        <div class=\\\"col-sm-9\\\">\\n          <input\\n            type=\\\"password\\\"\\n            class=\\\"form-control\\\"\\n            id=\\\"ldap_password\\\"\\n            ng-model=\\\"$ctrl.settings.Password\\\"\\n            placeholder=\\\"password\\\"\\n            autocomplete=\\\"new-password\\\"\\n            limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n            limited-feature-tabindex=\\\"-1\\\"\\n          />\\n        </div>\\n      </div>\\n\\n      <ldap-connectivity-check\\n        ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        state=\\\"$ctrl.state\\\"\\n        connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-connectivity-check>\\n\\n      <ldap-settings-security\\n        title=\\\"AD Connectivity Security\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n        upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n        on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-settings-security>\\n\\n      <ldap-connectivity-check\\n        ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        state=\\\"$ctrl.state\\\"\\n        connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-connectivity-check>\\n\\n      <ldap-user-search\\n        style=\\\"margin-top: 5px\\\"\\n        show-username-format=\\\"true\\\"\\n        settings=\\\"$ctrl.settings.SearchSettings\\\"\\n        domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n        base-filter=\\\"(objectClass=user)\\\"\\n        on-search-click=\\\"($ctrl.searchUsers)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-user-search>\\n\\n      <ldap-group-search\\n        style=\\\"margin-top: 5px\\\"\\n        settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n        domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n        base-filter=\\\"(objectClass=group)\\\"\\n        on-search-click=\\\"($ctrl.searchGroups)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-group-search>\\n\\n      <ldap-custom-admin-group\\n        style=\\\"margin-top: 5px\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        on-search-click=\\\"($ctrl.onSearchAdminGroupsClick)\\\"\\n        selected-admin-groups=\\\"$ctrl.selectedAdminGroups\\\"\\n        default-admin-group-search-filter=\\\"'(objectClass=groupOfNames)'\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n        is-limited-feature-self-contained=\\\"false\\\"\\n      ></ldap-custom-admin-group>\\n\\n      <ldap-settings-test-login settings=\\\"$ctrl.settings\\\" limited-feature-id=\\\"$ctrl.limitedFeatureId\\\" is-limited-feature-self-contained=\\\"false\\\"></ldap-settings-test-login>\\n      <save-auth-settings-button\\n        on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n        save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n        save-button-disabled=\\\"($ctrl.isSaveSettingButtonDisabled())\\\"\\n      ></save-auth-settings-button>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///22555\n");

}),

10386:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left vertical-center\\\">\\n    Connectivity check\\n    <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\" mode=\\\"'success'\\\" ng-if=\\\"$ctrl.state.successfulConnectivityCheck\\\"></pr-icon>\\n    <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" mode=\\\"'danger'\\\" ng-if=\\\"$ctrl.state.failedConnectivityCheck\\\"></pr-icon>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-primary btn-sm\\\"\\n      ng-disabled=\\\"($ctrl.state.connectivityCheckInProgress) || (!$ctrl.settings.URLs.length) || ((!$ctrl.settings.ReaderDN || !$ctrl.settings.Password) && !$ctrl.settings.AnonymousMode)\\\"\\n      ng-click=\\\"$ctrl.connectivityCheck()\\\"\\n      button-spinner=\\\"$ctrl.state.connectivityCheckInProgress\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      <span ng-hide=\\\"$ctrl.state.connectivityCheckInProgress\\\">Test connectivity</span>\\n      <span ng-show=\\\"$ctrl.state.connectivityCheckInProgress\\\">Testing connectivity...</span>\\n    </button>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-connectivity-check/ldap-connectivity-check.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///10386\n");

}),

57498:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title ldap-custom-admin-group-title\\\" ng-style=\\\"$ctrl.isLimitedFeatureSelfContained && { 'padding-bottom': '15px' }\\\">\\n  Auto-populate team admins <be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\" class=\\\"space-left\\\" ng-if=\\\"$ctrl.isLimitedFeatureSelfContained\\\"></be-feature-indicator>\\n</div>\\n\\n<rd-widget ng-repeat=\\\"config in $ctrl.settings.AdminGroupSearchSettings | limitTo: (1 - $ctrl.settings.AdminGroupSearchSettings)\\\">\\n  <rd-widget-body>\\n    <div class=\\\"form-group mb-3\\\" ng-if=\\\"$index > 0\\\">\\n      <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_admin_group_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Base DN\\n        <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for groups.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-4\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"ldap_admin_group_basedn_{{ $index }}\\\"\\n          ng-model=\\\"config.GroupBaseDN\\\"\\n          placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\"\\n          limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n          limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n          ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n          limited-feature-tabindex=\\\"-1\\\"\\n        />\\n      </div>\\n\\n      <label for=\\\"ldap_admin_group_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Membership Attribute\\n        <portainer-tooltip message=\\\"'LDAP attribute which denotes the group membership.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-4\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"ldap_admin_group_att_{{ $index }}\\\"\\n          ng-model=\\\"config.GroupAttribute\\\"\\n          placeholder=\\\"member\\\"\\n          limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n          limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n          ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n          limited-feature-tabindex=\\\"-1\\\"\\n        />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_admin_group_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Filter\\n        <portainer-tooltip message=\\\"'The LDAP search filter used to select group elements, optional.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n        <input\\n          type=\\\"text\\\"\\n          class=\\\"form-control\\\"\\n          id=\\\"ldap_admin_group_filter_{{ $index }}\\\"\\n          ng-model=\\\"config.GroupFilter\\\"\\n          placeholder=\\\"(objectClass=groupOfNames)\\\"\\n          limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n          limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n          ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n          limited-feature-tabindex=\\\"-1\\\"\\n        />\\n        <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\\n<div class=\\\"form-group mt-3\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button\\n      class=\\\"label label-default interactive no-border vertical-center\\\"\\n      ng-click=\\\"$ctrl.onAddClick()\\\"\\n      limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n      limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n      limited-feature-disabled\\n    >\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add group search configuration\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12 vertical-center mt-2\\\">\\n    <button\\n      class=\\\"btn btm-sm btn-primary\\\"\\n      type=\\\"button\\\"\\n      ng-click=\\\"$ctrl.search()\\\"\\n      limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n      limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n      ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      Fetch Admin Group(s)\\n    </button>\\n    <span ng-if=\\\"$ctrl.groups && $ctrl.groups.length === 0\\\" class=\\\"ml-6 vertical-center\\\">\\n      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n      No groups found\\n    </span>\\n  </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 vertical-center\\\">\\n    <label for=\\\"admin-auto-populate\\\" class=\\\"control-label text-left text-muted !pt-0\\\" ng-class=\\\"{ 'text-muted': !$ctrl.enableAssignAdminGroup }\\\">\\n      Assign admin rights to group(s)\\n    </label>\\n    <label class=\\\"switch ml-7 my-0\\\" ng-class=\\\"{ 'business limited': $ctrl.isLimitedFeatureSelfContained }\\\">\\n      <input id=\\\"admin-auto-populate\\\" ng-disabled=\\\"!$ctrl.enableAssignAdminGroup\\\" name=\\\"admin-auto-populate\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.AdminAutoPopulate\\\" />\\n      <span class=\\\"slider round before:content-['']\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n\\n<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.AdminAutoPopulate && $ctrl.groups\\\">\\n  <label for=\\\"group-access\\\" class=\\\"control-label text-left col-sm-2\\\"> Select Group(s) </label>\\n  <div class=\\\"col-sm-8\\\">\\n    <por-select\\n      data-cy=\\\"'group-access-selector'\\\"\\n      input-id=\\\"'group-access'\\\"\\n      value=\\\"$ctrl.selectedAdminGroups\\\"\\n      on-change=\\\"($ctrl.onAdminGroupChange)\\\"\\n      options=\\\"$ctrl.groups\\\"\\n      placeholder=\\\"'选择一个或多个组'\\\"\\n      is-multi=\\\"true\\\"\\n    >\\n    </por-select>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///57498\n");

}),

64042:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> Group search configurations </div>\\n\\n<rd-widget ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\" style=\\\"display: block; margin-bottom: 10px\\\">\\n  <rd-widget-body>\\n    <div class=\\\"form-group\\\" ng-if=\\\"$index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n      <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_group_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Base DN\\n        <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for groups.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-4\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_basedn_{{ $index }}\\\" ng-model=\\\"config.GroupBaseDN\\\" placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\" />\\n      </div>\\n\\n      <label for=\\\"ldap_group_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Membership Attribute\\n        <portainer-tooltip message=\\\"'LDAP attribute which denotes the group membership.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-4\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_att_{{ $index }}\\\" ng-model=\\\"config.GroupAttribute\\\" placeholder=\\\"member\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_group_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Group Filter\\n        <portainer-tooltip message=\\\"'The LDAP search filter used to select group elements, optional.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_filter_{{ $index }}\\\" ng-model=\\\"config.GroupFilter\\\" placeholder=\\\"(objectClass=account)\\\" />\\n        <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button class=\\\"label label-default interactive vertical-center\\\" style=\\\"border: 0\\\" ng-click=\\\"$ctrl.onAddClick()\\\">\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add group search configuration\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n    <button\\n      class=\\\"btn btm-sm btn-primary\\\"\\n      type=\\\"button\\\"\\n      ng-click=\\\"$ctrl.search()\\\"\\n      limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n      limited-feature-disabled\\n      limited-feature-class=\\\"limited-be\\\"\\n    >\\n      Display User/Group matching\\n    </button>\\n    <be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\" class=\\\"space-left\\\"></be-feature-indicator>\\n  </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n  <div class=\\\"form-group col-sm-12\\\">\\n    <ldap-groups-datatable dataset=\\\"$ctrl.groups\\\" title-text=\\\"Groups\\\" title-icon=\\\"users\\\" table-key=\\\"ldapGroups\\\"></ldap-groups-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///64042\n");

}),

65048:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> User search configurations </div>\\n\\n<rd-widget ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\" style=\\\"display: block; margin-bottom: 10px\\\">\\n  <rd-widget-body>\\n    <div class=\\\"form-group\\\" ng-if=\\\"$index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n      <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Base DN\\n        <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for users.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-4\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_basedn_{{ $index }}\\\" ng-model=\\\"config.BaseDN\\\" placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\" />\\n      </div>\\n\\n      <label for=\\\"ldap_username_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-3 col-lg-2 control-label text-left\\\">\\n        Username attribute\\n        <portainer-tooltip message=\\\"'LDAP attribute which denotes the username.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-3 col-lg-4\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_username_att_{{ $index }}\\\" ng-model=\\\"config.UserNameAttribute\\\" placeholder=\\\"uid\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"form-group\\\">\\n      <label for=\\\"ldap_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n        Filter\\n        <portainer-tooltip message=\\\"'The LDAP search filter used to select user elements, optional.'\\\"></portainer-tooltip>\\n      </label>\\n      <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_filter_{{ $index }}\\\" ng-model=\\\"config.Filter\\\" placeholder=\\\"(objectClass=account)\\\" />\\n        <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n        </button>\\n      </div>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button class=\\\"label label-default interactive vertical-center\\\" style=\\\"border: 0\\\" ng-click=\\\"$ctrl.onAddClick()\\\">\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add user search configuration\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n    <button\\n      class=\\\"btn btm-sm btn-primary\\\"\\n      type=\\\"button\\\"\\n      ng-click=\\\"$ctrl.search()\\\"\\n      limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n      limited-feature-disabled\\n      limited-feature-class=\\\"limited-be\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      Display Users\\n    </button>\\n    <be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\" class=\\\"space-left\\\"></be-feature-indicator>\\n  </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n  <div class=\\\"form-group col-sm-12\\\">\\n    <ldap-users-datatable dataset=\\\"$ctrl.users\\\" title-text=\\\"Users\\\" title-icon=\\\"users\\\" table-key=\\\"ldapUsers\\\" order-by=\\\"\\\" reverse-order=\\\"\\\"></ldap-users-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///65048\n");

}),

79557:

(function(module) {

eval("var _module_exports = \"<rd-widget>\\n  <rd-widget-body>\\n    <div ng-if=\\\"$ctrl.index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n      <span class=\\\"text-muted small\\\"> Extra search configuration </span>\\n      <button\\n        class=\\\"btn btn-sm btn-danger\\\"\\n        type=\\\"button\\\"\\n        ng-click=\\\"$ctrl.onRemoveClick($ctrl.index)\\\"\\n        limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n        limited-feature-tabindex=\\\"-1\\\"\\n      >\\n        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n      </button>\\n    </div>\\n\\n    <ldap-settings-dn-builder\\n      label=\\\"Group Search Path (optional)\\\"\\n      suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n      ng-model=\\\"$ctrl.config.GroupBaseDN\\\"\\n      on-change=\\\"($ctrl.onChangeBaseDN)\\\"\\n      limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n    ></ldap-settings-dn-builder>\\n\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-4 col-md-2 control-label text-left\\\"> Group Base DN </label>\\n      <div class=\\\"col-sm-8 col-md-10\\\">\\n        {{ $ctrl.config.GroupBaseDN }}\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <div class=\\\"col-sm-12 vertical-center\\\" style=\\\"margin-bottom: 5px\\\">\\n        <label class=\\\"control-label text-left !pt-0\\\">Groups</label>\\n        <span class=\\\"label label-default interactive vertical-center\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"$ctrl.addGroup()\\\">\\n          <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n          add another group\\n        </span>\\n      </div>\\n      <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.groups.length\\\">\\n        <rd-widget>\\n          <rd-widget-body>\\n            <div class=\\\"form-group no-margin-last-child\\\" ng-repeat=\\\"entry in $ctrl.groups\\\">\\n              <div class=\\\"col-sm-4\\\">\\n                <select\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"entry.type\\\"\\n                  ng-change=\\\"$ctrl.onGroupsChange()\\\"\\n                  limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n                  limited-feature-tabindex=\\\"-1\\\"\\n                >\\n                  <option value=\\\"ou\\\">OU Name</option>\\n                  <option value=\\\"cn\\\">Folder Name</option>\\n                </select>\\n              </div>\\n              <div class=\\\"col-sm-5\\\">\\n                <input\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"entry.value\\\"\\n                  ng-change=\\\"$ctrl.onGroupsChange()\\\"\\n                  limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n                  limited-feature-tabindex=\\\"-1\\\"\\n                />\\n              </div>\\n              <div class=\\\"col-sm-3 text-right\\\">\\n                <button\\n                  class=\\\"btn btn-md btn-danger\\\"\\n                  type=\\\"button\\\"\\n                  ng-click=\\\"$ctrl.removeGroup($index)\\\"\\n                  limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n                  limited-feature-tabindex=\\\"-1\\\"\\n                >\\n                  <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                </button>\\n              </div>\\n            </div>\\n          </rd-widget-body>\\n        </rd-widget>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group no-margin-last-child\\\">\\n      <label class=\\\"col-sm-4 col-md-2 control-label text-left\\\"> Group Filter </label>\\n      <div class=\\\"col-sm-8 col-md-10\\\">\\n        {{ $ctrl.config.GroupFilter }}\\n      </div>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///79557\n");

}),

3057:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> Group search configurations </div>\\n\\n<div style=\\\"margin-top: 10px\\\" ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\">\\n  <ldap-group-search-item\\n    config=\\\"config\\\"\\n    domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n    index=\\\"$index\\\"\\n    base-filter=\\\"{{ $ctrl.baseFilter }}\\\"\\n    on-remove-click=\\\"($ctrl.onRemoveClick)\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n  ></ldap-group-search-item>\\n</div>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button\\n      class=\\\"label label-default interactive vertical-center\\\"\\n      style=\\\"border: 0\\\"\\n      ng-click=\\\"$ctrl.onAddClick()\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add group search configuration\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n    <button class=\\\"btn btm-sm btn-primary\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.search()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n      Display User/Group matching\\n    </button>\\n  </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n  <div class=\\\"form-group col-sm-12\\\">\\n    <ldap-groups-datatable dataset=\\\"$ctrl.groups\\\" title-text=\\\"Groups\\\" title-icon=\\\"users\\\" table-key=\\\"ldapGroups\\\"></ldap-groups-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///3057\n");

}),

30629:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'User Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n              <th>\\n                <table-column-header col-title=\\\"'Groups'\\\" can-sort=\\\"false\\\"></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                {{ item.Name }}\\n              </td>\\n              <td>\\n                <p ng-repeat=\\\"group in item.Groups\\\" style=\\\"margin: 0\\\">{{ group }}</p>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No groups found.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-groups-datatable/ldap-groups-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///30629\n");

}),

15933:

(function(module) {

eval("var _module_exports = \"<div>\\n  <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n  <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n    When using LDAP authentication, Portainer will delegate user authentication to a LDAP server and fallback to internal authentication if LDAP authentication fails.\\n  </div>\\n</div>\\n\\n<div class=\\\"col-sm-12 form-section-title\\\"> LDAP configuration </div>\\n\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12 small text-muted\\\">\\n    <p class=\\\"vertical-center\\\">\\n      <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n      You can configure multiple LDAP Servers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all use the\\n      same certificates).\\n    </p>\\n  </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left flex flex-wrap\\\">\\n    LDAP Server\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"label label-default interactive no-border vertical-center\\\"\\n      ng-click=\\\"$ctrl.addLDAPUrl()\\\"\\n      limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n      limited-feature-disabled\\n      limited-feature-class=\\\"limited-be\\\"\\n    >\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      Add additional server\\n    </button>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <div class=\\\"mb-3 flex\\\" ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_url\\\" ng-model=\\\"$ctrl.settings.URLs[$index]\\\" placeholder=\\\"例如 10.0.0.10:389 or myldap.domain.tld:389\\\" required />\\n      <button ng-if=\\\"$index > 0\\\" class=\\\"btn btn-sm btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\">\\n        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"anonymous_mode\\\" class=\\\"control-label text-left col-sm-3 col-lg-2\\\">\\n    Anonymous mode\\n    <portainer-tooltip message=\\\"'Enable this option if the server is configured for Anonymous access.'\\\"></portainer-tooltip>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <label class=\\\"switch\\\">\\n      <input type=\\\"checkbox\\\" id=\\\"anonymous_mode\\\" ng-model=\\\"$ctrl.settings.AnonymousMode\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n      <span class=\\\"slider round\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n<!-- !Anonymous mode-->\\n\\n<div ng-if=\\\"!$ctrl.settings.AnonymousMode\\\">\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Reader DN\\n      <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_username\\\" ng-model=\\\"$ctrl.settings.ReaderDN\\\" placeholder=\\\"cn=user,dc=domain,dc=tld\\\" />\\n    </div>\\n  </div>\\n\\n  <div class=\\\"form-group\\\">\\n    <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n      Password\\n      <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n    </label>\\n    <div class=\\\"col-sm-9 col-lg-10\\\">\\n      <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"ldap_password\\\" ng-model=\\\"$ctrl.settings.Password\\\" placeholder=\\\"password\\\" autocomplete=\\\"new-password\\\" />\\n    </div>\\n  </div>\\n</div>\\n\\n<ldap-connectivity-check\\n  ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n  settings=\\\"$ctrl.settings\\\"\\n  state=\\\"$ctrl.state\\\"\\n  connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n></ldap-connectivity-check>\\n\\n<ldap-settings-security\\n  settings=\\\"$ctrl.settings\\\"\\n  tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n  upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n  on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n></ldap-settings-security>\\n\\n<ldap-connectivity-check\\n  ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n  settings=\\\"$ctrl.settings\\\"\\n  state=\\\"$ctrl.state\\\"\\n  connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n></ldap-connectivity-check>\\n\\n<div class=\\\"space-y-10\\\">\\n  <ldap-custom-user-search\\n    class=\\\"block\\\"\\n    settings=\\\"$ctrl.settings.SearchSettings\\\"\\n    on-search-click=\\\"($ctrl.onSearchUsersClick)\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n  ></ldap-custom-user-search>\\n\\n  <ldap-custom-group-search\\n    class=\\\"block\\\"\\n    settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n    on-search-click=\\\"($ctrl.onSearchGroupsClick)\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n  ></ldap-custom-group-search>\\n\\n  <ldap-custom-admin-group\\n    class=\\\"block\\\"\\n    settings=\\\"$ctrl.settings\\\"\\n    on-search-click=\\\"($ctrl.onSearchAdminGroupsClick)\\\"\\n    selected-admin-groups=\\\"$ctrl.selectedAdminGroups\\\"\\n    default-admin-group-search-filter=\\\"'(objectClass=groupOfNames)'\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n    is-limited-feature-self-contained=\\\"true\\\"\\n  ></ldap-custom-admin-group>\\n\\n  <ldap-settings-test-login\\n    class=\\\"block\\\"\\n    settings=\\\"$ctrl.settings\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n    show-be-indicator-if-needed=\\\"true\\\"\\n    is-limited-feature-self-contained=\\\"true\\\"\\n  ></ldap-settings-test-login>\\n</div>\\n\\n<save-auth-settings-button\\n  on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n  save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n  save-button-disabled=\\\"!$ctrl.saveButtonDisabled()\\\"\\n  limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n></save-auth-settings-button>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///15933\n");

}),

34778:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group ldap-dn-builder\\\">\\n  <div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 5px\\\">\\n    <label class=\\\"control-label text-left\\\">{{ $ctrl.label || 'DN entries' }}</label>\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"label label-default interactive vertical-center\\\"\\n      style=\\\"margin-left: 10px; border: 0\\\"\\n      ng-click=\\\"$ctrl.addEntry()\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add another entry\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.entries.length\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <div class=\\\"form-group no-margin-last-child\\\" ng-repeat=\\\"entry in $ctrl.entries\\\">\\n          <div class=\\\"col-sm-4\\\">\\n            <select class=\\\"form-control\\\" ng-model=\\\"entry.type\\\" ng-change=\\\"$ctrl.onEntriesChange()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n              <option value=\\\"ou\\\">OU Name</option>\\n              <option value=\\\"cn\\\">Folder Name</option>\\n            </select>\\n          </div>\\n          <div class=\\\"col-sm-5\\\">\\n            <input\\n              class=\\\"form-control\\\"\\n              ng-model=\\\"entry.value\\\"\\n              ng-change=\\\"$ctrl.onEntriesChange()\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            />\\n          </div>\\n          <div class=\\\"col-sm-3 text-right\\\">\\n            <button\\n              class=\\\"btn btn-md btn-primary\\\"\\n              type=\\\"button\\\"\\n              ng-disabled=\\\"$first\\\"\\n              ng-click=\\\"$ctrl.moveUp($index)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            >\\n              <pr-icon icon=\\\"'arrow-up'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n            </button>\\n            <button\\n              class=\\\"btn btn-md btn-primary\\\"\\n              type=\\\"button\\\"\\n              ng-disabled=\\\"$last\\\"\\n              ng-click=\\\"$ctrl.moveDown($index)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            >\\n              <pr-icon icon=\\\"'arrow-down'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n            </button>\\n            <button\\n              class=\\\"btn btn-md btn-danger\\\"\\n              type=\\\"button\\\"\\n              ng-click=\\\"$ctrl.removeEntry($index)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n            </button>\\n          </div>\\n        </div>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///34778\n");

}),

88006:

(function(module) {

eval("var _module_exports = \"<div class=\\\"form-group\\\">\\n  <label for=\\\"group-name-input\\\" class=\\\"col-sm-4 control-label text-left\\\"> Group Name </label>\\n  <div class=\\\"col-sm-7\\\" style=\\\"padding-left: 0\\\">\\n    <input\\n      type=\\\"text\\\"\\n      class=\\\"form-control\\\"\\n      id=\\\"group-name-input\\\"\\n      ng-model=\\\"$ctrl.groupName\\\"\\n      ng-change=\\\"$ctrl.onGroupNameChange()\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    />\\n  </div>\\n  <div class=\\\"col-sm-1\\\">\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-danger btn-md vertical-center\\\"\\n      ng-if=\\\"$ctrl.onRemoveClick\\\"\\n      ng-click=\\\"$ctrl.onRemoveClick()\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n    </button>\\n  </div>\\n</div>\\n\\n<ldap-settings-dn-builder\\n  ng-model=\\\"$ctrl.entries\\\"\\n  label=\\\"Path to group\\\"\\n  suffix=\\\"{{ $ctrl.suffix }}\\\"\\n  on-change=\\\"($ctrl.onEntriesChange)\\\"\\n  on-remove-click=\\\"($ctrl.removeGroup)\\\"\\n  limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n></ldap-settings-dn-builder>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///88006\n");

}),

69939:

(function(module) {

eval("var _module_exports = \"<ng-form limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-class=\\\"limited-be\\\" class=\\\"ldap-settings-openldap\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'这个功能目前只限于商业版用户。 '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <div>\\n        <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n        <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n          当使用LDAP认证时，Portainer会将用户认证委托给LDAP服务器，并在LDAP认证失败时回退到内部认证。\\n        </div>\\n      </div>\\n\\n      <div class=\\\"col-sm-12 form-section-title\\\"> LDAP configuration </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <div class=\\\"col-sm-12 small text-muted\\\">\\n          <p class=\\\"vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" mode=\\\"'primary'\\\"></pr-icon>\\n            你可以配置多个LDAP服务器进行认证回退。确保所有的服务器都使用相同的配置（例如，如果启用了TLS，它们都应该使用\\n            相同的证书）。\\n          </p>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group\\\">\\n        <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"display: flex; flex-wrap: wrap\\\">\\n          LDAP Server\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"label label-default interactive vertical-center\\\"\\n            style=\\\"border: 0\\\"\\n            ng-click=\\\"$ctrl.addLDAPUrl()\\\"\\n            limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n            limited-feature-tabindex=\\\"-1\\\"\\n          >\\n            <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n            Add additional server\\n          </button>\\n        </label>\\n        <div class=\\\"col-sm-9 col-lg-10\\\">\\n          <div ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\" style=\\\"display: flex; margin-bottom: 10px\\\">\\n            <input\\n              type=\\\"text\\\"\\n              class=\\\"form-control\\\"\\n              id=\\\"ldap_url\\\"\\n              ng-model=\\\"$ctrl.settings.URLs[$index]\\\"\\n              placeholder=\\\"例如 10.0.0.10:389 or myldap.domain.tld:389\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            />\\n            <button\\n              ng-if=\\\"$index > 0\\\"\\n              class=\\\"btn btn-sm btn-danger\\\"\\n              type=\\\"button\\\"\\n              ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            >\\n              <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n            </button>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <!-- Anonymous mode-->\\n      <div class=\\\"form-group\\\">\\n        <div class=\\\"col-sm-12\\\">\\n          <label for=\\\"anonymous_mode\\\" class=\\\"control-label text-left col-sm-3 col-lg-2\\\">\\n            Anonymous mode\\n            <portainer-tooltip message=\\\"'Enable this option if the server is configured for Anonymous access.'\\\"></portainer-tooltip>\\n          </label>\\n\\n          <div class=\\\"col-sm-9 col-lg-10\\\">\\n            <label class=\\\"switch\\\">\\n              <input type=\\\"checkbox\\\" id=\\\"anonymous_mode\\\" ng-model=\\\"$ctrl.settings.AnonymousMode\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n              <span class=\\\"slider round\\\"></span>\\n            </label>\\n          </div>\\n        </div>\\n      </div>\\n      <!-- !Anonymous mode-->\\n\\n      <div ng-if=\\\"!$ctrl.settings.AnonymousMode\\\">\\n        <div class=\\\"form-group\\\">\\n          <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n            Reader DN\\n            <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n          </label>\\n          <div class=\\\"col-sm-9 col-lg-10\\\">\\n            <input\\n              type=\\\"text\\\"\\n              class=\\\"form-control\\\"\\n              id=\\\"ldap_username\\\"\\n              ng-model=\\\"$ctrl.settings.ReaderDN\\\"\\n              placeholder=\\\"cn=user,dc=domain,dc=tld\\\"\\n              ng-change=\\\"$ctrl.onAccountChange($ctrl.settings.ReaderDN)\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            />\\n          </div>\\n        </div>\\n\\n        <div class=\\\"form-group\\\">\\n          <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n            Password\\n            <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n          </label>\\n          <div class=\\\"col-sm-9\\\">\\n            <input\\n              type=\\\"password\\\"\\n              class=\\\"form-control\\\"\\n              id=\\\"ldap_password\\\"\\n              ng-model=\\\"$ctrl.settings.Password\\\"\\n              placeholder=\\\"password\\\"\\n              autocomplete=\\\"new-password\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n            />\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.AnonymousMode\\\">\\n        <label for=\\\"ldap_domain_root\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Domain root </label>\\n        <div class=\\\"col-sm-9\\\">\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"form-control\\\"\\n            id=\\\"ldap_domain_root\\\"\\n            ng-model=\\\"$ctrl.domainSuffix\\\"\\n            placeholder=\\\"dc=domain,dc=tld\\\"\\n            limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n            limited-feature-tabindex=\\\"-1\\\"\\n          />\\n        </div>\\n      </div>\\n\\n      <ldap-connectivity-check\\n        ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        state=\\\"$ctrl.state\\\"\\n        connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-connectivity-check>\\n\\n      <ldap-settings-security\\n        title=\\\"Connectivity Security\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n        upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n        on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-settings-security>\\n\\n      <ldap-connectivity-check\\n        ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n        settings=\\\"$ctrl.settings\\\"\\n        state=\\\"$ctrl.state\\\"\\n        connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-connectivity-check>\\n\\n      <ldap-user-search\\n        style=\\\"margin-top: 5px\\\"\\n        settings=\\\"$ctrl.settings.SearchSettings\\\"\\n        domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n        base-filter=\\\"(objectClass=inetOrgPerson)\\\"\\n        on-search-click=\\\"($ctrl.onSearchUsersClick)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-user-search>\\n\\n      <ldap-group-search\\n        style=\\\"margin-top: 5px\\\"\\n        settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n        domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n        base-filter=\\\"(objectClass=groupOfNames)\\\"\\n        on-search-click=\\\"($ctrl.onSearchGroupsClick)\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></ldap-group-search>\\n\\n      <ldap-settings-test-login settings=\\\"$ctrl.settings\\\" limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"></ldap-settings-test-login>\\n      <save-auth-settings-button\\n        on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n        save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n        save-button-disabled=\\\"!$ctrl.saveButtonDisabled()\\\"\\n        limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n      ></save-auth-settings-button>\\n    </div>\\n  </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///69939\n");

}),

39720:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\">\\n  {{ $ctrl.title || 'LDAP security' }}\\n</div>\\n\\n<!-- starttls -->\\n<div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.settings.TLSConfig.TLS\\\">\\n  <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n    Use StartTLS\\n    <portainer-tooltip message=\\\"'如果想使用StartTLS来保护与服务器的连接，请启用该选项。如果选择了使用TLS，则忽略。'\\\"></portainer-tooltip>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <label class=\\\"switch\\\">\\n      <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.StartTLS\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n      <span class=\\\"slider round\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n<!-- !starttls -->\\n\\n<!-- tls-checkbox -->\\n<div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.settings.StartTLS\\\">\\n  <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n    Use TLS\\n    <portainer-tooltip message=\\\"'如果你需要指定TLS证书来连接到LDAP服务器，请启用这个选项。'\\\"></portainer-tooltip>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <label class=\\\"switch\\\">\\n      <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.TLSConfig.TLS\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n      <span class=\\\"slider round\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n<!-- !tls-checkbox -->\\n\\n<!-- tls-skip-verify -->\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n    跳过服务器证书的验证\\n    <portainer-tooltip message=\\\"'跳过对服务器TLS证书的验证。不建议在不安全的网络上使用。'\\\"></portainer-tooltip>\\n  </label>\\n  <div class=\\\"col-sm-9 col-lg-10\\\">\\n    <label class=\\\"switch\\\">\\n      <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.TLSConfig.TLSSkipVerify\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n      <span class=\\\"slider round\\\"></span>\\n    </label>\\n  </div>\\n</div>\\n<!-- !tls-skip-verify -->\\n\\n<!-- ca-input -->\\n<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.TLSConfig.TLS || ($ctrl.settings.StartTLS && !$ctrl.settings.TLSConfig.TLSSkipVerify)\\\">\\n  <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS CA 证书</label>\\n  <div class=\\\"col-sm-9 col-lg-10 vertical-center\\\">\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-sm btn-primary\\\"\\n      ngf-select=\\\"$ctrl.onTlscaCertChange($file)\\\"\\n      ng-model=\\\"$ctrl.tlscaCert\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      选择文件\\n    </button>\\n    <span class=\\\"vertical-center\\\">\\n      {{ $ctrl.tlscaCert.name }}\\n      <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\" class=\\\"icon-success\\\" ng-if=\\\"$ctrl.tlscaCert && $ctrl.tlscaCert === $ctrl.settings.TLSConfig.TLSCACert\\\"></pr-icon>\\n      <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" class=\\\"icon-danger\\\" ng-if=\\\"!$ctrl.tlscaCert\\\"></pr-icon>\\n      <pr-icon icon=\\\"'fa fa-circle-notch fa-spin'\\\" ng-if=\\\"$ctrl.uploadInProgress\\\"></pr-icon>\\n    </span>\\n  </div>\\n</div>\\n<!-- !ca-input -->\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-security/ldap-settings-security.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///39720\n");

}),

25649:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" ng-style=\\\"$ctrl.isLimitedFeatureSelfContained && { 'padding-bottom': '15px' }\\\">\\n  Test login\\n  <be-feature-indicator\\n    ng-if=\\\"$ctrl.showBeIndicatorIfNeeded\\\"\\n    feature=\\\"$ctrl.limitedFeatureId\\\"\\n    class=\\\"space-left\\\"\\n    ng-if=\\\"$ctrl.isLimitedFeatureSelfContained\\\"\\n  ></be-feature-indicator>\\n</div>\\n<div class=\\\"form-inline\\\">\\n  <div class=\\\"form-group\\\" style=\\\"margin: 0\\\">\\n    <label for=\\\"ldap_test_username\\\" style=\\\"font-size: 0.9em; margin-right: 5px\\\"> Username </label>\\n    <input\\n      type=\\\"text\\\"\\n      class=\\\"form-control\\\"\\n      id=\\\"ldap_test_username\\\"\\n      ng-model=\\\"$ctrl.username\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n      ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    />\\n  </div>\\n\\n  <div class=\\\"form-group no-margin\\\">\\n    <label for=\\\"ldap_test_password\\\"> Password </label>\\n    <input\\n      type=\\\"password\\\"\\n      class=\\\"form-control\\\"\\n      id=\\\"ldap_test_password\\\"\\n      ng-model=\\\"$ctrl.password\\\"\\n      autocomplete=\\\"new-password\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n      ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    />\\n  </div>\\n\\n  <div class=\\\"form-group !ml-0\\\">\\n    <div class=\\\"vertical-center\\\">\\n      <button\\n        type=\\\"submit\\\"\\n        class=\\\"btn btn-primary\\\"\\n        ng-disabled=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.LOADING || !$ctrl.username || !$ctrl.password\\\"\\n        ng-click=\\\"$ctrl.testLogin($ctrl.username, $ctrl.password)\\\"\\n        limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n        limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n        limited-feature-tabindex=\\\"-1\\\"\\n      >\\n        <span ng-if=\\\"$ctrl.state.testStatus !== $ctrl.TEST_STATUS.LOADING\\\">Test</span>\\n        <span ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.LOADING\\\">Testing...</span>\\n      </button>\\n      <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\" class=\\\"icon-success\\\" ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.SUCCESS\\\"></pr-icon>\\n      <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" class=\\\"icon-danger\\\" ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE\\\"></pr-icon>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///25649\n");

}),

75634:

(function(module) {

eval("var _module_exports = \"<div>\\n  <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.AutoCreateUsers\\\">\\n    <field-description>\\n      With automatic user provisioning enabled, Portainer will create user(s) automatically with standard user role and assign them to team(s) which matches to LDAP group name(s).\\n      If disabled, users must be created in Portainer beforehand.\\n    </field-description>\\n  </auto-user-provision-toggle>\\n\\n  <div class=\\\"col-sm-12 form-section-title\\\"> Server Type </div>\\n\\n  <box-selector\\n    style=\\\"margin-bottom: 0\\\"\\n    radio-name=\\\"'ldap-server-type-selector'\\\"\\n    value=\\\"$ctrl.settings.ServerType\\\"\\n    options=\\\"$ctrl.boxSelectorOptions\\\"\\n    on-change=\\\"($ctrl.onChangeServerType)\\\"\\n  ></box-selector>\\n\\n  <ldap-settings-custom\\n    ng-if=\\\"$ctrl.settings.ServerType === $ctrl.SERVER_TYPES.CUSTOM\\\"\\n    settings=\\\"$ctrl.settings\\\"\\n    tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n    state=\\\"$ctrl.state\\\"\\n    on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n    connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n    on-search-users-click=\\\"($ctrl.searchUsers)\\\"\\n    on-search-groups-click=\\\"($ctrl.searchGroups)\\\"\\n    on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n    save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n    save-button-disabled=\\\"$ctrl.isLdapFormValid\\\"\\n  ></ldap-settings-custom>\\n  <ldap-settings-open-ldap\\n    ng-if=\\\"$ctrl.settings.ServerType === $ctrl.SERVER_TYPES.OPEN_LDAP\\\"\\n    settings=\\\"$ctrl.settings\\\"\\n    tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n    state=\\\"$ctrl.state\\\"\\n    on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n    connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n    on-search-users-click=\\\"($ctrl.searchUsers)\\\"\\n    on-search-groups-click=\\\"($ctrl.searchGroups)\\\"\\n    on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n    save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n    save-button-disabled=\\\"$ctrl.isLdapFormValid\\\"\\n  ></ldap-settings-open-ldap>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings/ldap-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///75634\n");

}),

25972:

(function(module) {

eval("var _module_exports = \"<rd-widget>\\n  <rd-widget-body>\\n    <div ng-if=\\\"$ctrl.index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n      <span class=\\\"text-muted small\\\"> Extra search configuration </span>\\n      <button\\n        ng-if=\\\"$ctrl.index > 0\\\"\\n        class=\\\"btn btn-sm btn-danger\\\"\\n        type=\\\"button\\\"\\n        ng-click=\\\"$ctrl.onRemoveClick($ctrl.index)\\\"\\n        limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n        limited-feature-tabindex=\\\"-1\\\"\\n      >\\n        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n      </button>\\n    </div>\\n\\n    <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.showUsernameFormat\\\">\\n      <div class=\\\"col-sm-4\\\" style=\\\"margin-bottom: 5px\\\">\\n        <label class=\\\"control-label text-left\\\">Username Format</label>\\n      </div>\\n      <div class=\\\"col-sm-8\\\">\\n        <div class=\\\"input-group\\\">\\n          <div class=\\\"input-group-btn\\\">\\n            <button\\n              class=\\\"btn btn-primary\\\"\\n              ng-model=\\\"$ctrl.config.UserNameAttribute\\\"\\n              uib-btn-radio=\\\"'sAMAccountName'\\\"\\n              style=\\\"margin-left: 0px\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n              >用户名</button\\n            >\\n            <button\\n              class=\\\"btn btn-primary\\\"\\n              ng-model=\\\"$ctrl.config.UserNameAttribute\\\"\\n              uib-btn-radio=\\\"'userPrincipalName'\\\"\\n              limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n              limited-feature-tabindex=\\\"-1\\\"\\n              >user@domainname</button\\n            >\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-4 control-label text-left\\\"> Root Domain </label>\\n      <div class=\\\"col-sm-8\\\">\\n        {{ $ctrl.config.BaseDN }}\\n      </div>\\n    </div>\\n\\n    <ldap-settings-dn-builder\\n      ng-model=\\\"$ctrl.config.BaseDN\\\"\\n      label=\\\"User Search Path (optional)\\\"\\n      suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n      on-change=\\\"($ctrl.onBaseDNChange)\\\"\\n      limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n    ></ldap-settings-dn-builder>\\n\\n    <div class=\\\"form-group no-margin-last-child\\\">\\n      <div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 5px\\\">\\n        <label class=\\\"control-label text-left\\\">Allowed Groups (optional)</label>\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"label label-default interactive vertical-center\\\"\\n          style=\\\"margin-left: 10px; border: 0\\\"\\n          ng-click=\\\"$ctrl.addGroup()\\\"\\n          limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n          limited-feature-tabindex=\\\"-1\\\"\\n        >\\n          <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n          add another group\\n        </button>\\n      </div>\\n      <div class=\\\"col-sm-12\\\">\\n        <div ng-repeat=\\\"group in $ctrl.groups track by $index\\\" style=\\\"margin-bottom: 10px\\\">\\n          <rd-widget>\\n            <rd-widget-body>\\n              <ldap-settings-group-dn-builder\\n                ng-model=\\\"group\\\"\\n                index=\\\"$index\\\"\\n                suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n                on-change=\\\"($ctrl.onGroupChange)\\\"\\n                on-remove-click=\\\"($ctrl.removeGroup)\\\"\\n                limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n              ></ldap-settings-group-dn-builder>\\n            </rd-widget-body>\\n          </rd-widget>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"form-group\\\">\\n      <label class=\\\"col-sm-4 control-label text-left\\\"> User Filter </label>\\n      <div class=\\\"col-sm-8\\\">\\n        {{ $ctrl.config.Filter }}\\n      </div>\\n    </div>\\n  </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///25972\n");

}),

36452:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> User search configurations </div>\\n\\n<div style=\\\"margin-top: 10px\\\" ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\">\\n  <ldap-user-search-item\\n    index=\\\"$index\\\"\\n    config=\\\"config\\\"\\n    domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n    show-username-format=\\\"$ctrl.showUsernameFormat\\\"\\n    base-filter=\\\"{{ $ctrl.baseFilter }}\\\"\\n    on-remove-click=\\\"($ctrl.onRemoveClick)\\\"\\n    limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n  ></ldap-user-search-item>\\n</div>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button\\n      class=\\\"label label-default interactive vertical-center\\\"\\n      style=\\\"border: 0\\\"\\n      ng-click=\\\"$ctrl.onAddClick()\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-tabindex=\\\"-1\\\"\\n    >\\n      <pr-icon icon=\\\"'plus-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n      add user search configuration\\n    </button>\\n  </div>\\n  <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n    <button class=\\\"btn btm-sm btn-primary\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.search()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n      Display Users\\n    </button>\\n  </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n  <div class=\\\"form-group col-sm-12\\\">\\n    <ldap-users-datatable dataset=\\\"$ctrl.users\\\" title-text=\\\"Users\\\" title-icon=\\\"users\\\" table-key=\\\"ldapUsers\\\" order-by=\\\"\\\" reverse-order=\\\"\\\"></ldap-users-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///36452\n");

}),

30235:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <pr-icon icon=\\\"$ctrl.titleIcon\\\" feather=\\\"true\\\"></pr-icon>\\n          {{ $ctrl.titleText }}\\n        </div>\\n        <div class=\\\"searchBar vertical-center\\\">\\n          <pr-icon icon=\\\"'search'\\\" feather=\\\"true\\\"></pr-icon>\\n          <input\\n            type=\\\"text\\\"\\n            class=\\\"searchInput\\\"\\n            ng-model=\\\"$ctrl.state.textFilter\\\"\\n            ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n            placeholder=\\\"搜索...\\\"\\n            auto-focus\\n            ng-model-options=\\\"{ debounce: 300 }\\\"\\n          />\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <table-column-header\\n                  col-title=\\\"'Name'\\\"\\n                  can-sort=\\\"true\\\"\\n                  is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n                  is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n                  ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n                ></table-column-header>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr\\n              dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n              ng-class=\\\"{ active: item.Checked }\\\"\\n            >\\n              <td>\\n                <a ui-sref=\\\"portainer.groups.group({id: item.Id})\\\">{{ item }}</a>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.dataset\\\">\\n              <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n              <td colspan=\\\"5\\\" class=\\\"text-center text-muted\\\">No users found.</td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n        <div class=\\\"paginationControls\\\">\\n          <form class=\\\"form-inline\\\">\\n            <span class=\\\"limitSelector\\\">\\n              <span style=\\\"margin-right: 5px\\\"> 每页项目数 </span>\\n              <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n                <option value=\\\"0\\\">All</option>\\n                <option value=\\\"10\\\">10</option>\\n                <option value=\\\"25\\\">25</option>\\n                <option value=\\\"50\\\">50</option>\\n                <option value=\\\"100\\\">100</option>\\n              </select>\\n            </span>\\n            <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n          </form>\\n        </div>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-users-datatable/ldap-users-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///30235\n");

}),

83133:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <button\\n      type=\\\"button\\\"\\n      ng-class=\\\"[$ctrl.className, 'btn btn-primary btn-sm']\\\"\\n      ng-click=\\\"$ctrl.onSaveSettings()\\\"\\n      ng-disabled=\\\"$ctrl.saveButtonDisabled || $ctrl.saveButtonState\\\"\\n      button-spinner=\\\"$ctrl.saveButtonState\\\"\\n      limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n      limited-feature-class=\\\"{{::$ctrl.limitedFeatureClass}}\\\"\\n    >\\n      <span ng-hide=\\\"$ctrl.saveButtonState\\\">保存设置</span>\\n      <span ng-show=\\\"$ctrl.saveButtonState\\\">保存中...</span>\\n    </button>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/save-auth-settings-button/save-auth-settings-button.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83133\n");

}),

83791:

(function(module) {

eval("var _module_exports = \"<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"key\\\" feather-icon=\\\"true\\\" title-text=\\\"SSL certificate\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.sslForm\\\">\\n          <span class=\\\"small\\\">\\n            <p class=\\\"text-muted vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-circle'\\\" feather=\\\"true\\\" class-name=\\\"'icon-warning =vertical-center'\\\"></pr-icon>\\n              只强制执行HTTP将导致Portainer停止监听HTTP端口。任何正在使用HTTP的边缘代理环境将不再可用。\\n            </p>\\n          </span>\\n          <div class=\\\"form-group\\\">\\n            <por-switch-field\\n              checked=\\\"$ctrl.formValues.forceHTTPS\\\"\\n              label=\\\"'Force HTTPS only'\\\"\\n              on-change=\\\"($ctrl.onChangeForceHTTPS)\\\"\\n              field-class=\\\"'col-sm-12'\\\"\\n              label-class=\\\"'col-sm-2'\\\"\\n            ></por-switch-field>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 control-label\\\"> 提供一个新的SSL证书，以取代用于HTTPS连接的现有证书。 </span>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12\\\"> 上传一个X.509证书，通常是一个crt、cer或pem文件。 </span>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formValues.certFile\\\" ngf-pattern=\\\"$ctrl.certFilePattern\\\" name=\\\"certFile\\\"> 选择文件 </button>\\n              <span style=\\\"margin-left: 5px\\\">\\n                {{ $ctrl.formValues.certFile.name }}\\n                <pr-icon icon=\\\"'x-circle'\\\" feather=\\\"true\\\" class-name=\\\"'icon-danger'\\\" ng-if=\\\"!$ctrl.formValues.certFile\\\"></pr-icon>\\n              </span>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group col-md-12\\\" ng-show=\\\"$ctrl.sslForm.certFile.$invalid\\\">\\n            <div class=\\\"small text-warning\\\">\\n              <div ng-messages=\\\"$ctrl.sslForm.certFile.$error\\\">\\n                <p ng-message=\\\"pattern\\\"> <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 文件类型无效。</p>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12\\\"> 上传一个私钥，通常是一个.key，或者一个.pem文件。 </span>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formValues.keyFile\\\" ngf-pattern=\\\"$ctrl.keyFilePattern\\\" name=\\\"keyFile\\\"> 选择文件 </button>\\n              <span style=\\\"margin-left: 5px\\\">\\n                {{ $ctrl.formValues.keyFile.name }}\\n                <pr-icon icon=\\\"'x-circle'\\\" feather=\\\"true\\\" class-name=\\\"'icon-danger'\\\" ng-if=\\\"!$ctrl.formValues.keyFile\\\"></pr-icon>\\n              </span>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group col-md-12\\\" ng-show=\\\"$ctrl.sslForm.keyFile.$invalid\\\">\\n            <div class=\\\"small text-warning\\\">\\n              <div ng-messages=\\\"$ctrl.sslForm.keyFile.$error\\\">\\n                <p ng-message=\\\"pattern\\\"> <i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 文件类型无效。</p>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"$ctrl.state.actionInProgress || !$ctrl.isFormChanged()\\\"\\n                ng-click=\\\"$ctrl.save()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n                analytics-on\\n                analytics-if=\\\"$ctrl.wasHTTPsChanged()\\\"\\n                analytics-category=\\\"portainer\\\"\\n                analytics-event=\\\"portainer-settings-edit\\\"\\n                analytics-properties=\\\"{ metadata: { forceHTTPS: $ctrl.formValues.forceHTTPS } }\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress || $ctrl.state.reloadingPage\\\">应该更改</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">保存中...</span>\\n                <span ng-show=\\\"$ctrl.state.reloadingPage\\\">重载页面中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/general/ssl-certificate/ssl-certificate.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83791\n");

}),

79765:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable datatable-empty\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"'svg-clockrewind'\\\"></pr-icon>\\n          </div>\\n\\n          Activity Logs\\n          <be-feature-indicator feature=\\\"$ctrl.feature\\\"></be-feature-indicator>\\n        </div>\\n        <div class=\\\"vertical-center\\\">\\n          <datatable-searchbar on-change=\\\"($ctrl.onChangeKeyword)\\\" value=\\\"$ctrl.keyword\\\"></datatable-searchbar>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover\\\">\\n          <thead>\\n            <tr>\\n              <th class=\\\"small-column\\\">\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'Time'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Timestamp'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Timestamp' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Timestamp')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n              <th class=\\\"small-column\\\">\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'User'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Username'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Username' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Username')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n              <th class=\\\"small-column\\\">\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'Environment'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Context'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Context' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Context')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header col-title=\\\"'Action'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header col-title=\\\"'Payload'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n                </div>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr dir-paginate-start=\\\"item in $ctrl.logs | itemsPerPage: $ctrl.limit\\\" total-items=\\\"$ctrl.totalItems\\\" current-page=\\\"$ctrl.currentPage\\\">\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n            </tr>\\n            <tr dir-paginate-end ng-show=\\\"item.Expanded\\\">\\n              <td colspan=\\\"5\\\">\\n                <json-tree object=\\\"item.payload\\\" root-name=\\\"containerInfo.Id\\\" start-expanded=\\\"true\\\"></json-tree>\\n              </td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.logs\\\">\\n              <td class=\\\"text-center text-muted\\\" colspan=\\\"5\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.logs.length === 0\\\">\\n              <td class=\\\"text-center text-muted\\\" colspan=\\\"8\\\"> No logs available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.logs\\\">\\n        <datatable-pagination limit=\\\"$ctrl.limit\\\" on-change-limit=\\\"($ctrl.handleChangeLimit)\\\" on-change-page=\\\"($ctrl.onChangePage)\\\"></datatable-pagination>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///79765\n");

}),

28459:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'User Activity'\\\" breadcrumbs=\\\"['Activity Logs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"be-indicator-container limited-be\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'This feature is currently limited to Business Edition users only. '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <div class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"dateRangeInput\\\" class=\\\"col-sm-2 control-label text-left\\\">Date Range</label>\\n              <div class=\\\"col-sm-6\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" disabled />\\n              </div>\\n            </div>\\n          </div>\\n          <p class=\\\"text-muted small vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" class-name=\\\"'icon icon-sm icon-primary'\\\"></pr-icon>\\n            Portainer user activity logs have a maximum retention of 7 days.\\n          </p>\\n          <div>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\" limited-feature-class=\\\"limited-be\\\" limited-feature-disabled>\\n              <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\" icon-class=\\\"'icon icon-sm'\\\"></pr-icon>\\n              Export as CSV\\n            </button>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\\n<div class=\\\"be-indicator-container limited-be\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'This feature is currently limited to Business Edition users only. '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <div class=\\\"row\\\">\\n        <activity-logs-datatable\\n          logs=\\\"$ctrl.state.logs\\\"\\n          keyword=\\\"$ctrl.state.keyword\\\"\\n          sort=\\\"$ctrl.state.sort\\\"\\n          limit=\\\"$ctrl.state.limit\\\"\\n          context-filter=\\\"$ctrl.state.contextFilter\\\"\\n          total-items=\\\"$ctrl.state.totalItems\\\"\\n          current-page=\\\"$ctrl.state.currentPage\\\"\\n          feature=\\\"{{:: $ctrl.limitedFeature}}\\\"\\n          on-change-keyword=\\\"($ctrl.onChangeKeyword)\\\"\\n          on-change-sort=\\\"($ctrl.onChangeSort)\\\"\\n          on-change-limit=\\\"($ctrl.onChangeLimit)\\\"\\n          on-change-page=\\\"($ctrl.onChangePage)\\\"\\n        ></activity-logs-datatable>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/activity-logs-view/activity-logs-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///28459\n");

}),

28572:

(function(module) {

eval("var _module_exports = \"<div class=\\\"datatable datatable-empty\\\">\\n  <rd-widget>\\n    <rd-widget-body classes=\\\"no-padding\\\">\\n      <div class=\\\"toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap\\\">\\n        <div class=\\\"toolBarTitle vertical-center\\\">\\n          <div class=\\\"widget-icon space-right\\\">\\n            <pr-icon icon=\\\"'svg-clockrewind'\\\"></pr-icon>\\n          </div>\\n\\n          Authentication Events\\n          <be-feature-indicator feature=\\\"$ctrl.feature\\\"></be-feature-indicator>\\n        </div>\\n        <div class=\\\"vertical-center\\\">\\n          <datatable-searchbar on-change=\\\"($ctrl.onChangeKeyword)\\\"></datatable-searchbar>\\n        </div>\\n      </div>\\n      <div class=\\\"table-responsive\\\">\\n        <table class=\\\"table table-hover nowrap-cells\\\">\\n          <thead>\\n            <tr>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'Time'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Timestamp'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Timestamp' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Timestamp')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'Origin'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Origin'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Origin' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Origin')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'Context'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Context'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Context' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Context')\\\"\\n                  >\\n                  </table-column-header>\\n                  <datatable-filter labels=\\\"$ctrl.contextFilterLabels\\\" filter-key=\\\"context\\\" state=\\\"$ctrl.contextFilter\\\" on-change=\\\"($ctrl.onChangeContextFilter)\\\">\\n                  </datatable-filter>\\n                </div>\\n              </th>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header\\n                    col-title=\\\"'User'\\\"\\n                    can-sort=\\\"true\\\"\\n                    is-sorted=\\\"$ctrl.sort.key === 'Username'\\\"\\n                    is-sorted-desc=\\\"$ctrl.sort.key === 'Username' && $ctrl.sort.desc\\\"\\n                    ng-click=\\\"$ctrl.changeSort('Username')\\\"\\n                  >\\n                  </table-column-header>\\n                </div>\\n              </th>\\n              <th>\\n                <div class=\\\"vertical-center\\\">\\n                  <table-column-header col-title=\\\"'Result'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n                  <datatable-filter labels=\\\"$ctrl.typeFilterLabels\\\" filter-key=\\\"type\\\" state=\\\"$ctrl.typeFilter\\\" on-change=\\\"($ctrl.onChangeTypeFilter)\\\"> </datatable-filter>\\n                </div>\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr dir-paginate=\\\"item in $ctrl.logs | itemsPerPage: $ctrl.limit\\\" total-items=\\\"$ctrl.totalItems\\\" current-page=\\\"$ctrl.currentPage\\\">\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n              <td></td>\\n            </tr>\\n            <tr ng-if=\\\"!$ctrl.logs\\\">\\n              <td class=\\\"text-center text-muted\\\" colspan=\\\"5\\\">加载中...</td>\\n            </tr>\\n            <tr ng-if=\\\"$ctrl.state.logs.length === 0\\\">\\n              <td class=\\\"text-center text-muted\\\" colspan=\\\"8\\\"> No logs available. </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <div class=\\\"footer\\\" ng-if=\\\"$ctrl.logs\\\">\\n        <datatable-pagination limit=\\\"$ctrl.limit\\\" on-change-limit=\\\"($ctrl.handleChangeLimit)\\\" on-change-page=\\\"($ctrl.onChangePage)\\\"></datatable-pagination>\\n      </div>\\n    </rd-widget-body>\\n  </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///28572\n");

}),

22261:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'用户活动'\\\" breadcrumbs=\\\"['User authentication activity']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"be-indicator-container limited-be\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'这个功能目前只限于商业版用户。 '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <div class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"dateRangeInput\\\" class=\\\"col-sm-2 control-label text-left\\\">日期范围</label>\\n              <div class=\\\"col-sm-6\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" disabled />\\n              </div>\\n            </div>\\n          </div>\\n          <p class=\\\"text-muted small vertical-center\\\">\\n            <pr-icon icon=\\\"'info'\\\" feather=\\\"true\\\" class-name=\\\"'icon icon-sm icon-primary'\\\"></pr-icon>\\n            Portainer用户认证活动日志的最大保留时间为7天。\\n          </p>\\n          <div>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\" limited-feature-class=\\\"limited-be\\\" limited-feature-disabled\\n              ><pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\" icon-class=\\\"'icon icon-sm'\\\"></pr-icon>导出为CSV\\n            </button>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\\n<div class=\\\"be-indicator-container limited-be\\\">\\n  <div class=\\\"overlay\\\">\\n    <div class=\\\"limited-be-link vertical-center\\\"\\n      ><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator\\n      ><portainer-tooltip message=\\\"'This feature is currently limited to Business Edition users only. '\\\"></portainer-tooltip\\n    ></div>\\n    <div class=\\\"limited-be-content\\\">\\n      <div class=\\\"row\\\">\\n        <auth-logs-datatable\\n          logs=\\\"$ctrl.state.logs\\\"\\n          keyword=\\\"$ctrl.state.keyword\\\"\\n          sort=\\\"$ctrl.state.sort\\\"\\n          limit=\\\"$ctrl.state.limit\\\"\\n          context-filter=\\\"$ctrl.state.contextFilter\\\"\\n          type-filter=\\\"$ctrl.state.typeFilter\\\"\\n          total-items=\\\"$ctrl.state.totalItems\\\"\\n          current-page=\\\"$ctrl.state.currentPage\\\"\\n          feature=\\\"{{:: $ctrl.limitedFeature}}\\\"\\n          on-change-context-filter=\\\"($ctrl.onChangeContextFilter)\\\"\\n          on-change-type-filter=\\\"($ctrl.onChangeTypeFilter)\\\"\\n          on-change-keyword=\\\"($ctrl.onChangeKeyword)\\\"\\n          on-change-sort=\\\"($ctrl.onChangeSort)\\\"\\n          on-change-limit=\\\"($ctrl.onChangeLimit)\\\"\\n          on-change-page=\\\"($ctrl.onChangePage)\\\"\\n        ></auth-logs-datatable>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/auth-logs-view/auth-logs-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///22261\n");

}),

27452:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'用户设置'\\\" breadcrumbs=\\\"['User settings']\\\"> </page-header>\\n\\n<demo-feature-indicator ng-if=\\\"isDemoUser\\\" content=\\\"'在Portainer的演示版本中，你不能改变该账户的密码。'\\\"> </demo-feature-indicator>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"lock\\\" feather-icon=\\\"true\\\" title-text=\\\"更改用户密码\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form name=\\\"form\\\" class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n          <!-- current-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"current_password\\\" class=\\\"col-sm-2 control-label text-left required\\\">当前密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.currentPassword\\\" id=\\\"current_password\\\" />\\n            </div>\\n          </div>\\n          <!-- !current-password-input -->\\n          <!-- new-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"new_password\\\" class=\\\"col-sm-2 control-label text-left required\\\">新密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.newPassword\\\" ng-minlength=\\\"requiredPasswordLength\\\" id=\\\"new_password\\\" name=\\\"new_password\\\" />\\n            </div>\\n          </div>\\n          <!-- !new-password-input -->\\n\\n          <!-- confirm-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"confirm_password\\\" class=\\\"col-sm-2 control-label text-left required\\\">确认密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <div class=\\\"input-group\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.confirmPassword\\\" id=\\\"confirm_password\\\" />\\n                <span class=\\\"input-group-addon\\\">\\n                  <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\" class=\\\"icon-success\\\" ng-if=\\\"formValues.newPassword === formValues.confirmPassword\\\"></pr-icon>\\n                  <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" class=\\\"icon-danger\\\" ng-if=\\\"!(formValues.newPassword === formValues.confirmPassword)\\\"></pr-icon>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n            <div class=\\\"col-sm-8\\\">\\n              <password-check-hint password-valid=\\\"form.new_password.$valid && formValues.newPassword\\\" force-change-password=\\\"forceChangePassword\\\"></password-check-hint>\\n            </div>\\n          </div>\\n          <!-- !confirm-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"submit\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"isDemoUser || (AuthenticationMethod !== 1 && !isInitialAdmin) || !formValues.currentPassword || !formValues.newPassword || form.$invalid || formValues.newPassword !== formValues.confirmPassword\\\"\\n                ng-click=\\\"updatePassword()\\\"\\n              >\\n                更新密码\\n              </button>\\n              <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"skipPasswordChange()\\\" ng-if=\\\"forceChangePassword && timesPasswordChangeSkipped < 2\\\">\\n                稍后提醒我\\n              </button>\\n              <span class=\\\"text-muted small vertical-center\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"AuthenticationMethod === 2 && !isInitialAdmin\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                使用LDAP身份验证时不能更改密码。\\n              </span>\\n              <span class=\\\"text-muted small vertical-center\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"AuthenticationMethod === 3 && !isInitialAdmin\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                使用OAuth身份验证时不能更改密码。\\n              </span>\\n            </div>\\n          </div>\\n          <div ng-if=\\\"userRole === 1\\\">\\n            <p class=\\\"text-muted vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'icon-primary'\\\" feather=\\\"true\\\"></pr-icon>\\n              <a ui-sref=\\\"portainer.settings.authentication\\\">此处</a>设置了最小密码长度。\\n            </p>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n    <access-tokens-datatable\\n      title-text=\\\"Access tokens\\\"\\n      title-icon=\\\"key\\\"\\n      dataset=\\\"tokens\\\"\\n      table-key=\\\"tokens\\\"\\n      order-by=\\\"Description\\\"\\n      remove-action=\\\"removeAction\\\"\\n      ui-can-exit=\\\"uiCanExit\\\"\\n    ></access-tokens-datatable>\\n    <theme-settings></theme-settings>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/account/account.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///27452\n");

}),

48675:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create access token'\\\" breadcrumbs=\\\"[{label:'User settings', link:'portainer.account'}, 'Add access token']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <!-- mount react feature/view -->\\n    <create-access-token user-id=\\\"$ctrl.state.userId\\\" on-submit=\\\"($ctrl.onSubmit)\\\" on-success=\\\"($ctrl.onSuccess)\\\" on-error=\\\"($ctrl.onError)\\\"></create-access-token>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/account/create-user-access-token/create-user-access-token.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48675\n");

}),

6167:

(function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n  <!-- login box -->\\n  <div class=\\\"container simple-box\\\">\\n    <div class=\\\"col-sm-4 col-sm-offset-4\\\">\\n      <!-- login box logo -->\\n      <div class=\\\"row\\\">\\n        <img ng-if=\\\"!ctrl.logo\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/logo_alt.svg */ 325) + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n        <img ng-if=\\\"ctrl.logo\\\" ng-src=\\\"{{ ctrl.logo }}\\\" class=\\\"simple-box-logo\\\" />\\n      </div>\\n      <!-- !login box logo -->\\n\\n      <div class=\\\"row text-center p-5\\\">\\n        <p class=\\\"text-xl\\\">登录到您的账户</p>\\n        <p class=\\\"text-md text-muted fw-bold\\\">欢迎回来! 请输入你的详细资料</p>\\n      </div>\\n\\n      <!-- login panel -->\\n      <div class=\\\"panel panel-default\\\" ng-if=\\\"!ctrl.state.loginInProgress\\\">\\n        <div class=\\\"panel-body\\\">\\n          <!-- login form -->\\n          <form class=\\\"simple-box-form form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\" style=\\\"display: flex; justify-content: center\\\" ng-if=\\\"ctrl.state.showOAuthLogin\\\">\\n                <a ng-href=\\\"{{ ctrl.OAuthLoginURI }}\\\">\\n                  <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Microsoft'\\\">\\n                    <i class=\\\"fab fa-microsoft\\\" aria-hidden=\\\"true\\\"></i> 用微软登录\\n                  </div>\\n                  <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Google'\\\">\\n                    <i class=\\\"fab fa-google\\\" aria-hidden=\\\"true\\\"></i> 用谷歌登录\\n                  </div>\\n                  <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Github'\\\">\\n                    <i class=\\\"fab fa-github\\\" aria-hidden=\\\"true\\\"></i> 用Github登录\\n                  </div>\\n                  <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'OAuth'\\\">\\n                    <i class=\\\"fa fa-sign-in-alt\\\" aria-hidden=\\\"true\\\"></i> 用OAuth登录\\n                  </div>\\n                </a>\\n              </div>\\n            </div>\\n\\n            <!-- divider -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.showOAuthLogin\\\">\\n              <div class=\\\"col-sm-12\\\" style=\\\"display: flex; align-items: center; justify-content: center\\\">\\n                <div class=\\\"striketext small text-muted\\\" style=\\\"display: flex; align-items: center; justify-content: center; width: 90%\\\">or</div>\\n              </div>\\n            </div>\\n\\n            <!-- use internal auth button -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.showOAuthLogin && !ctrl.state.showStandardLogin\\\">\\n              <div class=\\\"col-sm-12\\\" style=\\\"display: flex; justify-content: center\\\">\\n                <div class=\\\"btn btn-primary btn-md btn-block\\\" style=\\\"margin-left: 2px\\\" ng-click=\\\"ctrl.toggleStandardLogin()\\\"> 使用内部验证 </div>\\n              </div>\\n            </div>\\n\\n            <!-- !username input -->\\n            <div ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n              <div class=\\\"pb-2\\\">用户名</div>\\n              <input\\n                id=\\\"username\\\"\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                name=\\\"username\\\"\\n                ng-model=\\\"ctrl.formValues.Username\\\"\\n                auto-focus\\n                data-cy=\\\"auth-usernameInput\\\"\\n                placeholder=\\\"输入你的用户名\\\"\\n              />\\n            </div>\\n\\n            <!-- password input -->\\n            <div ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n              <div class=\\\"pb-2\\\">密码</div>\\n              <div class=\\\"relative\\\">\\n                <input\\n                  id=\\\"password\\\"\\n                  ng-attr-type=\\\"{{ ctrl.state.passwordInputType }}\\\"\\n                  class=\\\"form-control pr-10\\\"\\n                  name=\\\"password\\\"\\n                  ng-model=\\\"ctrl.formValues.Password\\\"\\n                  autocomplete=\\\"off\\\"\\n                  data-cy=\\\"auth-passwordInput\\\"\\n                  placeholder=\\\"输入你的密码\\\"\\n                  ng-trim=\\\"false\\\"\\n                />\\n                <button\\n                  data-cy=\\\"auth-passwordInputToggle\\\"\\n                  type=\\\"button\\\"\\n                  ng-click=\\\"ctrl.toggleShowPassword()\\\"\\n                  class=\\\"absolute top-0 right-0 h-[34px] w-[50px] border-none flex justify-center items-center bg-transparent\\\"\\n                  tooltip-append-to-body=\\\"true\\\"\\n                  tooltip-placement=\\\"top\\\"\\n                  tooltip-class=\\\"portainer-tooltip\\\"\\n                  uib-tooltip=\\\"{{ ctrl.state.passwordInputType === 'password' ? '显示密码' : '隐藏密码' }}\\\"\\n                >\\n                  <pr-icon icon=\\\"ctrl.state.passwordInputType === 'password' ? 'eye-off' : 'eye'\\\" feather=\\\"true\\\" size=\\\"'md'\\\"></pr-icon>\\n                </button>\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group overflow-auto\\\" ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n              <!-- login button -->\\n              <div class=\\\"col-sm-12 d-flex py-1\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-lg btn-block\\\"\\n                  ng-click=\\\"ctrl.authenticateUser()\\\"\\n                  button-spinner=\\\"ctrl.state.loginInProgress\\\"\\n                  ng-disabled=\\\"ctrl.state.loginInProgress\\\"\\n                  data-cy=\\\"auth-loginButton\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.loginInProgress\\\">登陆</span>\\n                  <span ng-show=\\\"ctrl.state.loginInProgress\\\">登录进行中...</span>\\n                </button>\\n              </div>\\n            </div>\\n          </form>\\n          <!-- !login form -->\\n\\n          <!-- error message -->\\n          <div class=\\\"pull-right\\\" ng-if=\\\"ctrl.state.AuthenticationError\\\">\\n            <i class=\\\"fa fa-exclamation-triangle red-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n            <span class=\\\"small text-danger\\\">{{ ctrl.state.AuthenticationError }}</span>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <!-- !login panel -->\\n      <div class=\\\"panel panel-default\\\" ng-show=\\\"ctrl.state.loginInProgress\\\">\\n        <div class=\\\"panel-body\\\">\\n          <div class=\\\"form-group text-center\\\">\\n            <span class=\\\"small text-muted\\\">认证正在进行中... <span button-spinner=\\\"true\\\"></span></span>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- !login box -->\\n</div>\\n\";;\nvar path = 'app/portainer/views/auth/auth.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///6167\n");

}),

53068:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建自定义模板'\\\" breadcrumbs=\\\"[{label:'Custom Templates', link:'docker.templates.custom'}, '创建自定义模板']\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"customTemplateForm\\\">\\n          <custom-template-common-fields\\n            form-values=\\\"$ctrl.formValues\\\"\\n            show-platform-field=\\\"true\\\"\\n            show-type-field=\\\"true\\\"\\n            name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n          ></custom-template-common-fields>\\n\\n          <!-- build-method -->\\n          <div ng-if=\\\"!$ctrl.state.fromStack\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 构建方法 </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <div class=\\\"boxselector_wrapper\\\">\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"$ctrl.state.Method\\\" value=\\\"editor\\\" ng-change=\\\"$ctrl.onChangeMethod()\\\" />\\n                    <label for=\\\"method_editor\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                        Web editor\\n                      </div>\\n                      <p>使用我们的网页编辑器</p>\\n                    </label>\\n                  </div>\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"method_upload\\\" ng-model=\\\"$ctrl.state.Method\\\" value=\\\"upload\\\" ng-change=\\\"$ctrl.onChangeMethod()\\\" />\\n                    <label for=\\\"method_upload\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon> 上传 </div>\\n                      <p>从你的电脑上传</p>\\n                    </label>\\n                  </div>\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"method_repository\\\" ng-model=\\\"$ctrl.state.Method\\\" value=\\\"repository\\\" ng-change=\\\"$ctrl.onChangeMethod()\\\" />\\n                    <label for=\\\"method_repository\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'git-pull-request'\\\" feather=\\\"true\\\"></pr-icon>\\n                        Repository\\n                      </div>\\n                      <p>使用git仓库</p>\\n                    </label>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !build-method -->\\n          <!-- web-editor -->\\n          <web-editor-form\\n            ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n            identifier=\\\"custom-template-creation-editor\\\"\\n            value=\\\"$ctrl.formValues.FileContent\\\"\\n            on-change=\\\"($ctrl.editorUpdate)\\\"\\n            ng-required=\\\"true\\\"\\n            yml=\\\"true\\\"\\n            placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n          >\\n            <editor-description>\\n              <span class=\\\"col-sm-12 text-muted\\\">\\n                你可以在\\n                <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> 官方文档</a>\\n                中获得更多有关 Compose 文件格式的信息。\\n              </span>\\n            </editor-description>\\n          </web-editor-form>\\n          <!-- !web-editor -->\\n          <!-- upload -->\\n          <div ng-show=\\\"$ctrl.state.Method === 'upload'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\"> 你可以从你的电脑上传一个 Compose 文件。 </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formValues.File\\\"> 选择文件 </button>\\n                <span class=\\\"space-left\\\">\\n                  {{ $ctrl.formValues.File.name }}\\n                  <span ng-if=\\\"$ctrl.formValues.File\\\">\\n                    <pr-icon icon=\\\"'x'\\\" feather=\\\"true\\\" mode=\\\"'danger'\\\"></pr-icon>\\n                  </span>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !upload -->\\n          <!-- repository -->\\n          <git-form ng-if=\\\"$ctrl.state.Method === 'repository'\\\" model=\\\"$ctrl.formValues\\\" on-change=\\\"($ctrl.handleChange)\\\"></git-form>\\n\\n          <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.isTemplateValid\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"small text-warning\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"space-right\\\"></pr-icon>\\n                模板是无效的。\\n              </div>\\n            </div>\\n          </div>\\n\\n          <custom-templates-variables-definition-field\\n            ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n            value=\\\"$ctrl.formValues.Variables\\\"\\n            on-change=\\\"($ctrl.onVariablesChange)\\\"\\n            is-variables-names-from-parent=\\\"$ctrl.state.Method === 'editor'\\\"\\n          ></custom-templates-variables-definition-field>\\n\\n          <!-- !repository -->\\n          <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"$ctrl.state.actionInProgress || customTemplateForm.$invalid\\n              || ($ctrl.state.Method === 'editor' && !$ctrl.formValues.FileContent)\\n              || ($ctrl.state.Method === 'upload' && !$ctrl.formValues.File)\\n              || ($ctrl.state.Method === 'repository' && ((!$ctrl.formValues.RepositoryURL || !$ctrl.formValues.ComposeFilePathInRepository) || ($ctrl.formValues.RepositoryAuthentication && (!$ctrl.formValues.RepositoryUsername || !$ctrl.formValues.RepositoryPassword))))\\n              || !$ctrl.formValues.Title\\n              || !$ctrl.state.isTemplateValid\\\"\\n                ng-click=\\\"$ctrl.createCustomTemplate()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">创建自定义模板</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">正在创建中...</span>\\n              </button>\\n              <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n                {{ $ctrl.state.formValidationError }}\\n              </span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///53068\n");

}),

4662:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'自定义模板'\\\" breadcrumbs=\\\"['Custom Templates']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <stack-from-template-form\\n    ng-if=\\\"$ctrl.state.selectedTemplate\\\"\\n    template=\\\"$ctrl.state.selectedTemplate\\\"\\n    form-values=\\\"$ctrl.formValues\\\"\\n    name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n    state=\\\"$ctrl.state\\\"\\n    create-template=\\\"$ctrl.createStack\\\"\\n    unselect-template=\\\"$ctrl.unselectTemplate\\\"\\n  >\\n    <advanced-form>\\n      <custom-templates-variables-field\\n        ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n        definitions=\\\"$ctrl.state.selectedTemplate.Variables\\\"\\n        value=\\\"$ctrl.formValues.variables\\\"\\n        on-change=\\\"($ctrl.onChangeTemplateVariables)\\\"\\n      ></custom-templates-variables-field>\\n\\n      <div class=\\\"form-group\\\">\\n        <div class=\\\"col-sm-12\\\">\\n          <a class=\\\"small interactive vertical-center\\\" ng-show=\\\"!$ctrl.state.showAdvancedOptions\\\" ng-click=\\\"$ctrl.state.showAdvancedOptions = true;\\\">\\n            <pr-icon icon=\\\"'plus'\\\" class-name=\\\"space-right\\\" feather=\\\"true\\\"></pr-icon> 自定义堆栈\\n          </a>\\n          <a class=\\\"small interactive vertical-center\\\" ng-show=\\\"$ctrl.state.showAdvancedOptions\\\" ng-click=\\\"$ctrl.state.showAdvancedOptions = false;\\\">\\n            <pr-icon icon=\\\"'minus'\\\" class-name=\\\"space-right\\\" feather=\\\"true\\\"></pr-icon> 隐藏自定义堆栈\\n          </a>\\n        </div>\\n      </div>\\n      <!-- web-editor -->\\n      <web-editor-form\\n        ng-if=\\\"$ctrl.state.showAdvancedOptions\\\"\\n        identifier=\\\"custom-template-creation-editor\\\"\\n        value=\\\"$ctrl.formValues.fileContent\\\"\\n        on-change=\\\"($ctrl.editorUpdate)\\\"\\n        ng-required=\\\"true\\\"\\n        yml=\\\"true\\\"\\n        placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n      >\\n        <editor-description>\\n          <span class=\\\"col-sm-12 text-muted\\\">\\n            你可以在\\n            <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> 官方文档 </a>\\n            中获得更多有关 Compose 文件格式的信息。\\n          </span>\\n        </editor-description>\\n      </web-editor-form>\\n      <!-- !web-editor -->\\n    </advanced-form>\\n  </stack-from-template-form>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <custom-templates-list\\n      ng-if=\\\"$ctrl.templates\\\"\\n      title-text=\\\"Templates\\\"\\n      title-icon=\\\"edit\\\"\\n      templates=\\\"$ctrl.templates\\\"\\n      table-key=\\\"customTemplates\\\"\\n      create-path=\\\"docker.templates.custom.new\\\"\\n      edit-path=\\\"docker.templates.custom.edit\\\"\\n      is-edit-allowed=\\\"$ctrl.isEditAllowed\\\"\\n      on-select-click=\\\"($ctrl.selectTemplate)\\\"\\n      on-delete-click=\\\"($ctrl.confirmDelete)\\\"\\n    ></custom-templates-list>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/custom-templates-view/customTemplatesView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///4662\n");

}),

63928:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'编辑自定义模板'\\\" breadcrumbs=\\\"[{label:'Custom templates', link:'docker.templates.custom'}, $ctrl.formValues.Title]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.formValues\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"customTemplateForm\\\">\\n          <custom-template-common-fields form-values=\\\"$ctrl.formValues\\\" show-platform-field=\\\"true\\\" show-type-field=\\\"true\\\"></custom-template-common-fields>\\n\\n          <!-- web-editor -->\\n          <web-editor-form\\n            identifier=\\\"custom-template-creation-editor\\\"\\n            value=\\\"$ctrl.formValues.FileContent\\\"\\n            on-change=\\\"($ctrl.editorUpdate)\\\"\\n            ng-required=\\\"true\\\"\\n            yml=\\\"true\\\"\\n            placeholder=\\\"# 将你的docker compose文件的内容粘贴在这里。\\\"\\n          >\\n            <editor-description>\\n              <span class=\\\"col-sm-12 text-muted\\\">\\n                你可以在\\n                <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> 官方文档 </a>\\n                中获得更多有关 Compose 文件格式的信息。\\n              </span>\\n            </editor-description>\\n          </web-editor-form>\\n          <!-- !web-editor -->\\n\\n          <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.isTemplateValid\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"small text-warning\\\">\\n                <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"space-right\\\"></pr-icon>\\n                模板是无效的。\\n              </div>\\n            </div>\\n          </div>\\n\\n          <custom-templates-variables-definition-field\\n            ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n            value=\\\"$ctrl.formValues.Variables\\\"\\n            on-change=\\\"($ctrl.onVariablesChange)\\\"\\n            is-variables-names-from-parent=\\\"true\\\"\\n          ></custom-templates-variables-definition-field>\\n\\n          <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\" resource-control=\\\"$ctrl.formValues.ResourceControl\\\"></por-access-control-form>\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n                ng-disabled=\\\"$ctrl.actionInProgress || customTemplateForm.$invalid\\n                  || !$ctrl.formValues.Title\\n                  || !$ctrl.formValues.FileContent\\n                  || !$ctrl.state.isTemplateValid\\n                  \\\"\\n                ng-click=\\\"$ctrl.submitAction()\\\"\\n                button-spinner=\\\"$ctrl.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.actionInProgress\\\">更新模板</span>\\n                <span ng-show=\\\"$ctrl.actionInProgress\\\">正在更新中...</span>\\n              </button>\\n              <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n                {{ $ctrl.state.formValidationError }}\\n              </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///63928\n");

}),

62833:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'FDO Device Configuration'\\\" breadcrumbs=\\\"[{label:'Environments', link:'portainer.endpoints'}, 'Import FDO Device']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-magic\\\" title-text=\\\"Import Device Set up\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"fdoForm\\\">\\n          <!-- info -->\\n          <span class=\\\"small\\\">\\n            <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n              <i class=\\\"fa fa-exclamation-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n              You are setting up a Portainer Edge Agent that will initiate the communications with the Portainer instance and your FDO Devices.\\n            </p>\\n          </span>\\n          <!-- !info -->\\n          <!-- import voucher -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Import Voucher </div>\\n          <div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"!state.vouchersUploaded\\\">\\n              <span class=\\\"small col-sm-12\\\">\\n                <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                  <i class=\\\"fa fa-exclamation-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                  Import one or more Manufacturer's Ownership Vouchers to initiate device attestation\\n                </p>\\n              </span>\\n              <div class=\\\"col-sm-8\\\">\\n                <button\\n                  style=\\\"margin-left: 0px !important\\\"\\n                  class=\\\"btn btn-sm btn-primary\\\"\\n                  ngf-select=\\\"onVoucherFilesChange()\\\"\\n                  ng-model=\\\"formValues.VoucherFiles\\\"\\n                  name=\\\"VoucherFiles\\\"\\n                  ng-disabled=\\\"state.vouchersUploading\\\"\\n                  button-spinner=\\\"state.vouchersUploading\\\"\\n                  multiple\\n                >\\n                  <span ng-hide=\\\"state.vouchersUploading\\\">Upload <i class=\\\"fa fa-upload\\\" aria-hidden=\\\"true\\\" style=\\\"margin-left: 5px\\\"></i></span>\\n                  <span ng-show=\\\"state.vouchersUploading\\\">Uploading Voucher...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"state.vouchersUploading\\\">\\n              <div class=\\\"col-sm-12 small text-success\\\">\\n                <p>Connecting to the Owner service...</p>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"state.vouchersUploaded\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <p>Ownership Voucher Uploaded <i class=\\\"fa fa-check green-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-left: 5px\\\"></i></p>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !import voucher -->\\n          <!-- device details -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Device details </div>\\n          <div>\\n            <span class=\\\"small\\\">\\n              <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                <i class=\\\"fa fa-exclamation-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                Device name will serve as your reference name in Portainer\\n              </p>\\n            </span>\\n            <!-- device name input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"device_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Device Name</label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  name=\\\"device_name\\\"\\n                  placeholder=\\\"例如 FDO-Test01\\\"\\n                  ng-model=\\\"formValues.DeviceName\\\"\\n                  ng-required=\\\"state.vouchersUploaded\\\"\\n                  ng-disabled=\\\"!state.vouchersUploaded\\\"\\n                  auto-focus\\n                  data-cy=\\\"deviceImport-deviceNameInput\\\"\\n                />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.device_name.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"fdoForm.device_name.$error\\\">\\n                  <p ng-message=\\\"required\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 本栏为必填项。</p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !device name input -->\\n            <!-- suffix input -->\\n            <span class=\\\"small\\\">\\n              <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                <i class=\\\"fa fa-exclamation-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                Suffix starting number will be appended to the end of the Device name, if initiating multiple devices this will be incrementally increased\\n              </p>\\n            </span>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"suffix\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Suffix starting number </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  name=\\\"suffix\\\"\\n                  ng-model=\\\"formValues.Suffix\\\"\\n                  ng-required=\\\"state.vouchersUploaded\\\"\\n                  ng-disabled=\\\"!state.vouchersUploaded\\\"\\n                  ng-pattern=\\\"/^[0-9]+$/\\\"\\n                  placeholder=\\\"1\\\"\\n                  required\\n                  data-cy=\\\"deviceImport-suffixInput\\\"\\n                />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.suffix.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"fdoForm.suffix.$error\\\">\\n                  <p ng-message=\\\"required\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 本栏为必填项。</p>\\n                  <p ng-message=\\\"pattern\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> This field needs to be a positive integer number.</p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !suffix input -->\\n            <!-- portainer-instance-input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n                Portainer server URL\\n                <portainer-tooltip message=\\\"'URL of the Portainer instance that the agent will use to initiate the communications.'\\\"></portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  name=\\\"endpoint_url\\\"\\n                  ng-model=\\\"formValues.PortainerURL\\\"\\n                  ng-required=\\\"state.vouchersUploaded\\\"\\n                  ng-disabled=\\\"!state.vouchersUploaded\\\"\\n                  placeholder=\\\"例如 https://10.0.0.10:9443\\\"\\n                  required\\n                  data-cy=\\\"deviceImport-portainerServerUrlInput\\\"\\n                />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.endpoint_url.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"fdoForm.endpoint_url.$error\\\">\\n                  <p ng-message=\\\"required\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i> 本栏为必填项。</p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !portainer-instance-input -->\\n          </div>\\n          <!-- device profile input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"device_profile\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Device Profile</label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <select id=\\\"device_profile\\\" ng-model=\\\"formValues.DeviceProfile\\\" class=\\\"form-control\\\" ng-required=\\\"state.vouchersUploaded\\\" ng-disabled=\\\"!state.vouchersUploaded\\\">\\n                <option selected disabled hidden value=\\\"\\\">Select a profile for your device</option>\\n                <option ng-repeat=\\\"profile in profiles | orderBy: 'name'\\\" ng-value=\\\"profile.id\\\">{{ profile.name }}</option>\\n              </select>\\n            </div>\\n          </div>\\n          <!-- !device profile input -->\\n          <!-- !device details -->\\n          <!-- tags -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Set up Tags </div>\\n          <div>\\n            <span class=\\\"small\\\">\\n              <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n                <i class=\\\"fa fa-exclamation-circle blue-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                This is just an option if your device is under a certain group\\n              </p>\\n            </span>\\n            <!-- group -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"device_group\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Group </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <select\\n                  class=\\\"form-control\\\"\\n                  ng-options=\\\"group.Id as group.Name for group in groups\\\"\\n                  ng-model=\\\"formValues.GroupId\\\"\\n                  id=\\\"device_group\\\"\\n                  ng-required=\\\"state.vouchersUploaded\\\"\\n                  ng-disabled=\\\"!state.vouchersUploaded\\\"\\n                  data-cy=\\\"deviceImport-deviceGroup\\\"\\n                ></select>\\n              </div>\\n            </div>\\n            <!-- !group -->\\n\\n            <tag-selector ng-if=\\\"formValues\\\" value=\\\"formValues.TagIds\\\" allow-create=\\\"state.allowCreateTag\\\" on-change=\\\"(onChangeTags)\\\"> </tag-selector>\\n\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-click=\\\"createEndpointAndConfigureDevice()\\\"\\n                  ng-disabled=\\\"state.actionInProgress || !state.vouchersUploaded || !fdoForm.$valid\\\"\\n                  button-spinner=\\\"state.actionInProgress\\\"\\n                  data-cy=\\\"deviceImport-saveDeviceButton\\\"\\n                >\\n                  <span ng-hide=\\\"state.actionInProgress\\\">Save Configuration</span>\\n                  <span ng-show=\\\"state.actionInProgress\\\">保存中...</span>\\n                </button>\\n                <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.endpoints\\\">Cancel</a>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/import/importDevice.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///62833\n");

}),

64306:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Create profile'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"createProfileForm\\\">\\n          <!-- name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\">Device Profile Details </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-11\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" id=\\\"profile_name\\\" name=\\\"profile_name\\\" placeholder=\\\"例如 myprofile\\\" auto-focus />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- build-method -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Profile configuration </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"boxselector_wrapper\\\">\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"state.method\\\" value=\\\"editor\\\" />\\n                  <label for=\\\"method_editor\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Web editor\\n                    </div>\\n                    <p>使用我们的网页编辑器</p>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !build-method -->\\n\\n          <web-editor-form\\n            ng-if=\\\"state.method === 'editor'\\\"\\n            identifier=\\\"profile-creation-editor\\\"\\n            value=\\\"formValues.profileFileContent\\\"\\n            on-change=\\\"(onChangeFileContent)\\\"\\n            ng-required=\\\"true\\\"\\n            placeholder=\\\"#\\\"\\n          >\\n          </web-editor-form>\\n\\n          <!-- actions -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.settings.edgeCompute\\\">Cancel</a>\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress\\n              || !createProfileForm.$valid\\n              || !formValues.profileFileContent\\n              || !formValues.name\\\"\\n                ng-click=\\\"createProfileAsync()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">保存配置</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">保存中...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/profiles/add/addProfile.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///64306\n");

}),

71149:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'编辑资料'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"editProfileForm\\\">\\n          <!-- name-input -->\\n          <div class=\\\"col-sm-12 form-section-title\\\">设备档案详情 </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-11\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" id=\\\"profile_name\\\" name=\\\"profile_name\\\" placeholder=\\\"例如 myprofile\\\" auto-focus />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- build-method -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 档案配置 </div>\\n          <div class=\\\"form-group\\\"></div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"boxselector_wrapper\\\">\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"state.method\\\" value=\\\"editor\\\" />\\n                  <label for=\\\"method_editor\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                      Web editor\\n                    </div>\\n                    <p>使用我们的网页编辑器</p>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !build-method -->\\n\\n          <web-editor-form\\n            ng-if=\\\"state.method === 'editor'\\\"\\n            identifier=\\\"profile-creation-editor\\\"\\n            value=\\\"formValues.profileFileContent\\\"\\n            on-change=\\\"(onChangeFileContent)\\\"\\n            ng-required=\\\"true\\\"\\n            placeholder=\\\"#\\\"\\n          >\\n          </web-editor-form>\\n\\n          <!-- actions -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.settings.edgeCompute\\\">取消</a>\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress\\n              || !editProfileForm.$valid\\n              || !formValues.profileFileContent\\n              || !formValues.name\\\"\\n                ng-click=\\\"updateProfileAsync()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">Update Profile</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">保存中...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/profiles/edit/editProfile.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///71149\n");

}),

56058:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Environment registries'\\\" breadcrumbs=\\\"['Registry management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <registries-datatable\\n      title-text=\\\"Registries\\\"\\n      title-icon=\\\"radio\\\"\\n      dataset=\\\"$ctrl.registries\\\"\\n      table-key=\\\"endpointRegistries\\\"\\n      order-by=\\\"Name\\\"\\n      endpoint-type=\\\"$ctrl.endpointType\\\"\\n      can-manage-access=\\\"$ctrl.canManageAccess\\\"\\n      can-browse=\\\"$ctrl.canBrowse\\\"\\n    ></registries-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoint-registries/registries.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///56058\n");

}),

11813:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'环境访问'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Environments', link:'portainer.endpoints' },\\n    {\\n      label:ctrl.endpoint.Name,\\n      link: 'portainer.endpoints.endpoint',\\n      linkParams:{id: ctrl.endpoint.Id}\\n    }, 'Access management']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"ctrl.endpoint\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"hard-drive\\\" feather-icon=\\\"true\\\" title-text=\\\"环境\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>名称</td>\\n              <td>\\n                {{ ctrl.endpoint.Name }}\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>URL</td>\\n              <td>\\n                {{ ctrl.endpoint.URL | stripprotocol }}\\n              </td>\\n            </tr>\\n            <tr>\\n              <td>Group</td>\\n              <td>\\n                <a ui-sref=\\\"portainer.groups.group({ id: ctrl.group.Id })\\\">{{ ctrl.group.Name }}</a>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<por-access-management\\n  ng-if=\\\"ctrl.endpoint && ctrl.group\\\"\\n  access-controlled-entity=\\\"ctrl.endpoint\\\"\\n  action-in-progress=\\\"ctrl.state.actionInProgress\\\"\\n  entity-type=\\\"endpoint\\\"\\n  inherit-from=\\\"ctrl.group\\\"\\n  update-access=\\\"ctrl.updateAccess\\\"\\n  limited-feature=\\\"ctrl.limitedFeature\\\"\\n>\\n</por-access-management>\\n\";;\nvar path = 'app/portainer/views/endpoints/access/endpointAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///11813\n");

}),

32072:

(function(module) {

eval("var _module_exports = \"<page-header ng-if=\\\"endpoint\\\" title=\\\"'环境细节'\\\" breadcrumbs=\\\"[{label:'Environments', link:'portainer.endpoints'}, endpoint.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div ng-if=\\\"state.edgeEndpoint\\\">\\n    <information-panel ng-if=\\\"state.edgeAssociated\\\" title-text=\\\"Edge information\\\">\\n      <span class=\\\"small text-muted\\\">\\n        <p class=\\\"vertical-center\\\">\\n          <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n          这个边缘环境与一个边缘环境相关联 {{ state.kubernetesEndpoint ? '(Kubernetes)' : '(Docker)' }}.\\n        </p>\\n        <p>\\n          Edge key: <code>{{ endpoint.EdgeKey }}</code>\\n        </p>\\n        <p>\\n          Edge identifier: <code>{{ endpoint.EdgeID }}</code>\\n        </p>\\n        <p>\\n          <button\\n            type=\\\"button\\\"\\n            class=\\\"btn btn-primary btn-sm\\\"\\n            ng-disabled=\\\"state.actionInProgress\\\"\\n            ng-click=\\\"onDisassociateEndpoint()\\\"\\n            button-spinner=\\\"state.actionInProgress\\\"\\n            analytics-on\\n            analytics-event=\\\"edge-endpoint-disassociate\\\"\\n            analytics-category=\\\"edge\\\"\\n          >\\n            <span ng-hide=\\\"state.actionInProgress\\\">解除关联</span>\\n          </button>\\n        </p>\\n      </span>\\n    </information-panel>\\n\\n    <div class=\\\"col-sm-12\\\" ng-if=\\\"!state.edgeAssociated\\\">\\n      <rd-widget>\\n        <rd-widget-body>\\n          <div class=\\\"col-sm-12 form-section-title\\\">部署代理</div>\\n          <span class=\\\"small text-muted\\\">\\n            <p class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n              参考下面的平台相关命令，在你的远程集群中部署Edge代理。\\n            </p>\\n            <p>\\n              The agent will communicate with Portainer via <u>{{ edgeKeyDetails.instanceURL }}</u> and <u>tcp://{{ edgeKeyDetails.tunnelServerAddr }}</u>\\n            </p>\\n          </span>\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Edge 代理部署脚本 </div>\\n          <edge-script-form\\n            edge-info=\\\"{ key: endpoint.EdgeKey, id: endpoint.EdgeID }\\\"\\n            commands=\\\"state.edgeScriptCommands\\\"\\n            is-nomad-token-visible=\\\"state.showNomad\\\"\\n            hide-async-mode=\\\"!endpoint.IsEdgeDevice\\\"\\n          ></edge-script-form>\\n\\n          <span class=\\\"small text-muted\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 25px\\\"> 加入 token </div>\\n            <p class=\\\"vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n              对于那些预存边缘代理，使用下面的连接标记将边缘代理与这个环境联系起来。\\n            </p>\\n            <p> 你可以点击 <a href=\\\"https://downloads.portainer.io/edge_agent_guide.pdf\\\">这里</a> 的用户指南中阅读更多关于预分期的信息。</p>\\n            <div style=\\\"margin-top: 10px; overflow-wrap: break-word\\\">\\n              <code>\\n                {{ endpoint.EdgeKey }}\\n              </code>\\n              <div class=\\\"mt-2\\\">\\n                <span class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"copyEdgeAgentKey()\\\">\\n                  <pr-icon icon=\\\"'copy'\\\" feather=\\\"true\\\"></pr-icon>\\n                  复制 token\\n                </span>\\n                <span id=\\\"copyNotificationEdgeKey\\\" class=\\\"vertical-center\\\" style=\\\"margin-left: 7px; display: none; color: #23ae89\\\">\\n                  <pr-icon icon=\\\"'check'\\\" feather=\\\"true\\\"></pr-icon>\\n                  复制的\\n                </span>\\n              </div>\\n            </div>\\n          </span>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n\\n  <information-panel ng-if=\\\"state.kubernetesEndpoint && (!state.edgeEndpoint || state.edgeAssociated)\\\" title-text=\\\"Kubernetes features configuration\\\">\\n    <span class=\\\"small text-muted vertical-center\\\">\\n      <pr-icon icon=\\\"'tool'\\\" mode=\\\"'primary'\\\" feather=\\\"true\\\"></pr-icon>\\n      你应该在\\n      <a ui-sref=\\\"kubernetes.cluster.setup({endpointId: endpoint.Id})\\\">Kubernetes 配置</a> 中配置这个Kubernetes环境中的可用功能。\\n    </span>\\n  </information-panel>\\n</div>\\n\\n<div class=\\\"row mt-4\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Configuration </div>\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"container_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"container_name\\\" ng-model=\\\"endpoint.Name\\\" placeholder=\\\"例如 kubernetes-cluster01 / docker-prod01\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- endpoint-url-input -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"!state.edgeEndpoint\\\">\\n            <label for=\\\"endpoint_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n              <span ng-if=\\\"!state.agentEndpoint\\\">环境URL</span>\\n              <span ng-if=\\\"state.agentEndpoint\\\">环境地址</span>\\n              <portainer-tooltip\\n                ng-if=\\\"!state.agentEndpoint\\\"\\n                message=\\\"'Docker主机的URL或IP地址。Docker API必须通过一个TCP端口暴露。请参考Docker文档来配置它。'\\\"\\n              >\\n              </portainer-tooltip>\\n              <portainer-tooltip ng-if=\\\"state.agentEndpoint\\\" message=\\\"'Portainer代理的地址，格式为 <HOST>:<PORT> 或 <IP>:<PORT>'\\\"> </portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input\\n                ng-disabled=\\\"endpointType === 'local' || state.azureEndpoint\\\"\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                id=\\\"endpoint_url\\\"\\n                ng-model=\\\"endpoint.URL\\\"\\n                placeholder=\\\"例如 10.0.0.10:2375 or mydocker.mydomain.com:2375\\\"\\n              />\\n            </div>\\n          </div>\\n          <!-- !endpoint-url-input -->\\n          <!-- endpoint-public-url-input -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"!state.azureEndpoint\\\">\\n            <label for=\\\"endpoint_public_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n              Public IP\\n              <portainer-tooltip message=\\\"'暴露的容器可以到达的URL或IP地址。这个字段是可选的，将默认为环境URL。'\\\">\\n              </portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"endpoint_public_url\\\" ng-model=\\\"endpoint.PublicURL\\\" placeholder=\\\"例如 10.0.0.10 or mydocker.mydomain.com\\\" />\\n            </div>\\n          </div>\\n\\n          <div ng-if=\\\"endpoint && state.edgeEndpoint\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 签到时间间隔 </div>\\n            <edge-checkin-interval-field value=\\\"endpoint.EdgeCheckinInterval\\\" on-change=\\\"(onChangeCheckInInterval)\\\"></edge-checkin-interval-field>\\n          </div>\\n\\n          <!-- !endpoint-public-url-input -->\\n          <azure-endpoint-config\\n            ng-if=\\\"state.azureEndpoint\\\"\\n            application-id=\\\"endpoint.AzureCredentials.ApplicationID\\\"\\n            tenant-id=\\\"endpoint.AzureCredentials.TenantID\\\"\\n            authentication-key=\\\"endpoint.AzureCredentials.AuthenticationKey\\\"\\n          ></azure-endpoint-config>\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 元数据 </div>\\n          <!-- group -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"endpoint_group\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 群组 </label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <select ng-options=\\\"group.Id as group.Name for group in groups\\\" ng-model=\\\"endpoint.GroupId\\\" id=\\\"endpoint_group\\\" class=\\\"form-control\\\"></select>\\n            </div>\\n          </div>\\n          <!-- !group -->\\n\\n          <tag-selector ng-if=\\\"endpoint\\\" value=\\\"endpoint.TagIds\\\" allow-create=\\\"state.allowCreate\\\" on-change=\\\"(onChangeTags)\\\"></tag-selector>\\n\\n          <!-- endpoint-security -->\\n          <div ng-if=\\\"endpointType === 'remote' && !state.azureEndpoint && !state.kubernetesEndpoint && !state.edgeEndpoint && endpoint.Type !== 6\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 安全 </div>\\n            <por-endpoint-security form-data=\\\"formValues.SecurityFormData\\\" endpoint=\\\"endpoint\\\"></por-endpoint-security>\\n          </div>\\n          <!-- !endpoint-security -->\\n          <!-- open-amt info -->\\n          <div ng-if=\\\"state.showAMTInfo\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 开放式主动管理技术 </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_managementinfoVersion\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> AMT版本 </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input type=\\\"text\\\" ng-disabled=\\\"true\\\" class=\\\"form-control\\\" id=\\\"endpoint_managementinfoVersion\\\" ng-model=\\\"endpoint.ManagementInfo['AMT']\\\" placeholder=\\\"加载中...\\\" />\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_managementinfoUUID\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> UUID </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input type=\\\"text\\\" ng-disabled=\\\"true\\\" class=\\\"form-control\\\" id=\\\"endpoint_managementinfoUUID\\\" ng-model=\\\"endpoint.ManagementInfo['UUID']\\\" placeholder=\\\"加载中...\\\" />\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_managementinfoBuildNumber\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Build Number </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  ng-disabled=\\\"true\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"endpoint_managementinfoBuildNumber\\\"\\n                  ng-model=\\\"endpoint.ManagementInfo['Build Number']\\\"\\n                  placeholder=\\\"加载中...\\\"\\n                />\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_managementinfoControlMode\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 控制模式 </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  ng-disabled=\\\"true\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"endpoint_managementinfoControlMode\\\"\\n                  ng-model=\\\"endpoint.ManagementInfo['Control Mode']\\\"\\n                  placeholder=\\\"加载中...\\\"\\n                />\\n              </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"endpoint_managementinfoDNSSuffix\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> DNS后缀 </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  ng-disabled=\\\"true\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"endpoint_managementinfoDNSSuffix\\\"\\n                  ng-model=\\\"endpoint.ManagementInfo['DNS Suffix']\\\"\\n                  placeholder=\\\"加载中...\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !open-amt info -->\\n          <!-- gpus info -->\\n          <div class=\\\"col-sm-12 form-section-title\\\">硬件加速</div>\\n          <gpus-list ng-if=\\\"endpoint && endpoint.Gpus\\\" value=\\\"endpoint.Gpus\\\" on-change=\\\"(onGpusChange)\\\"></gpus-list>\\n          <!-- gpus info -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !endpoint.Name || !endpoint.URL || (endpoint.TLS && ((endpoint.TLSVerify && !formValues.TLSCACert) || (endpoint.TLSClientCert && (!formValues.TLSCert || !formValues.TLSKey))))\\\"\\n                ng-click=\\\"updateEndpoint()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">更新环境</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">正在更新环境...</span>\\n              </button>\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.endpoints\\\">取消</a>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoints/edit/endpoint.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///32072\n");

}),

77697:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'环境'\\\" breadcrumbs=\\\"['Environment management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<view-loading ng-if=\\\"$ctrl.state.loadingMessage\\\" message=\\\"$ctrl.state.loadingMessage\\\"></view-loading>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!$ctrl.state.loadingMessage\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <endpoints-datatable\\n      title-text=\\\"环境\\\"\\n      title-icon=\\\"hard-drive\\\"\\n      table-key=\\\"$ctrl.endpoints\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"$ctrl.removeAction\\\"\\n      retrieve-page=\\\"$ctrl.getPaginatedEndpoints\\\"\\n      set-loading-message=\\\"$ctr.setLoadingMessage\\\"\\n    ></endpoints-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoints/endpoints.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///77697\n");

}),

54658:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'KVM Control'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Environments', link:'portainer.endpoints' },\\n    { \\n      label:$state.endpoint.Name,\\n      link: 'portainer.endpoints.endpoint', \\n      linkParams:{id: $state.endpoint.Id}\\n    }, \\n    $state.deviceName,\\n    'KVM Control']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <div class=\\\"datatable\\\" ng-class=\\\"{ 'kvm-maximized': $state.maximized }\\\">\\n      <rd-widget>\\n        <rd-widget-body classes=\\\"no-padding\\\">\\n          <div class=\\\"toolBar\\\">\\n            <div class=\\\"toolBarTitle\\\">KVM Control</div>\\n            <i class=\\\"interactive fa fa-times fa-lg pull-right\\\" aria-hidden=\\\"true\\\" ui-sref=\\\"edge.devices\\\"></i>\\n            <i ng-click=\\\"maximize()\\\" title=\\\"Maximize\\\" class=\\\"interactive fa fa-window-maximize fa-lg pull-right\\\" style=\\\"margin-right: 10px\\\" aria-hidden=\\\"true\\\"></i>\\n            <i ng-click=\\\"minimize()\\\" title=\\\"Minimize\\\" class=\\\"interactive fa fa-window-minimize fa-lg pull-right\\\" style=\\\"margin-right: 10px\\\" aria-hidden=\\\"true\\\"></i>\\n          </div>\\n          <div class=\\\"actionBar\\\">\\n            <kvm-control device-id=\\\"$state.deviceId\\\" server=\\\"$state.mpsServer\\\" token=\\\"$state.mpsToken\\\"> </kvm-control>\\n          </div>\\n        </rd-widget-body>\\n      </rd-widget>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoints/kvm/endpointKVM.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///54658\n");

}),

83178:

(function(module) {

eval("var _module_exports = \"<page-header\\n  title=\\\"'环境组访问'\\\"\\n  breadcrumbs=\\\"[\\n    { label:'Groups', link:'portainer.groups' },\\n    { \\n      label:group.Name,\\n      link: 'portainer.groups.group', \\n      linkParams:{id: group.Id}\\n    }, 'Access management']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"fa-object-group\\\" title-text=\\\"Group\\\"></rd-widget-header>\\n      <rd-widget-body classes=\\\"no-padding\\\">\\n        <table class=\\\"table\\\">\\n          <tbody>\\n            <tr>\\n              <td>名称</td>\\n              <td>\\n                {{ group.Name }}\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<por-access-management\\n  ng-if=\\\"group\\\"\\n  access-controlled-entity=\\\"group\\\"\\n  entity-type=\\\"group\\\"\\n  action-in-progress=\\\"state.actionInProgress\\\"\\n  update-access=\\\"updateAccess\\\"\\n  limited-feature=\\\"limitedFeature\\\"\\n></por-access-management>\\n\";;\nvar path = 'app/portainer/views/groups/access/groupAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83178\n");

}),

48508:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建环境组'\\\" breadcrumbs=\\\"[{label:'Environment groups', link:'portainer.groups'}, 'Add group']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <group-form\\n          loaded=\\\"loaded\\\"\\n          page-type=\\\"create\\\"\\n          model=\\\"model\\\"\\n          available-endpoints=\\\"availableEndpoints\\\"\\n          associated-endpoints=\\\"associatedEndpoints\\\"\\n          add-label-action=\\\"addLabel\\\"\\n          remove-label-action=\\\"removeLabel\\\"\\n          form-action=\\\"create\\\"\\n          form-action-label=\\\"Create the group\\\"\\n          action-in-progress=\\\"state.actionInProgress\\\"\\n        ></group-form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/create/creategroup.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///48508\n");

}),

55150:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'环境组细节'\\\" breadcrumbs=\\\"[{label:'Groups', link:'portainer.groups'}, group.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <group-form\\n          loaded=\\\"loaded\\\"\\n          page-type=\\\"edit\\\"\\n          model=\\\"group\\\"\\n          available-endpoints=\\\"availableEndpoints\\\"\\n          associated-endpoints=\\\"associatedEndpoints\\\"\\n          add-label-action=\\\"addLabel\\\"\\n          remove-label-action=\\\"removeLabel\\\"\\n          form-action=\\\"update\\\"\\n          form-action-label=\\\"Update the group\\\"\\n          action-in-progress=\\\"state.actionInProgress\\\"\\n        ></group-form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/edit/group.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///55150\n");

}),

9391:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'环境团体'\\\" breadcrumbs=\\\"['Environment group management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <groups-datatable\\n      title-text=\\\"环境团体\\\"\\n      title-icon=\\\"svg-objectgroup\\\"\\n      dataset=\\\"groups\\\"\\n      table-key=\\\"groups\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"removeAction\\\"\\n    ></groups-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/groups.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///9391\n");

}),

45564:

(function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n  <!-- simple box -->\\n  <div class=\\\"container simple-box\\\">\\n    <div class=\\\"col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1\\\">\\n      <!-- simple box logo -->\\n      <div class=\\\"row\\\">\\n        <img ng-if=\\\"logo\\\" ng-src=\\\"{{ logo }}\\\" class=\\\"simple-box-logo\\\" />\\n        <img ng-if=\\\"!logo\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/logo_alt.svg */ 325) + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n      </div>\\n      <!-- !simple box logo -->\\n      <!-- init password panel -->\\n      <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-body\\\">\\n          <!-- toggle -->\\n          <div>\\n            <a ng-click=\\\"togglePanel()\\\" class=\\\"vertical-center\\\">\\n              <span>\\n                <pr-icon icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" ng-if=\\\"state.showInitPassword\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n                <pr-icon icon=\\\"'chevron-right'\\\" feather=\\\"true\\\" ng-if=\\\"!state.showInitPassword\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n              </span>\\n              <span class=\\\"form-section-title\\\">新的Portiner安装</span>\\n            </a>\\n          </div>\\n          <!-- !toggle -->\\n\\n          <!-- init password form -->\\n          <form name=\\\"form\\\" class=\\\"simple-box-form form-horizontal padding-top\\\" ng-if=\\\"state.showInitPassword\\\">\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\"> 请创建初始管理员用户。 </span>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <!-- username-input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"username\\\" class=\\\"col-sm-4 control-label text-left\\\"> 用户名 </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"username\\\" ng-model=\\\"formValues.Username\\\" placeholder=\\\"例如 admin\\\" />\\n              </div>\\n            </div>\\n            <!-- !username-input -->\\n            <!-- new-password-input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"password\\\" class=\\\"col-sm-4 control-label text-left\\\">密码</label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Password\\\" id=\\\"password\\\" name=\\\"password\\\" ng-minlength=\\\"requiredPasswordLength\\\" auto-focus />\\n              </div>\\n            </div>\\n            <!-- !new-password-input -->\\n            <!-- confirm-password-input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"confirm_password\\\" class=\\\"col-sm-4 control-label text-left\\\">确认密码</label>\\n              <div class=\\\"col-sm-8\\\">\\n                <div class=\\\"input-group\\\">\\n                  <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.ConfirmPassword\\\" id=\\\"confirm_password\\\" />\\n                  <span class=\\\"input-group-addon\\\"\\n                    ><i\\n                      ng-class=\\\"\\n                        { true: 'fa fa-check green-icon', false: 'fa fa-times red-icon' }[\\n                          form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword\\n                        ]\\n                      \\\"\\n                      aria-hidden=\\\"true\\\"\\n                    ></i\\n                  ></span>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !confirm-password-input -->\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 text-warning\\\">\\n                <p class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" mode=\\\"'warning'\\\"></pr-icon>\\n                  <span>密码必须至少是 {{ requiredPasswordLength }} 个字符的长度。</span>\\n                  <pr-icon class=\\\"fa green-icon\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" ng-if=\\\"form.password.$valid && formValues.Password\\\"></pr-icon>\\n                </p>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"state.actionInProgress || form.$invalid || !formValues.Password || !formValues.ConfirmPassword ||  form.password.$viewValue !== formValues.ConfirmPassword\\\"\\n                  ng-click=\\\"createAdminUser()\\\"\\n                  button-spinner=\\\"state.actionInProgress\\\"\\n                >\\n                  <span ng-hide=\\\"state.actionInProgress\\\">创建用户</span>\\n                  <span ng-show=\\\"state.actionInProgress\\\">创建用户中...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n            <!-- enableTelemetry-->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 vertical-center\\\">\\n                <input type=\\\"checkbox\\\" name=\\\"toggle_enableTelemetry\\\" ng-model=\\\"formValues.enableTelemetry\\\" />\\n                <span class=\\\"text-muted small\\\"\\n                  >允许收集匿名的统计数据。你可以在我们的\\n                  <a class=\\\"hyperlink\\\" href=\\\"https://www.portainer.io/documentation/in-app-analytics-and-privacy-policy/\\\" target=\\\"_blank\\\">隐私政策</a>中找到更多关于这方面的信息。</span\\n                >\\n              </div>\\n            </div>\\n            <!-- !enableTelemetry-->\\n          </form>\\n          <!-- !init password form -->\\n        </div>\\n      </div>\\n      <!-- !init password panel -->\\n\\n      <!-- restore backup panel -->\\n      <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-body\\\">\\n          <!-- toggle -->\\n          <div>\\n            <a ng-click=\\\"togglePanel()\\\" data-cy=\\\"init-installPortainerFromBackup\\\" class=\\\"vertical-center\\\">\\n              <span\\n                ><pr-icon icon=\\\"'chevron-down'\\\" feather=\\\"true\\\" ng-if=\\\"state.showRestorePortainer\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n                <pr-icon icon=\\\"'chevron-right'\\\" feather=\\\"true\\\" ng-if=\\\"!state.showRestorePortainer\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon\\n              ></span>\\n              <span class=\\\"form-section-title\\\">从备份中恢复Portainer</span>\\n            </a>\\n          </div>\\n          <!-- !toggle -->\\n\\n          <!-- restore form -->\\n          <form class=\\\"simple-box-form form-horizontal padding-top\\\" ng-if=\\\"state.showRestorePortainer\\\">\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-9\\\">\\n                <span class=\\\"small text-muted\\\">\\n                  这将恢复Portainer元数据，其中包含关于环境、堆栈和应用程序以及配置的用户的信息。\\n                </span>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <div class=\\\"boxselector_wrapper\\\">\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"restore_file\\\" checked=\\\"checked\\\" />\\n                    <label for=\\\"restore_file\\\" data-cy=\\\"init-selectLocalFile\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon>\\n                        上传备份文件\\n                      </div>\\n                      <p></p>\\n                    </label>\\n                  </div>\\n                  <div>\\n                    <input type=\\\"radio\\\" id=\\\"restore_s3\\\" disabled />\\n                    <label for=\\\"restore_s3\\\" class=\\\"boxselector_disabled\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <pr-icon icon=\\\"'download'\\\" feather=\\\"true\\\"></pr-icon>\\n                        从S3中获取\\n                      </div>\\n                      <p\\n                        >此功能只在\\n                        <a class=\\\"hyperlink\\\" href=\\\"https://www.portainer.io/business-upsell?from=restore-s3-form\\\" target=\\\"_blank\\\"> Portainer 企业版中可用</a></p\\n                      >\\n                    </label>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\"> 你可以从你的电脑上传一个备份文件。 </span>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <!-- select-file-input -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12 vertical-center\\\">\\n                <button\\n                  class=\\\"btn btn-sm btn-primary\\\"\\n                  ngf-select\\n                  accept=\\\".gz,.encrypted\\\"\\n                  ngf-accept=\\\"'application/x-tar,application/x-gzip'\\\"\\n                  ng-model=\\\"formValues.BackupFile\\\"\\n                  auto-focus\\n                  data-cy=\\\"init-selectBackupFileButton\\\"\\n                  >选择文件</button\\n                >\\n                <span class=\\\"space-left vertical-center\\\">\\n                  {{ formValues.BackupFile.name }}\\n                  <pr-icon icon=\\\"'x-circle'\\\" class-name=\\\"'icon-danger'\\\" feather=\\\"true\\\" ng-if=\\\"!formValues.BackupFile\\\"></pr-icon>\\n                </span>\\n              </div>\\n            </div>\\n            <!-- !select-file-input -->\\n            <!-- password-input -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"password\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n                密码\\n                <portainer-tooltip\\n                  message=\\\"'如果备份有密码保护，请提供密码，以便提取备份文件，否则该字段可以留空。'\\\"\\n                ></portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-sm-4\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Password\\\" id=\\\"password\\\" data-cy=\\\"init-backupPasswordInput\\\" />\\n              </div>\\n            </div>\\n            <!-- !password-input -->\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\"> 你将从这个备份中恢复Portainer。 </span>\\n              </div>\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\"> 恢复工作完成后，请以被恢复的Portainer所知道的用户身份登录。 </span>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"!formValues.BackupFile || state.backupInProgress\\\"\\n                  ng-click=\\\"uploadBackup()\\\"\\n                  button-spinner=\\\"state.backupInProgress\\\"\\n                  data-cy=\\\"init-restorePortainerButton\\\"\\n                >\\n                  <span ng-hide=\\\"state.backupInProgress\\\">恢复 Portainer</span>\\n                  <span ng-show=\\\"state.backupInProgress\\\">恢复 Portainer...</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n          <!-- !restore backup form -->\\n        </div>\\n      </div>\\n      <!-- !restore backup panel -->\\n    </div>\\n  </div>\\n  <!-- !simple box -->\\n</div>\\n\";;\nvar path = 'app/portainer/views/init/admin/initAdmin.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///45564\n");

}),

65535:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <span class=\\\"small\\\">\\n      <p class=\\\"text-primary\\\"> Connect directly to a Portainer agent running inside a Docker or Kubernetes environment. </p>\\n    </span>\\n  </div>\\n</div>\\n<div class=\\\"col-sm-12 form-section-title\\\"> Environment </div>\\n<!-- name-input -->\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"endpoint_name\\\" class=\\\"col-sm-4 col-lg-3 control-label text-left\\\">名称</label>\\n  <div class=\\\"col-sm-8 col-lg-9\\\">\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"endpoint_name\\\" ng-model=\\\"ctrl.formValues.Name\\\" placeholder=\\\"例如 prod-cluster-01\\\" />\\n  </div>\\n</div>\\n<!-- !name-input -->\\n<!-- endpoint-url-input -->\\n<div class=\\\"form-group\\\">\\n  <label for=\\\"endpoint_url\\\" class=\\\"col-sm-4 col-lg-3 control-label text-left\\\">\\n    Agent URL\\n    <portainer-tooltip message=\\\"'URL or IP address of a Portainer agent.'\\\"> </portainer-tooltip>\\n  </label>\\n  <div class=\\\"col-sm-8 col-lg-9\\\">\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"endpoint_url\\\" ng-model=\\\"ctrl.formValues.URL\\\" placeholder=\\\"例如 10.0.0.10:9001\\\" />\\n  </div>\\n</div>\\n<!-- !endpoint-url-input -->\\n\";;\nvar path = 'app/portainer/views/init/endpoint/includes/agent.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///65535\n");

}),

31714:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <span class=\\\"small\\\">\\n      <p class=\\\"text-primary\\\"> 管理运行Portainer的Docker环境。 </p>\\n      <p class=\\\"text-muted\\\">\\n        <i class=\\\"fa fa-exclamation-circle orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n        确保你已经用以下Docker标志启动了Portainer容器。\\n      </p>\\n      <p class=\\\"text-muted\\\"> <code>-v \\\"/var/run/docker.sock:/var/run/docker.sock\\\"</code> (Linux). </p>\\n      <p class=\\\"text-muted\\\"> 或者 </p>\\n      <p class=\\\"text-muted\\\"> <code>-v \\\\\\\\.\\\\pipe\\\\docker_engine:\\\\\\\\.\\\\pipe\\\\docker_engine</code> (Windows). </p>\\n    </span>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/init/endpoint/includes/localDocker.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///31714\n");

}),

6367:

(function(module) {

eval("var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n<div class=\\\"form-group\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <span class=\\\"small\\\">\\n      <p class=\\\"text-primary\\\"> 管理运行Portainer的Kubernetes环境。 </p>\\n    </span>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/init/endpoint/includes/localKubernetes.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///6367\n");

}),

86573:

(function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n  <!-- simple box -->\\n  <div class=\\\"container simple-box\\\">\\n    <div class=\\\"col-sm-12\\\">\\n      <!-- simple box logo -->\\n      <div class=\\\"row\\\">\\n        <img ng-if=\\\"ctrl.logo\\\" ng-src=\\\"{{ ctrl.logo }}\\\" class=\\\"simple-box-logo\\\" />\\n        <img ng-if=\\\"!ctrl.logo\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/logo_alt.svg */ 325) + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n      </div>\\n      <!-- !simple box logo -->\\n      <!-- init-environment panel -->\\n      <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-body\\\">\\n          <!-- init-environment form -->\\n          <form class=\\\"simple-box-form form-horizontal\\\">\\n            <!-- note -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <span class=\\\"small text-muted\\\"> 将Portainer连接到你要管理的容器环境。 </span>\\n              </div>\\n            </div>\\n            <!-- !note -->\\n            <!-- environment-type -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <div class=\\\"boxselector_wrapper\\\">\\n                  <div ng-repeat=\\\"type in ctrl.endpointSections\\\">\\n                    <input type=\\\"radio\\\" id=\\\"{{ type.Id }}\\\" ng-model=\\\"ctrl.formValues.ConnectionType\\\" ng-value=\\\"type.Value\\\" />\\n                    <label for=\\\"{{ type.Id }}\\\">\\n                      <div class=\\\"boxselector_header\\\">\\n                        <i ng-class=\\\"type.Classes\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                        {{ type.Title }}\\n                      </div>\\n                      <p>{{ type.Description }}</p>\\n                    </label>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !environment-type  -->\\n            <!-- environment-type-details -->\\n            <div ng-if=\\\"ctrl.formValues.ConnectionType === ctrl.PortainerEndpointConnectionTypes.DOCKER_LOCAL\\\">\\n              <ng-include src=\\\"'app/portainer/views/init/endpoint/includes/localDocker.html'\\\"></ng-include>\\n            </div>\\n            <div ng-if=\\\"ctrl.formValues.ConnectionType === ctrl.PortainerEndpointConnectionTypes.KUBERNETES_LOCAL\\\">\\n              <ng-include src=\\\"'app/portainer/views/init/endpoint/includes/localKubernetes.html'\\\"></ng-include>\\n            </div>\\n            <div ng-if=\\\"ctrl.formValues.ConnectionType === ctrl.PortainerEndpointConnectionTypes.AGENT\\\">\\n              <ng-include src=\\\"'app/portainer/views/init/endpoint/includes/agent.html'\\\"></ng-include>\\n            </div>\\n            <!-- !environment-type-details -->\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"ctrl.isConnectButtonDisabled()\\\"\\n                  ng-click=\\\"ctrl.createEndpoint()\\\"\\n                  button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n                >\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\"><i class=\\\"fa fa-bolt\\\" aria-hidden=\\\"true\\\"></i> 连接</span>\\n                  <span ng-show=\\\"ctrl.state.actionInProgress\\\">连接中...</span>\\n                </button>\\n                <button type=\\\"submit\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"ctrl.skipEndpointCreation()\\\" button-spinner=\\\"ctrl.state.actionInProgress\\\">\\n                  <span ng-hide=\\\"ctrl.state.actionInProgress\\\"><i class=\\\"fa fa-share\\\" aria-hidden=\\\"true\\\"></i> 跳过</span>\\n                </button>\\n              </div>\\n            </div>\\n            <!-- !actions -->\\n          </form>\\n          <!-- !init-environment form -->\\n        </div>\\n      </div>\\n      <!-- !init-environment panel -->\\n    </div>\\n  </div>\\n  <!-- !simple box -->\\n</div>\\n\";;\nvar path = 'app/portainer/views/init/endpoint/initEndpoint.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///86573\n");

}),

94818:

(function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n  <!-- login box -->\\n  <div class=\\\"container simple-box\\\">\\n    <div class=\\\"col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3\\\">\\n      <!-- login box logo -->\\n      <div class=\\\"row\\\">\\n        <img ng-if=\\\"!ctrl.logo\\\" src=\\\"\" + __webpack_require__(/*! @/assets/images/logo_alt.svg */ 325) + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n        <img ng-if=\\\"ctrl.logo\\\" ng-src=\\\"{{ ctrl.logo }}\\\" class=\\\"simple-box-logo\\\" />\\n      </div>\\n      <div class=\\\"row text-center\\\">\\n        正在注销...\\n        <i class=\\\"fa fa-cog fa-spin space-left\\\"></i>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/logout/logout.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///94818\n");

}),

83827:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建注册表'\\\" breadcrumbs=\\\"[{label:'Registries', link:'portainer.registries'}, '添加注册表']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 注册表提供商 </div>\\n\\n          <box-selector radio-name=\\\"'availableRegistry'\\\" value=\\\"$ctrl.state.registryValue\\\" options=\\\"$ctrl.state.availableRegistry\\\" on-change=\\\"($ctrl.setRegistry)\\\"></box-selector>\\n\\n          <registry-form-quay\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.QUAY\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-quay>\\n\\n          <registry-form-azure\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.AZURE\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-azure>\\n\\n          <registry-form-custom\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.CUSTOM\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-custom>\\n\\n          <registry-form-ecr\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.ECR\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-ecr>\\n\\n          <registry-form-proget\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.PROGET\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-proget>\\n\\n          <registry-form-gitlab\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.GITLAB\\\"\\n            model=\\\"$ctrl.model\\\"\\n            retrieve-registries=\\\"$ctrl.retrieveGitlabRegistries\\\"\\n            create-registries=\\\"$ctrl.createGitlabRegistries\\\"\\n            projects=\\\"$ctrl.gitlabProjects\\\"\\n            state=\\\"$ctrl.state\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            reset-defaults=\\\"$ctrl.useDefaultGitlabConfiguration\\\"\\n          ></registry-form-gitlab>\\n          <registry-form-dockerhub\\n            ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.DOCKERHUB\\\"\\n            model=\\\"$ctrl.model\\\"\\n            form-action=\\\"$ctrl.createRegistry\\\"\\n            form-action-label=\\\"添加注册表\\\"\\n            action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n            name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n          ></registry-form-dockerhub>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/create/createRegistry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///83827\n");

}),

2800:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Registry details'\\\" breadcrumbs=\\\"[{label:'Registries', link:'portainer.registries'}, $ctrl.registry.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"editRegistry\\\">\\n          <!-- provider -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">提供商</label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.provider\\\" disabled />\\n            </div>\\n          </div>\\n\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">名称</label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                id=\\\"registry_name\\\"\\n                name=\\\"registry_name\\\"\\n                ng-model=\\\"$ctrl.registry.Name\\\"\\n                placeholder=\\\"例如 my-registry\\\"\\n                ng-change=\\\"$ctrl.onChangeName()\\\"\\n                required\\n              />\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.state.nameAlreadyExists\\\">\\n            <div class=\\\"col-sm-12 small text-warning\\\">\\n              <div>\\n                <p class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  已有一个同名的注册表存在。\\n                </p>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_name.$invalid\\\">\\n            <div class=\\\"col-sm-12 small text-warning\\\">\\n              <div ng-messages=\\\"editRegistry.registry_name.$error\\\">\\n                <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  本栏为必填项。\\n                </p>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- registry-url-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n              <span class=\\\"required\\\">Registry URL</span>\\n              <portainer-tooltip message=\\\"'Docker注册中心的URL或IP地址。如果存在任何协议或尾部斜线，将被剥离。'\\\"> </portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                id=\\\"registry_url\\\"\\n                name=\\\"registry_url\\\"\\n                ng-model=\\\"$ctrl.registry.URL\\\"\\n                placeholder=\\\"例如 10.0.0.10:5000 or myregistry.domain.tld\\\"\\n                ng-disabled=\\\"$ctrl.registry.Type === $ctrl.RegistryTypes.DOCKERHUB || $ctrl.registry.Type === $ctrl.RegistryTypes.QUAY || $ctrl.registry.Type === $ctrl.RegistryTypes.GITLAB\\\"\\n                required\\n              />\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_url.$invalid\\\">\\n            <div class=\\\"col-sm-12 small text-warning\\\">\\n              <div ng-messages=\\\"editRegistry.registry_url.$error\\\">\\n                <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                  本栏为必填项。\\n                </p>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <!-- base-url-input -->\\n          <div ng-if=\\\"$ctrl.registry.Type === $ctrl.RegistryTypes.PROGET\\\">\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"registry_base_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n                <span class=\\\"required\\\">Base URL</span>\\n                <portainer-tooltip message=\\\"'ProGet注册表的基本URL。'\\\"> </portainer-tooltip>\\n              </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"registry_base_url\\\"\\n                  name=\\\"registry_base_url\\\"\\n                  ng-model=\\\"$ctrl.registry.BaseURL\\\"\\n                  placeholder=\\\"例如 10.0.0.10:5000 or myregistry.domain.tld\\\"\\n                  required\\n                />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_base_url.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"editRegistry.registry_base_url.$error\\\">\\n                  <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                    本栏为必填项。\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !registry-url-input -->\\n\\n          <!-- authentication-checkbox -->\\n          <div\\n            class=\\\"form-group\\\"\\n            ng-if=\\\"\\n              $ctrl.registry.Type !== $ctrl.RegistryTypes.DOCKERHUB &&\\n              $ctrl.registry.Type !== $ctrl.RegistryTypes.QUAY &&\\n              $ctrl.registry.Type !== $ctrl.RegistryTypes.PROGET &&\\n              $ctrl.registry.Type !== $ctrl.RegistryTypes.AZURE &&\\n              $ctrl.registry.Type !== $ctrl.RegistryTypes.GITLAB\\n            \\\"\\n          >\\n            <label for=\\\"registry_auth\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n              Authentication\\n              <portainer-tooltip message=\\\"'如果你需要指定凭证来连接到这个注册表，请启用这个选项。'\\\"> </portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-9 col-lg-10\\\">\\n              <por-switch-field checked=\\\"$ctrl.registry.Authentication\\\" on-change=\\\"($ctrl.toggleAuthentication)\\\" switch-values=\\\"{on:'Yes',off:'No'}\\\"></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !authentication-checkbox -->\\n\\n          <!-- authentication-credentials -->\\n          <div ng-if=\\\"$ctrl.registry.Authentication\\\">\\n            <!-- credentials-user -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"credentials_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">\\n                {{ $ctrl.registry.Type === $ctrl.RegistryTypes.ECR ? 'AWS Access Key' : 'Username' }}\\n              </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"credentials_username\\\" name=\\\"credentials_username\\\" ng-model=\\\"$ctrl.registry.Username\\\" required />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.credentials_username.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"editRegistry.credentials_username.$error\\\">\\n                  <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                    本栏为必填项。\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !credentials-user -->\\n            <!-- credentials-password -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"credentials_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n                {{ $ctrl.passwordLabel() }}\\n              </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"password\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"credentials_password\\\"\\n                  name=\\\"credentials_password\\\"\\n                  placeholder=\\\"*******\\\"\\n                  ng-model=\\\"$ctrl.Password\\\"\\n                  autocomplete=\\\"off\\\"\\n                />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.credentials_password.$invalid\\\">\\n              <div class=\\\"col-sm-12 small text-warning\\\">\\n                <div ng-messages=\\\"editRegistry.credentials_password.$error\\\">\\n                  <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                    <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                    本栏为必填项。\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- region -->\\n            <div ng-if=\\\"$ctrl.registry.Type == $ctrl.RegistryTypes.ECR\\\">\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"registry_region\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">区域</label>\\n                <div class=\\\"col-sm-9 col-lg-10\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_region\\\" name=\\\"registry_region\\\" ng-model=\\\"$ctrl.registry.Ecr.Region\\\" placeholder=\\\"us-west-1\\\" required />\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_region.$invalid\\\">\\n                <div class=\\\"col-sm-12 small text-warning\\\">\\n                  <div ng-messages=\\\"editRegistry.registry_region.$error\\\">\\n                    <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      本栏为必填项。\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !region -->\\n            <!-- !credentials-password -->\\n          </div>\\n          <!-- !authentication-credentials -->\\n\\n          <div ng-if=\\\"$ctrl.registry.Type == $ctrl.RegistryTypes.QUAY\\\">\\n            <!-- organisation-checkbox -->\\n            <div class=\\\"form-group\\\">\\n              <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> 使用组织注册表 </label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <por-switch-field\\n                  checked=\\\"$ctrl.registry.Quay.UseOrganisation\\\"\\n                  on-change=\\\"($ctrl.toggleQuayUseOrganisation)\\\"\\n                  switch-values=\\\"{on:'Yes',off:'No'}\\\"\\n                ></por-switch-field>\\n              </div>\\n            </div>\\n            <!-- !organisation-checkbox -->\\n            <div ng-if=\\\"$ctrl.registry.Quay.UseOrganisation\\\">\\n              <!-- organisation_name -->\\n              <div class=\\\"form-group\\\">\\n                <label for=\\\"organisation_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">组织名称</label>\\n                <div class=\\\"col-sm-9 col-lg-10\\\">\\n                  <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"organisation_name\\\" name=\\\"organisation_name\\\" ng-model=\\\"$ctrl.registry.Quay.OrganisationName\\\" required />\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.organisation_name.$invalid\\\">\\n                <div class=\\\"col-sm-12 small text-warning\\\">\\n                  <div ng-messages=\\\"editRegistry.organisation_name.$error\\\">\\n                    <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      本栏为必填项。\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !organisation_name -->\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"$ctrl.isUpdateButtonDisabled() || editRegistry.$invalid\\\"\\n                ng-click=\\\"$ctrl.updateRegistry()\\\"\\n                button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">更新注册表</span>\\n                <span ng-show=\\\"$ctrl.state.actionInProgress\\\">正在更新注册表...</span>\\n              </button>\\n              <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.registries\\\">取消</a>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/edit/registry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///2800\n");

}),

68970:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'注册表'\\\" breadcrumbs=\\\"['Registry management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Information\\\">\\n  <span class=\\\"small text-muted\\\"> 通过环境查看注册表，以管理用户和/或团队的访问。 </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <registries-datatable\\n      title-text=\\\"注册表\\\"\\n      title-icon=\\\"radio\\\"\\n      dataset=\\\"registries\\\"\\n      table-key=\\\"registries\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"removeAction\\\"\\n      can-browse=\\\"canBrowse\\\"\\n    ></registries-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/registries.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///68970\n");

}),

61233:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'验证设置'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Authentication']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"users\\\" feather-icon=\\\"true\\\" title-text=\\\"Authentication\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"authSettingsForm\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 配置 </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"user_timeout\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n              Session 会话期限\\n              <portainer-tooltip message=\\\"'在用户被迫重新登录之前的时间。'\\\"></portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-10\\\">\\n              <select\\n                id=\\\"user_timeout\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"settings.UserSessionTimeout\\\"\\n                ng-options=\\\"opt.value as opt.key for opt in state.availableUserSessionTimeoutOptions\\\"\\n              ></select>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n              <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"'icon-sm icon-yellow'\\\"></pr-icon>\\n              只有当你在Portainer前面有额外的认证层时，才建议改变默认的做法。\\n            </span>\\n          </div>\\n\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 认证方法 </div>\\n\\n          <box-selector radio-name=\\\"'authOptions'\\\" value=\\\"authMethod\\\" options=\\\"authOptions\\\" on-change=\\\"(onChangeAuthMethod)\\\"></box-selector>\\n\\n          <internal-auth\\n            ng-if=\\\"authenticationMethodSelected(1)\\\"\\n            on-save-settings=\\\"(saveSettings)\\\"\\n            is-loading=\\\"state.actionInProgress\\\"\\n            value=\\\"settings.InternalAuthSettings\\\"\\n            on-change=\\\"(onChangePasswordLength)\\\"\\n          ></internal-auth>\\n\\n          <ldap-settings\\n            ng-if=\\\"authenticationMethodSelected(2)\\\"\\n            settings=\\\"formValues.ldap.ldapSettings\\\"\\n            tlsca-cert=\\\"formValues.TLSCACert\\\"\\n            state=\\\"state\\\"\\n            connectivity-check=\\\"LDAPConnectivityCheck\\\"\\n            on-save-settings=\\\"(saveSettings)\\\"\\n            save-button-state=\\\"state.actionInProgress\\\"\\n            is-ldap-form-valid=\\\"isLDAPFormValid\\\"\\n          ></ldap-settings>\\n\\n          <ad-settings\\n            ng-if=\\\"authenticationMethodSelected(4)\\\"\\n            settings=\\\"formValues.ldap.adSettings\\\"\\n            tlsca-cert=\\\"formValues.TLSCACert\\\"\\n            state=\\\"state\\\"\\n            connectivity-check=\\\"LDAPConnectivityCheck\\\"\\n            on-save-settings=\\\"(saveSettings)\\\"\\n            save-button-state=\\\"state.actionInProgress\\\"\\n            is-ldap-form-valid=\\\"isLDAPFormValid()\\\"\\n          ></ad-settings>\\n\\n          <oauth-settings\\n            ng-if=\\\"authenticationMethodSelected(3)\\\"\\n            settings=\\\"OAuthSettings\\\"\\n            teams=\\\"teams\\\"\\n            on-save-settings=\\\"(saveSettings)\\\"\\n            save-button-state=\\\"state.actionInProgress\\\"\\n          ></oauth-settings>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/settings/authentication/settingsAuthentication.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///61233\n");

}),

93149:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'Settings'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n    <settings-edge-compute on-submit=\\\"($ctrl.onSubmitEdgeCompute)\\\" settings=\\\"($ctrl.settings)\\\"></settings-edge-compute>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n    <settings-open-amt on-submit=\\\"($ctrl.onSubmitOpenAMT)\\\" settings=\\\"($ctrl.settings)\\\"></settings-open-amt>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n    <settings-fdo on-submit=\\\"($ctrl.onSubmitFDO)\\\" settings=\\\"($ctrl.settings)\\\"></settings-fdo>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/settings/edge-compute/settingsEdgeCompute.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///93149\n");

}),

12811:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'设置'\\\" breadcrumbs=\\\"['Settings']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"settings\\\" feather-icon=\\\"true\\\" title-text=\\\"应用程序设置\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\">\\n          <!-- snapshot-interval -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"snapshot_interval\\\" class=\\\"col-sm-2 control-label text-left\\\">快照时间间隔</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"settings.SnapshotInterval\\\" id=\\\"snapshot_interval\\\" placeholder=\\\"例如 15m\\\" />\\n            </div>\\n          </div>\\n          <!-- !snapshot-interval -->\\n          <!-- logo -->\\n          <div class=\\\"form-group\\\">\\n            <por-switch-field\\n              label=\\\"'使用自定义logo'\\\"\\n              checked=\\\"formValues.customLogo\\\"\\n              name=\\\"'toggle_logo'\\\"\\n              disabled=\\\"state.isDemo\\\"\\n              on-change=\\\"(onToggleCustomLogo)\\\"\\n              field-class=\\\"'col-sm-12'\\\"\\n              label-class=\\\"'col-sm-2'\\\"\\n            ></por-switch-field>\\n            <div class=\\\"col-sm-12\\\" ng-if=\\\"state.isDemo\\\" style=\\\"margin-top: 10px\\\">\\n              <span class=\\\"small text-muted\\\">你不能在Portainer的演示版本中使用这一功能。</span>\\n            </div>\\n          </div>\\n\\n          <div ng-if=\\\"formValues.customLogo\\\">\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\"> 你可以在这里指定你的标志的URL。为了达到最佳显示效果，logo的尺寸应该是155px x 55px。 </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"logo_url\\\" class=\\\"col-sm-2 control-label text-left\\\"> URL </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"settings.LogoURL\\\" id=\\\"logo_url\\\" placeholder=\\\"https://mycompany.com/logo.png\\\" />\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !logo -->\\n\\n          <div class=\\\"form-group\\\">\\n            <por-switch-field\\n              label=\\\"'允许收集匿名的统计数据'\\\"\\n              checked=\\\"formValues.enableTelemetry\\\"\\n              name=\\\"'toggle_enableTelemetry'\\\"\\n              on-change=\\\"(onToggleEnableTelemetry)\\\"\\n              disabled=\\\"state.isDemo\\\"\\n              field-class=\\\"'col-sm-12'\\\"\\n              label-class=\\\"'col-sm-2'\\\"\\n            ></por-switch-field>\\n            <div class=\\\"col-sm-12\\\" ng-if=\\\"state.isDemo\\\" style=\\\"margin-top: 10px\\\">\\n              <span class=\\\"small text-muted\\\">你不能在Portainer的演示版本中使用这一功能。</span>\\n            </div>\\n            <div class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-top: 10px\\\">\\n              你可以在我们的\\n              <a href=\\\"https://www.portainer.io/documentation/in-app-analytics-and-privacy-policy/\\\" target=\\\"_blank\\\">隐私政策</a>中找到更多关于这方面的信息。\\n            </div>\\n          </div>\\n\\n          <!-- login screen banner -->\\n          <div class=\\\"form-group\\\">\\n            <por-switch-field\\n              label=\\\"'登录屏幕的横幅'\\\"\\n              name=\\\"'toggle_login_banner'\\\"\\n              feature-id=\\\"customBannerFeatureId\\\"\\n              checked=\\\"$formValues.customLoginBanner\\\"\\n              on-change=\\\"(onToggleCustomLoginBanner)\\\"\\n              field-class=\\\"'col-sm-12'\\\"\\n              label-class=\\\"'col-sm-2'\\\"\\n            ></por-switch-field>\\n          </div>\\n          <!-- !login screen banner -->\\n\\n          <!-- templates -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 应用程序模板 </div>\\n          <div>\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\">\\n                你可以在这里指定你自己的模板定义文件的URL。 更多细节见\\n                <a href=\\\"https://docs.portainer.io/advanced/app-templates/build\\\" target=\\\"_blank\\\">Portainer 文档</a> 。\\n              </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"templates_url\\\" class=\\\"col-sm-2 control-label text-left\\\"> URL </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  ng-model=\\\"settings.TemplatesURL\\\"\\n                  id=\\\"templates_url\\\"\\n                  placeholder=\\\"https://myserver.mydomain/templates.json\\\"\\n                  required\\n                  data-cy=\\\"settings-templateUrl\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !templates -->\\n          <!-- helm charts -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Helm 仓库 </div>\\n          <div>\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\">\\n                你可以在这里指定你自己的Helm仓库的URL。 更多细节见\\n                <a href=\\\"https://helm.sh/docs/topics/chart_repository/\\\" target=\\\"_blank\\\">官方文档</a> 。\\n              </span>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"helmrepository_url\\\" class=\\\"col-sm-2 control-label text-left\\\"> URL </label>\\n              <div class=\\\"col-sm-8\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"settings.HelmRepositoryURL\\\" id=\\\"helmrepository_url\\\" placeholder=\\\"https://charts.bitnami.com/bitnami\\\" />\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !helm charts -->\\n          <!-- host-filesystem -->\\n          <!-- kube -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> Kubernetes </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"kubeconfig_expiry\\\" class=\\\"col-sm-2 control-label text-left\\\"> Kubeconfig expiry </label>\\n            <div class=\\\"col-sm-8\\\">\\n              <select\\n                id=\\\"kubeconfig_expiry\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"settings.KubeconfigExpiry\\\"\\n                ng-options=\\\"opt.value as opt.key for opt in state.availableKubeconfigExpiryOptions\\\"\\n              ></select>\\n            </div>\\n          </div>\\n          <!-- ! kube  -->\\n          <!-- actions -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-click=\\\"saveApplicationSettings()\\\"\\n                ng-disabled=\\\"state.actionInProgress || !settings.TemplatesURL\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n                data-cy=\\\"settings-saveSettingsButton\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">保存设置</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">保存中...</span>\\n              </button>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<ssl-certificate-settings ng-show=\\\"state.showHTTPS\\\"></ssl-certificate-settings>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"box\\\" feather-icon=\\\"true\\\" title-text=\\\"隐藏容器\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" ng-submit=\\\"addFilteredContainerLabel()\\\" name=\\\"addTagForm\\\">\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 text-muted small\\\"> 你可以从Portainer UI中隐藏带有特定标签的容器。你需要指定标签的名称和值。 </span>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"header_name\\\" class=\\\"col-sm-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-11 col-md-4\\\">\\n              <input type=\\\"text\\\" required class=\\\"form-control\\\" id=\\\"header_name\\\" name=\\\"label_name\\\" ng-model=\\\"formValues.labelName\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n            </div>\\n            <label for=\\\"header_value\\\" class=\\\"col-sm-1 control-label text-left\\\">Value</label>\\n            <div class=\\\"col-sm-11 col-md-4\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"header_value\\\" ng-model=\\\"formValues.labelValue\\\" placeholder=\\\"例如 bar\\\" />\\n            </div>\\n            <div class=\\\"col-sm-12 col-md-2\\\">\\n              <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!formValues.labelName\\\"><i class=\\\"fa fa-plus space-right\\\" aria-hidden=\\\"true\\\"></i>添加筛选</button>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12 table-responsive\\\">\\n              <table class=\\\"table table-hover\\\">\\n                <thead>\\n                  <tr>\\n                    <th>名称</th>\\n                    <th>Value</th>\\n                    <th></th>\\n                  </tr>\\n                </thead>\\n                <tbody>\\n                  <tr ng-repeat=\\\"label in settings.BlackListedLabels\\\">\\n                    <td>{{ label.name }}</td>\\n                    <td>{{ label.value }}</td>\\n                    <td>\\n                      <button type=\\\"button\\\" class=\\\"btn btn-danger btn-xs\\\" ng-click=\\\"removeFilteredContainerLabel($index)\\\">\\n                        <i class=\\\"fa fa-trash-alt space-right\\\" aria-hidden=\\\"true\\\"></i>删除</button\\n                      >\\n                    </td>\\n                  </tr>\\n                  <tr ng-if=\\\"settings.BlackListedLabels.length === 0\\\">\\n                    <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">没有可用的筛选。</td>\\n                  </tr>\\n                  <tr ng-if=\\\"!settings.BlackListedLabels\\\">\\n                    <td colspan=\\\"3\\\" class=\\\"text-center text-muted\\\">加载中...</td>\\n                  </tr>\\n                </tbody>\\n              </table>\\n            </div>\\n          </div>\\n          <!-- !filtered-labels -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"download\\\" feather-icon=\\\"true\\\" title-text=\\\"Backup Portainer\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" ng-submit=\\\"backupPortainer()\\\" name=\\\"backupPortainerForm\\\">\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 备份配置 </div>\\n\\n          <box-selector options=\\\"backupOptions\\\" value=\\\"formValues.backupFormType\\\" on-change=\\\"(onBackupOptionsChange)\\\" radio-name=\\\"'backupOptions'\\\"></box-selector>\\n\\n          <div ng-if=\\\"formValues.backupFormType === BACKUP_FORM_TYPES.S3\\\">\\n            <!-- Schedule automatic backups -->\\n            <div class=\\\"form-group mt-3\\\">\\n              <por-switch-field\\n                label=\\\"'Schedule automatic backups'\\\"\\n                name=\\\"'s3-backup-setting'\\\"\\n                feature-id=\\\"s3BackupFeatureId\\\"\\n                checked=\\\"formValues.scheduleAutomaticBackups\\\"\\n                field-class=\\\"'col-sm-12'\\\"\\n                label-class=\\\"'col-sm-2'\\\"\\n                on-change=\\\"(onToggleAutoBackups)\\\"\\n              ></por-switch-field>\\n            </div>\\n            <!-- !Schedule automatic backups -->\\n            <!-- Cron rule  -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"formValues.scheduleAutomaticBackups\\\">\\n              <label for=\\\"cron_rule\\\" class=\\\"col-sm-2 col-lg-2 control-label text-left\\\">Cron规则</label>\\n              <div class=\\\"col-sm-10 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  placeholder=\\\"0 2 * * *\\\"\\n                  id=\\\"cron_rule\\\"\\n                  name=\\\"cron_rule\\\"\\n                  ng-model=\\\"formValues.cronRule\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                  required\\n                  cronRule\\n                />\\n              </div>\\n            </div>\\n            <!-- !Cron rule  -->\\n            <!-- Access key id  -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"access_key_id\\\" class=\\\"col-sm-2 col-lg-2 control-label text-left\\\">Access Key ID</label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"access_key_id\\\"\\n                  name=\\\"access_key_id\\\"\\n                  ng-model=\\\"formValues.accessKeyId\\\"\\n                  ng-required=\\\"formValues.scheduleAutomaticBackups\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                />\\n              </div>\\n            </div>\\n            <!-- !Access key id  -->\\n            <!-- Secret access key -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"secret_access_key\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Secret Access Key</label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"password\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"secret_access_key\\\"\\n                  name=\\\"secret_access_key\\\"\\n                  ng-model=\\\"formValues.secretAccessKey\\\"\\n                  ng-required=\\\"formValues.scheduleAutomaticBackups\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                />\\n              </div>\\n            </div>\\n            <!-- !Secret access key -->\\n            <!-- Region -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"region\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Region</label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  placeholder=\\\"us-west-1\\\"\\n                  id=\\\"region\\\"\\n                  name=\\\"region\\\"\\n                  ng-model=\\\"formValues.region\\\"\\n                  ng-required=\\\"formValues.scheduleAutomaticBackups\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                />\\n              </div>\\n            </div>\\n            <!-- !Region -->\\n            <!-- Bucket name -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"bucket_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Bucket name</label>\\n              <div class=\\\"col-sm-9 col-lg-10\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"bucket_name\\\"\\n                  name=\\\"bucket_name\\\"\\n                  ng-model=\\\"formValues.bucketName\\\"\\n                  ng-required=\\\"formValues.scheduleAutomaticBackups\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                />\\n              </div>\\n            </div>\\n            <!-- !Bucket name -->\\n            <div class=\\\"col-sm-12 form-section-title\\\"> Security settings </div>\\n            <!-- Password protect S3 -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"password_protect\\\" class=\\\"col-sm-2 control-label text-left\\\">Password protect</label>\\n              <div class=\\\"col-sm-8\\\">\\n                <label class=\\\"switch\\\">\\n                  <input\\n                    type=\\\"checkbox\\\"\\n                    id=\\\"password_protect_s3\\\"\\n                    name=\\\"password_protect_s3\\\"\\n                    ng-model=\\\"formValues.passwordProtectS3\\\"\\n                    data-cy=\\\"settings-passwordProtectToggleS3\\\"\\n                    disabled\\n                  /><span class=\\\"slider round\\\"></span>\\n                </label>\\n              </div>\\n            </div>\\n            <!-- !Password protect S3 -->\\n            <!-- Password S3 -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"formValues.passwordProtectS3\\\">\\n              <label for=\\\"password\\\" class=\\\"col-sm-2 control-label text-left\\\">密码</label>\\n              <div class=\\\"col-sm-3\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.passwordS3\\\" id=\\\"password_S3\\\" name=\\\"password_S3\\\" required data-cy=\\\"settings-backups3pw\\\" />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group col-md-12\\\" ng-show=\\\"backupPortainerForm.password_S3.$invalid\\\">\\n              <div class=\\\"small text-warning\\\">\\n                <div ng-messages=\\\"backupPortainerForm.password_S3.$error\\\">\\n                  <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !Password S3 -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"backupPortainerForm.$invalid\\\"\\n                  ng-click=\\\"exportBackup()\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                >\\n                  <span> <i class=\\\"fa fa-upload\\\" aria-hidden=\\\"true\\\"></i> 导出备份</span>\\n                </button>\\n              </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <hr />\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"submit\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-disabled=\\\"backupPortainerForm.$invalid ||state.backupInProgress\\\"\\n                  ng-click=\\\"saveS3BackupSettings()\\\"\\n                  limited-feature-dir=\\\"{{::s3BackupFeatureId}}\\\"\\n                  limited-feature-disabled\\n                  limited-feature-class=\\\"limited-be\\\"\\n                >\\n                  <span>保存备份设置</span>\\n                </button>\\n              </div>\\n            </div>\\n          </div>\\n          <div ng-if=\\\"formValues.backupFormType === BACKUP_FORM_TYPES.FILE\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 安全设置 </div>\\n            <!-- Password protect -->\\n            <div class=\\\"form-group\\\">\\n              <label for=\\\"password_protect\\\" class=\\\"col-sm-2 control-label text-left\\\">密码保护</label>\\n              <div class=\\\"col-sm-2\\\">\\n                <label class=\\\"switch\\\" data-cy=\\\"settings-passwordProtectLocal\\\">\\n                  <input type=\\\"checkbox\\\" id=\\\"password_protect\\\" name=\\\"password_protect\\\" ng-model=\\\"formValues.passwordProtect\\\" /><span class=\\\"slider round\\\"></span>\\n                </label>\\n              </div>\\n            </div>\\n            <!-- !Password protect -->\\n\\n            <!-- Password -->\\n            <div class=\\\"form-group\\\" ng-if=\\\"formValues.passwordProtect\\\">\\n              <label for=\\\"password\\\" class=\\\"col-sm-2 control-label text-left\\\">密码</label>\\n              <div class=\\\"col-sm-3\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.password\\\" id=\\\"password\\\" name=\\\"password\\\" required data-cy=\\\"settings-backupLocalPassword\\\" />\\n              </div>\\n            </div>\\n            <div class=\\\"form-group col-md-12\\\" ng-show=\\\"backupPortainerForm.password.$invalid\\\">\\n              <div class=\\\"small text-warning\\\">\\n                <div ng-messages=\\\"backupPortainerForm.password.$error\\\">\\n                  <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\"></pr-icon> 本栏为必填项。</p>\\n                </div>\\n              </div>\\n            </div>\\n            <!-- !Password -->\\n\\n            <!-- actions -->\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button\\n                  type=\\\"button\\\"\\n                  class=\\\"btn btn-primary btn-sm\\\"\\n                  ng-click=\\\"downloadBackup()\\\"\\n                  ng-disabled=\\\"backupPortainerForm.$invalid || state.backupInProgress || state.featureLimited\\\"\\n                  button-spinner=\\\"state.backupInProgress\\\"\\n                  data-cy=\\\"settings-downloadLocalBackup\\\"\\n                >\\n                  <span ng-hide=\\\"state.backupInProgress\\\">下载备份</span>\\n                  <span ng-show=\\\"state.backupInProgress\\\">正在下载备份</span>\\n                </button>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/settings/settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///12811\n");

}),

24021:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'创建堆栈'\\\" breadcrumbs=\\\"[{label:'堆栈', link:'docker.stacks'}, '添加堆栈']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"createStackForm\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-11\\\">\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"formValues.Name\\\"\\n                id=\\\"stack_name\\\"\\n                name=\\\"stack_name\\\"\\n                placeholder=\\\"例如 mystack\\\"\\n                auto-focus\\n                ng-pattern=\\\"STACK_NAME_VALIDATION_REGEX\\\"\\n              />\\n              <div class=\\\"help-block\\\" ng-show=\\\"createStackForm.stack_name.$invalid\\\">\\n                <div class=\\\"small text-warning\\\">\\n                  <div ng-messages=\\\"createStackForm.stack_name.$error\\\">\\n                    <p ng-message=\\\"pattern\\\">\\n                      <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\" feather=\\\"true\\\"></pr-icon></span>\\n                      这个字段必须由小写字母数字字符、'_'或'-'组成（例如，'my-name'，或'abc-123'）。\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"form-group\\\">\\n            <span class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 1\\\">\\n              这个堆栈将使用相当于<code>docker stack deploy</code>命令进行部署。\\n            </span>\\n            <div class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 2 && composeSyntaxMaxVersion == 2\\\">\\n              <div style=\\\"margin-bottom: 7px\\\">\\n                此堆栈将使用等效的<code>docker-compose</code>来部署。目前仅支持Compose文件格式版本<b>2</b>。\\n              </div>\\n              <i class=\\\"fa fa-exclamation-circle orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n              注意：由于libcompose的限制，堆栈的名称将被标准化，删除所有的特殊字符和大写字母。\\n            </div>\\n            <span class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 2 && composeSyntaxMaxVersion > 2\\\">\\n              这个堆栈将使用<code>docker compose</code>部署。\\n            </span>\\n          </div>\\n          <!-- build-method -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 构建方法 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <div class=\\\"boxselector_wrapper\\\">\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_editor\\\" ng-model=\\\"state.Method\\\" value=\\\"editor\\\" />\\n                  <label for=\\\"method_editor\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                      网页编辑\\n                    </div>\\n                    <p>使用我们的网页编辑器</p>\\n                  </label>\\n                </div>\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_upload\\\" ng-model=\\\"state.Method\\\" value=\\\"upload\\\" />\\n                  <label for=\\\"method_upload\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon>\\n                      上传\\n                    </div>\\n                    <p>从你的电脑上传</p>\\n                  </label>\\n                </div>\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_repository\\\" ng-model=\\\"state.Method\\\" value=\\\"repository\\\" />\\n                  <label for=\\\"method_repository\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'git-pull-request'\\\" feather=\\\"true\\\"></pr-icon>\\n                      git仓库\\n                    </div>\\n                    <p>使用git仓库</p>\\n                  </label>\\n                </div>\\n                <div>\\n                  <input type=\\\"radio\\\" id=\\\"method_template\\\" ng-model=\\\"state.Method\\\" value=\\\"template\\\" />\\n                  <label for=\\\"method_template\\\">\\n                    <div class=\\\"boxselector_header\\\">\\n                      <pr-icon icon=\\\"'edit'\\\" feather=\\\"true\\\"></pr-icon>\\n                      自定义模板\\n                    </div>\\n                    <p>使用自定义模板</p>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !build-method -->\\n\\n          <!-- upload -->\\n          <div ng-show=\\\"state.Method === 'upload'\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\"> 上传 </div>\\n            <div class=\\\"form-group\\\">\\n              <span class=\\\"col-sm-12 text-muted small\\\"> 你可以从你的电脑上传一个 Compose 文件。 </span>\\n              <div class=\\\"col-sm-12\\\" ng-if=\\\"state.uploadYamlValidationError\\\"\\n                ><span class=\\\"text-danger small\\\">{{ state.uploadYamlValidationError }}</span></div\\n              >\\n            </div>\\n            <div class=\\\"form-group\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-light\\\" ngf-select=\\\"uploadFile($file)\\\">\\n                  <pr-icon icon=\\\"'upload'\\\" feather=\\\"true\\\"></pr-icon>\\n                  选择文件</button\\n                >\\n                <span style=\\\"margin-left: 5px\\\">\\n                  {{ formValues.StackFile.name }}\\n                  <i class=\\\"fa fa-times red-icon\\\" ng-if=\\\"!formValues.StackFile\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !upload -->\\n          <git-form\\n            ng-if=\\\"state.Method === 'repository'\\\"\\n            model=\\\"formValues\\\"\\n            on-change=\\\"(onChangeFormValues)\\\"\\n            additional-file=\\\"true\\\"\\n            auto-update=\\\"true\\\"\\n            show-force-pull-image=\\\"true\\\"\\n            show-auth-explanation=\\\"true\\\"\\n            path-text-title=\\\"Compose path\\\"\\n            path-placeholder=\\\"docker-compose.yml\\\"\\n          ></git-form>\\n\\n          <div ng-show=\\\"state.Method === 'template'\\\">\\n            <custom-template-selector\\n              new-template-path=\\\"docker.templates.custom.new\\\"\\n              stack-type=\\\"state.StackType\\\"\\n              on-change=\\\"(onChangeTemplateId)\\\"\\n              value=\\\"state.selectedTemplateId\\\"\\n            ></custom-template-selector>\\n\\n            <custom-templates-variables-field\\n              ng-if=\\\"isTemplateVariablesEnabled && state.selectedTemplate\\\"\\n              definitions=\\\"state.selectedTemplate.Variables\\\"\\n              value=\\\"formValues.Variables\\\"\\n              on-change=\\\"(onChangeTemplateVariables)\\\"\\n            ></custom-templates-variables-field>\\n          </div>\\n\\n          <web-editor-form\\n            ng-if=\\\"state.Method === 'editor' || (state.Method === 'template' && state.selectedTemplateId)\\\"\\n            identifier=\\\"stack-creation-editor\\\"\\n            value=\\\"formValues.StackFileContent\\\"\\n            on-change=\\\"(onChangeFileContent)\\\"\\n            ng-required=\\\"true\\\"\\n            yml=\\\"true\\\"\\n            placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n          >\\n            <editor-description>\\n              <span class=\\\"col-sm-12 text-muted small\\\">\\n                你可以在<a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">官方文档</a>中获得更多有关 Compose 文件格式的信息。\\n              </span>\\n              <div class=\\\"col-sm-12\\\" ng-if=\\\"state.editorYamlValidationError\\\">\\n                <span class=\\\"text-danger small\\\">{{ state.editorYamlValidationError }}</span>\\n              </div>\\n            </editor-description>\\n          </web-editor-form>\\n\\n          <div ng-if=\\\"state.Method !== 'repository' && isAdmin && applicationState.endpoint.type !== 4\\\">\\n            <div class=\\\"col-sm-12 form-section-title\\\">\\n              Webhooks\\n              <por-switch-field\\n                name=\\\"EnableWebhook\\\"\\n                checked=\\\"formValues.EnableWebhook\\\"\\n                label-class=\\\"'col-sm-2'\\\"\\n                tooltip=\\\"'创建一个webhook（或回调URI）来自动更新这个栈。向这个回调URI发送一个POST请求（不需要任何认证）将拉出相关镜像的最新版本并重新部署这个堆栈。'\\\"\\n                label=\\\"'创建堆栈webhook'\\\"\\n                on-change=\\\"(onEnableWebhookChange)\\\"\\n                feature-id=\\\"'stack-webhook'\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n\\n          <!-- environment-variables -->\\n          <environment-variables-panel ng-model=\\\"formValues.Env\\\" explanation=\\\"这些值将被用作堆栈文件中的替代值\\\" on-change=\\\"(handleEnvVarChange)\\\">\\n          </environment-variables-panel>\\n          <!-- !environment-variables -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- actions -->\\n          <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress\\n              || !createStackForm.$valid\\n              || ((state.Method === 'editor' || state.Method === 'template') && (!formValues.StackFileContent || state.editorYamlValidationError))\\n              || (state.Method === 'upload' && (!formValues.StackFile || state.uploadYamlValidationError))\\n              || (state.Method === 'repository' && ((!formValues.RepositoryURL || !formValues.ComposeFilePathInRepository) || (formValues.RepositoryAuthentication && !formValues.RepositoryPassword)))\\n              || !formValues.Name\\\"\\n                ng-click=\\\"deployStack()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n                analytics-on\\n                analytics-category=\\\"docker\\\"\\n                analytics-event=\\\"docker-stack-create\\\"\\n                analytics-properties=\\\"buildAnalyticsProperties()\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">部署堆栈</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">部署进行中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/stacks/create/createstack.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///24021\n");

}),

68156:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'堆栈详情'\\\" breadcrumbs=\\\"[{label:'堆栈', link:'docker.stacks'}, stackName]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-body>\\n        <uib-tabset active=\\\"state.activeTab\\\">\\n          <!-- tab-info -->\\n          <uib-tab index=\\\"0\\\">\\n            <uib-tab-heading> <i class=\\\"fa fa-th-list\\\" aria-hidden=\\\"true\\\"></i> 堆栈 </uib-tab-heading>\\n            <div style=\\\"margin-top: 10px\\\">\\n              <!-- stack-information -->\\n              <div ng-if=\\\"external || orphaned\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 信息 </div>\\n                <div class=\\\"form-group\\\">\\n                  <span class=\\\"small\\\">\\n                    <p class=\\\"text-muted\\\">\\n                      <i class=\\\"fa fa-exclamation-circle orange-icon\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 2px\\\"></i>\\n                      <span ng-if=\\\"external\\\">这个堆栈是在Portainer之外创建的。对这个堆栈的控制是有限的。</span>\\n                      <span ng-if=\\\"orphaned\\\">这个堆栈是无主的。你可以使用 \\\"关联到这个环境 \\\"的功能将其与当前环境重新关联。</span>\\n                    </p>\\n                  </span>\\n                </div>\\n              </div>\\n              <!-- !stack-information -->\\n              <!-- stack-details -->\\n              <div>\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 堆栈详情 </div>\\n                <div class=\\\"form-group\\\">\\n                  {{ stackName }}\\n\\n                  <button\\n                    authorization=\\\"PortainerStackUpdate\\\"\\n                    ng-if=\\\"regular && stack.Status === 2\\\"\\n                    ng-disabled=\\\"state.actionInProgress\\\"\\n                    class=\\\"btn btn-xs btn-success\\\"\\n                    ng-click=\\\"startStack()\\\"\\n                  >\\n                    <i class=\\\"fa fa-play space-right\\\" aria-hidden=\\\"true\\\"></i>\\n                    启动此堆栈\\n                  </button>\\n\\n                  <button\\n                    ng-if=\\\"regular && stack.Status === 1\\\"\\n                    authorization=\\\"PortainerStackUpdate\\\"\\n                    ng-disabled=\\\"state.actionInProgress\\\"\\n                    class=\\\"btn btn-xs btn-light\\\"\\n                    ng-click=\\\"stopStack()\\\"\\n                  >\\n                    <pr-icon icon=\\\"'stop-circle'\\\" feather=\\\"true\\\"></pr-icon>\\n                    停止此堆栈\\n                  </button>\\n\\n                  <button authorization=\\\"PortainerStackDelete\\\" class=\\\"btn btn-xs btn-light\\\" ng-click=\\\"removeStack()\\\" ng-if=\\\"!external || stack.Type == 1\\\">\\n                    <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\"></pr-icon>\\n                    删除此堆栈\\n                  </button>\\n\\n                  <button\\n                    ng-if=\\\"regular && stackFileContent\\\"\\n                    class=\\\"btn btn-primary btn-xs\\\"\\n                    ui-sref=\\\"docker.templates.custom.new({fileContent: stackFileContent, type: stack.Type})\\\"\\n                  >\\n                    <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>\\n                    从堆栈中创建模板\\n                  </button>\\n                  <button\\n                    authorization=\\\"PortainerStackUpdate\\\"\\n                    ng-if=\\\"regular && stackFileContent && !stack.FromAppTemplate && stack.GitConfig\\\"\\n                    ng-disabled=\\\"state.actionInProgress\\\"\\n                    ng-click=\\\"detachStackFromGit()\\\"\\n                    button-spinner=\\\"state.actionInProgress\\\"\\n                    class=\\\"btn btn-primary btn-xs\\\"\\n                  >\\n                    <i class=\\\"fa fa-arrow-right space-right\\\" aria-hidden=\\\"true\\\"></i>\\n                    <span ng-hide=\\\"state.actionInProgress\\\">从Git中分离</span>\\n                    <span ng-show=\\\"state.actionInProgress\\\">分离过程中...</span>\\n                  </button>\\n                </div>\\n              </div>\\n              <!-- !stack-details -->\\n\\n              <!-- associate -->\\n              <div ng-if=\\\"orphaned\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 与此环境有关 </div>\\n                <p class=\\\"small text-muted\\\"> 这个功能允许你将这个堆栈重新关联到当前环境。 </p>\\n                <form class=\\\"form-horizontal\\\">\\n                  <por-access-control-form form-data=\\\"formValues.AccessControlData\\\" hide-title=\\\"true\\\"></por-access-control-form>\\n                  <div class=\\\"form-group\\\">\\n                    <div class=\\\"col-sm-12\\\">\\n                      <button\\n                        type=\\\"button\\\"\\n                        class=\\\"btn btn-primary btn-sm\\\"\\n                        ng-disabled=\\\"state.actionInProgress\\\"\\n                        ng-click=\\\"associateStack()\\\"\\n                        button-spinner=\\\"state.actionInProgress\\\"\\n                        style=\\\"margin-left: -5px\\\"\\n                      >\\n                        <i class=\\\"fa fa-sync\\\" aria-hidden=\\\"true\\\" style=\\\"margin-right: 3px\\\"></i>\\n                        <span ng-hide=\\\"state.actionInProgress\\\">关联</span>\\n                        <span ng-show=\\\"state.actionInProgress\\\">正在进行关联...</span>\\n                      </button>\\n                      <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n                    </div>\\n                  </div>\\n                </form>\\n              </div>\\n              <!-- !associate -->\\n              <stack-redeploy-git-form\\n                ng-if=\\\"stack.GitConfig && !stack.FromAppTemplate && !state.actionInProgress\\\"\\n                model=\\\"stack.GitConfig\\\"\\n                stack=\\\"stack\\\"\\n                authorization=\\\"PortainerStackUpdate\\\"\\n                endpoint=\\\"applicationState.endpoint\\\"\\n              >\\n              </stack-redeploy-git-form>\\n              <stack-duplication-form\\n                ng-if=\\\"regular && endpoints.length > 0\\\"\\n                endpoints=\\\"endpoints\\\"\\n                groups=\\\"groups\\\"\\n                current-endpoint-id=\\\"endpoint.Id\\\"\\n                on-duplicate=\\\"duplicateStack(name, endpointId)\\\"\\n                on-migrate=\\\"migrateStack(name, endpointId)\\\"\\n                yaml-error=\\\"state.yamlError\\\"\\n              >\\n              </stack-duplication-form>\\n            </div>\\n          </uib-tab>\\n          <!-- !tab-info -->\\n          <!-- tab-file -->\\n          <uib-tab index=\\\"1\\\" select=\\\"showEditor()\\\" ng-if=\\\"!external && (!stack.GitConfig || stack.FromAppTemplate)\\\">\\n            <uib-tab-heading> <i class=\\\"fa fa-pencil-alt space-right\\\" aria-hidden=\\\"true\\\"></i> 编辑 </uib-tab-heading>\\n            <form class=\\\"form-horizontal\\\" ng-if=\\\"state.showEditorTab\\\" style=\\\"margin-top: 10px\\\" name=\\\"stackUpdateForm\\\">\\n              <div class=\\\"form-group\\\">\\n                <span class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 7px\\\" ng-if=\\\"stackType == STACK_TYPES.DockerCompose && composeSyntaxMaxVersion == 2\\\">\\n                  此堆栈将使用等效的<code>docker-compose</code>来部署。目前仅支持Compose文件格式版本<b>2</b>。\\n                </span>\\n                <span class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 7px\\\" ng-if=\\\"stackType == STACK_TYPES.DockerCompose && composeSyntaxMaxVersion > 2\\\">\\n                  此堆栈将使用<code>docker-compose</code>部署。\\n                </span>\\n                <span class=\\\"col-sm-12 text-muted small\\\">\\n                  你可以在<a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">官方文档</a>中获得更多有关 Compose 文件格式的信息。\\n                </span>\\n                <div class=\\\"col-sm-12\\\" ng-if=\\\"state.yamlError\\\">\\n                  <span class=\\\"text-danger small\\\">{{ state.yamlError }}</span>\\n                </div>\\n              </div>\\n              <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                  <code-editor\\n                    read-only=\\\"orphaned\\\"\\n                    identifier=\\\"stack-editor\\\"\\n                    placeholder=\\\"# 在这里定义或粘贴你的docker compose文件的内容\\\"\\n                    yml=\\\"true\\\"\\n                    on-change=\\\"(editorUpdate)\\\"\\n                    value=\\\"stackFileContent\\\"\\n                  ></code-editor>\\n                </div>\\n              </div>\\n\\n              <div ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\">\\n                  Webhooks\\n                  <por-switch-field\\n                    name=\\\"EnableWebhook\\\"\\n                    checked=\\\"formValues.EnableWebhook\\\"\\n                    label-class=\\\"'col-sm-2'\\\"\\n                    tooltip=\\\"'创建一个webhook（或回调URI）来自动更新这个栈。向这个回调URI发送一个POST请求（不需要任何认证）将拉出相关图像的最新版本并重新部署这个堆栈。'\\\"\\n                    label=\\\"'创建堆栈webhook'\\\"\\n                    feature-id=\\\"'stack-webhook'\\\"\\n                  ></por-switch-field>\\n                </div>\\n              </div>\\n\\n              <!-- environment-variables -->\\n              <div ng-if=\\\"stack\\\">\\n                <environment-variables-panel\\n                  ng-model=\\\"formValues.Env\\\"\\n                  explanation=\\\"这些值将被用作堆栈文件中的替代值\\\"\\n                  on-change=\\\"(handleEnvVarChange)\\\"\\n                  show-help-message=\\\"true\\\"\\n                ></environment-variables-panel>\\n              </div>\\n              <!-- !environment-variables -->\\n              <!-- options -->\\n              <div ng-if=\\\"stack.Type === 1 && applicationState.endpoint.apiVersion >= 1.27\\\" authorization=\\\"PortainerStackUpdate\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\">选项 </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <por-switch-field\\n                      name=\\\"prune\\\"\\n                      checked=\\\"formValues.Prune\\\"\\n                      tooltip=\\\"'修剪不再引用的服务。'\\\"\\n                      label-class=\\\"'col-sm-2'\\\"\\n                      label=\\\"'Prune services'\\\"\\n                      on-change=\\\"(onPruneChange)\\\"\\n                    ></por-switch-field>\\n                  </div>\\n                </div>\\n              </div>\\n              <!-- !options -->\\n              <div authorization=\\\"PortainerStackUpdate\\\">\\n                <div class=\\\"col-sm-12 form-section-title\\\"> 操作 </div>\\n                <div class=\\\"form-group\\\">\\n                  <div class=\\\"col-sm-12\\\">\\n                    <button\\n                      type=\\\"button\\\"\\n                      class=\\\"btn btn-sm btn-primary\\\"\\n                      ng-disabled=\\\"state.actionInProgress || state.yamlError || !stackUpdateForm.$valid || !stackFileContent || orphaned\\\"\\n                      ng-click=\\\"deployStack()\\\"\\n                      button-spinner=\\\"state.actionInProgress\\\"\\n                    >\\n                      <span ng-hide=\\\"state.actionInProgress\\\">更新堆栈</span>\\n                      <span ng-show=\\\"state.actionInProgress\\\">部署进行中...</span>\\n                    </button>\\n                  </div>\\n                </div>\\n              </div>\\n            </form>\\n          </uib-tab>\\n          <!-- !tab-file -->\\n        </uib-tabset>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<stack-containers-datatable\\n  ng-if=\\\"stackType !== STACK_TYPES.DockerSwarm && (!orphaned || orphanedRunning)\\\"\\n  stack-name=\\\"stackName\\\"\\n  environment=\\\"endpoint\\\"\\n></stack-containers-datatable>\\n\\n<div class=\\\"row\\\" ng-if=\\\"services && (!orphaned || orphanedRunning)\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <services-datatable\\n      title-text=\\\"Services\\\"\\n      title-icon=\\\"list\\\"\\n      dataset=\\\"services\\\"\\n      table-key=\\\"stack-services\\\"\\n      order-by=\\\"Name\\\"\\n      nodes=\\\"nodes\\\"\\n      agent-proxy=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n      show-ownership-column=\\\"false\\\"\\n      show-update-action=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n      show-task-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n      show-add-action=\\\"false\\\"\\n      show-stack-column=\\\"false\\\"\\n      not-auto-focus=\\\"true\\\"\\n      endpoint-public-url=\\\"endpoint.PublicURL\\\"\\n      endpoint-id=\\\"endpoint.Id\\\"\\n    ></services-datatable>\\n  </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n  ng-if=\\\"stack && !orphaned\\\"\\n  resource-id=\\\"stack.EndpointId + '_' + stack.Name\\\"\\n  resource-control=\\\"stack.ResourceControl\\\"\\n  resource-type=\\\"resourceType\\\"\\n  environment-id=\\\"stack.EndpointId\\\"\\n  on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\";;\nvar path = 'app/portainer/views/stacks/edit/stack.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///68156\n");

}),

25872:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'堆栈列表'\\\" breadcrumbs=\\\"['堆栈']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel-offline ng-if=\\\"offlineMode\\\"></information-panel-offline>\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <stacks-datatable\\n      title-text=\\\"堆栈\\\"\\n      title-icon=\\\"fa-th-list\\\"\\n      dataset=\\\"stacks\\\"\\n      table-key=\\\"stacks\\\"\\n      order-by=\\\"Name\\\"\\n      remove-action=\\\"removeAction\\\"\\n      offline-mode=\\\"offlineMode\\\"\\n      refresh-callback=\\\"getStacks\\\"\\n      create-enabled=\\\"createEnabled\\\"\\n    ></stacks-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/stacks/stacks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///25872\n");

}),

57642:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'标记'\\\" breadcrumbs=\\\"['Tag management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"plus\\\" feather-icon=\\\"true\\\" title-text=\\\"添加新标记\\\"> </rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" name=\\\"tagCreationForm\\\" ng-submit=\\\"createTag()\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"name\\\" class=\\\"col-sm-2 control-label text-left required\\\"> 名称 </label>\\n            <div class=\\\"col-sm-10\\\">\\n              <input\\n                type=\\\"text\\\"\\n                class=\\\"form-control\\\"\\n                name=\\\"name\\\"\\n                ng-model=\\\"formValues.Name\\\"\\n                ng-change=\\\"checkNameValidity(tagCreationForm)\\\"\\n                placeholder=\\\"org/acme\\\"\\n                required\\n                auto-focus\\n              />\\n              <div class=\\\"help-block\\\" ng-show=\\\"tagCreationForm.name.$invalid\\\">\\n                <div class=\\\"small text-warning\\\">\\n                  <div ng-messages=\\\"tagCreationForm.name.$error\\\">\\n                    <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      本栏为必填项。\\n                    </p>\\n                    <p ng-message=\\\"validName\\\" class=\\\"vertical-center\\\">\\n                      <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" feather=\\\"true\\\"></pr-icon>\\n                      这个标签已经存在。\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !tagCreationForm.$valid\\\"\\n                ng-click=\\\"createTag()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\" class=\\\"vertical-center\\\">\\n                  <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon>\\n                  创建标记\\n                </span>\\n                <span ng-show=\\\"state.actionInProgress\\\">创建标记中...</span>\\n              </button>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <tags-datatable title-text=\\\"标记\\\" title-icon=\\\"svg-tag2\\\" dataset=\\\"tags\\\" table-key=\\\"tags\\\" order-by=\\\"Name\\\" remove-action=\\\"removeAction\\\"></tags-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/tags/tags.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///57642\n");

}),

61242:

(function(module) {

eval("var _module_exports = \"<page-header id=\\\"'view-top'\\\" title=\\\"'应用模板列表'\\\" breadcrumbs=\\\"['Templates']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <!-- stack-form -->\\n  <stack-from-template-form\\n    ng-if=\\\"state.selectedTemplate && (state.selectedTemplate.Type === 2 || state.selectedTemplate.Type === 3)\\\"\\n    template=\\\"state.selectedTemplate\\\"\\n    form-values=\\\"formValues\\\"\\n    state=\\\"state\\\"\\n    create-template=\\\"createTemplate\\\"\\n    unselect-template=\\\"unselectTemplate\\\"\\n  >\\n  </stack-from-template-form>\\n  <!-- !stack-form -->\\n  <!-- container-form -->\\n  <div class=\\\"col-sm-12\\\" ng-if=\\\"state.selectedTemplate && state.selectedTemplate.Type === 1\\\">\\n    <rd-widget>\\n      <rd-widget-custom-header icon=\\\"state.selectedTemplate.Logo\\\" title-text=\\\"state.selectedTemplate.Title\\\"></rd-widget-custom-header>\\n      <rd-widget-body classes=\\\"padding\\\">\\n        <form class=\\\"form-horizontal\\\" name=\\\"selectedTemplateType1\\\">\\n          <!-- description -->\\n          <div ng-if=\\\"state.selectedTemplate.Note\\\">\\n            <div class=\\\"form-section-title\\\"> 信息 </div>\\n            <div class=\\\"col-sm-12 form-group\\\">\\n              <div class=\\\"template-note\\\" ng-bind-html=\\\"state.selectedTemplate.Note\\\"></div>\\n            </div>\\n          </div>\\n          <!-- !description -->\\n          <div class=\\\"form-section-title\\\"> 配置 </div>\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"container_name\\\" class=\\\"col-sm-2 control-label text-left\\\">名称</label>\\n            <div class=\\\"col-sm-6\\\">\\n              <input type=\\\"text\\\" name=\\\"container_name\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" placeholder=\\\"例如 web (optional)\\\" />\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- network-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"container_network\\\" class=\\\"col-sm-2 control-label text-left\\\">网络</label>\\n            <div class=\\\"col-sm-6\\\">\\n              <select class=\\\"form-control\\\" ng-options=\\\"net.Name for net in availableNetworks | orderBy: 'Name'\\\" ng-model=\\\"formValues.network\\\">\\n                <option disabled hidden value=\\\"\\\">选择一个网络</option>\\n              </select>\\n            </div>\\n          </div>\\n          <!-- !network-input -->\\n          <!-- env -->\\n          <div ng-repeat=\\\"var in state.selectedTemplate.Env\\\" ng-if=\\\"!var.preset || var.select\\\" class=\\\"form-group\\\">\\n            <label for=\\\"field_{{ $index }}\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n              {{ var.label }}\\n              <portainer-tooltip ng-if=\\\"var.description\\\" message=\\\"var.description\\\"></portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-6\\\">\\n              <input type=\\\"text\\\" class=\\\"form-control\\\" ng-if=\\\"!var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\" />\\n              <select class=\\\"form-control\\\" ng-if=\\\"var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\">\\n                <option selected disabled hidden value=\\\"\\\">选择数值</option>\\n                <option ng-repeat=\\\"choice in var.select\\\" value=\\\"{{ choice.value }}\\\">{{ choice.text }}</option>\\n              </select>\\n            </div>\\n          </div>\\n          <!-- !env -->\\n          <!-- access-control -->\\n          <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n          <!-- !access-control -->\\n          <div class=\\\"form-group col-sm-12\\\">\\n            <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"!state.showAdvancedOptions\\\" ng-click=\\\"state.showAdvancedOptions = true;\\\">\\n              <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 显示高级选项\\n            </a>\\n            <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"state.showAdvancedOptions\\\" ng-click=\\\"state.showAdvancedOptions = false;\\\">\\n              <pr-icon icon=\\\"'minus'\\\" feather=\\\"true\\\"></pr-icon> 隐藏高级选项\\n            </a>\\n          </div>\\n          <div ng-if=\\\"state.showAdvancedOptions\\\">\\n            <!-- port-mapping -->\\n            <div class=\\\"form-group mt-2\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left\\\">端口映射</label>\\n                <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Ports.length > 0\\\">\\n                  <div class=\\\"small text-muted\\\">如果你把主机端口留空，Portainer会自动分配一个端口。</div>\\n                  <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"portBinding in state.selectedTemplate.Ports\\\">\\n                    <!-- host-port -->\\n                    <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">主机</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.hostPort\\\" placeholder=\\\"例如 80 or 1.2.3.4:80 (optional)\\\" />\\n                    </div>\\n                    <!-- !host-port -->\\n                    <pr-icon icon=\\\"'arrow-right'\\\" feather=\\\"true\\\"></pr-icon>\\n                    <!-- container-port -->\\n                    <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">容器</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.containerPort\\\" placeholder=\\\"例如 80\\\" />\\n                    </div>\\n                    <!-- !container-port -->\\n                    <!-- protocol-actions -->\\n                    <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n                      <div class=\\\"btn-group btn-group-sm\\\">\\n                        <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n                        <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n                      </div>\\n                      <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n                        <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                      </button>\\n                    </div>\\n                    <!-- !protocol-actions -->\\n                  </div>\\n                </div>\\n                <div class=\\\"small interactive text-muted mt-2\\\" ng-click=\\\"addPortBinding()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 映射附加端口 </div>\\n              </div>\\n            </div>\\n            <!-- !port-mapping -->\\n            <!-- volume-mapping -->\\n            <div class=\\\"form-group mt-4\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left\\\">端口映射</label>\\n                <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Volumes.length > 0\\\">\\n                  <div class=\\\"small text-muted\\\">当使用<b>auto</b>选项时，Portainer将自动创建并映射一个本地卷。</div>\\n                  <div class=\\\"mt-2\\\" ng-repeat=\\\"volume in state.selectedTemplate.Volumes\\\">\\n                    <!-- volume-line1 -->\\n                    <div class=\\\"form-inline\\\">\\n                      <!-- container-path -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\">\\n                        <span class=\\\"input-group-addon\\\">容器</span>\\n                        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.container\\\" placeholder=\\\"例如 /path/in/container\\\" />\\n                      </div>\\n                      <!-- !container-path -->\\n                      <!-- volume-type -->\\n                      <div class=\\\"input-group col-sm-5 space-left\\\">\\n                        <div class=\\\"btn-group btn-group-sm\\\">\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'auto'\\\" ng-click=\\\"volume.bind = ''\\\">Auto</label>\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.bind = ''\\\">存储卷</label>\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.bind = ''\\\" ng-if=\\\"isAdmin || allowBindMounts\\\">绑定</label>\\n                        </div>\\n                        <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n                          <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                        </button>\\n                      </div>\\n                      <!-- !volume-type -->\\n                    </div>\\n                    <!-- !volume-line1 -->\\n                    <!-- volume-line2 -->\\n                    <div class=\\\"form-inline mt-1\\\" ng-if=\\\"volume.type !== 'auto'\\\">\\n                      <pr-icon icon=\\\"'arrow-right'\\\" feather=\\\"true\\\"></pr-icon>\\n                      <!-- volume -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'volume'\\\">\\n                        <div class=\\\"col-sm-12 input-group\\\">\\n                          <span class=\\\"input-group-addon\\\">存储卷</span>\\n                          <div class=\\\"col-sm-12 input-group\\\">\\n                            <select class=\\\"form-control\\\" ng-model=\\\"volume.bind\\\" ng-options=\\\"vol.Name as vol.Name for vol in availableVolumes\\\">\\n                              <option value=\\\"\\\" disabled selected>选择存储卷</option>\\n                            </select>\\n                          </div>\\n                        </div>\\n                      </div>\\n                      <!-- !volume -->\\n                      <!-- bind -->\\n                      <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'bind'\\\">\\n                        <span class=\\\"input-group-addon\\\">主机</span>\\n                        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.bind\\\" placeholder=\\\"例如 /path/on/host\\\" />\\n                      </div>\\n                      <!-- !bind -->\\n                      <!-- read-only -->\\n                      <div class=\\\"input-group input-group-sm col-sm-5 space-left\\\">\\n                        <div class=\\\"btn-group btn-group-sm\\\">\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readonly\\\" uib-btn-radio=\\\"false\\\">读写</label>\\n                          <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readonly\\\" uib-btn-radio=\\\"true\\\">只读</label>\\n                        </div>\\n                      </div>\\n                      <!-- !read-only -->\\n                    </div>\\n                    <!-- !volume-line2 -->\\n                  </div>\\n                </div>\\n                <div class=\\\"small interactive text-muted mt-2\\\" ng-click=\\\"addVolume()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加额外存储卷 </div>\\n              </div>\\n            </div>\\n            <!-- !volume-mapping -->\\n            <!-- extra-host -->\\n            <div class=\\\"form-group mt-4\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left\\\">主机文件条目</label>\\n                <!-- extra-host-input-list -->\\n                <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Hosts.length > 0\\\">\\n                  <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"(idx, host) in state.selectedTemplate.Hosts track by $index\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"state.selectedTemplate.Hosts[idx]\\\" placeholder=\\\"例如 host:IP\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeExtraHost($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <div class=\\\"small interactive text-muted mt-2\\\" ng-click=\\\"addExtraHost()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 添加额外条目 </div>\\n              </div>\\n            </div>\\n            <!-- !extra-host -->\\n            <!-- labels -->\\n            <div class=\\\"form-group mt-4\\\">\\n              <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"control-label text-left\\\">标签</label>\\n                <!-- labels-input-list -->\\n                <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Labels.length > 0\\\">\\n                  <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"label in state.selectedTemplate.Labels\\\">\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">名称</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"例如 com.example.foo\\\" />\\n                    </div>\\n                    <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n                      <span class=\\\"input-group-addon\\\">value</span>\\n                      <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"例如 bar\\\" />\\n                    </div>\\n                    <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n                      <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n                    </button>\\n                  </div>\\n                </div>\\n                <!-- !labels-input-list -->\\n                <div class=\\\"small interactive text-muted mt-2\\\" ng-click=\\\"addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\"></pr-icon> 增加标签 </div>\\n              </div>\\n            </div>\\n            <!-- !labels -->\\n            <!-- hostname -->\\n            <div class=\\\"form-group mt-4\\\">\\n              <label for=\\\"container_hostname\\\" class=\\\"col-sm-2 control-label text-left\\\">主机名</label>\\n              <div class=\\\"col-sm-6\\\">\\n                <input type=\\\"text\\\" name=\\\"container_hostname\\\" class=\\\"form-control\\\" ng-model=\\\"state.selectedTemplate.Hostname\\\" placeholder=\\\"留空以使用docker的默认值\\\" />\\n              </div>\\n            </div>\\n            <!-- !hostname -->\\n          </div>\\n          <!-- !advanced-options -->\\n          <!-- actions -->\\n          <div class=\\\"form-section-title\\\"> 操作 </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary\\\"\\n                ng-disabled=\\\"state.actionInProgress || !formValues.network\\\"\\n                ng-click=\\\"createTemplate()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\">部署容器</span>\\n                <span ng-show=\\\"state.actionInProgress\\\">部署进行中...</span>\\n              </button>\\n              <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"unselectTemplate(state.selectedTemplate)\\\">隐藏</button>\\n              <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n            </div>\\n          </div>\\n          <!-- !actions -->\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n  <!-- container-form -->\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <template-list\\n      ng-if=\\\"templates\\\"\\n      title-text=\\\"Templates\\\"\\n      title-icon=\\\"edit\\\"\\n      templates=\\\"templates\\\"\\n      table-key=\\\"templates\\\"\\n      select-action=\\\"selectTemplate\\\"\\n      show-swarm-stacks=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER' && applicationState.endpoint.apiVersion >= 1.25\\\"\\n    ></template-list>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/templates/templates.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///61242\n");

}),

98864:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'用户详情'\\\" breadcrumbs=\\\"[{label:'用户', link:'portainer.users'}, formValues.username]\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"user\\\" feather-icon=\\\"true\\\" title-text=\\\"用户详情\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"username_field\\\" class=\\\"col-sm-2 control-label text-left required\\\">用户名</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input class=\\\"form-control\\\" ng-model=\\\"formValues.username\\\" id=\\\"username_field\\\" />\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\" ng-if=\\\"isAdmin\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-3 col-lg-2 control-label text-left'\\\"\\n                checked=\\\"formValues.Administrator\\\"\\n                label=\\\"'Administrator'\\\"\\n                tooltip=\\\"'管理员可以访问Portainer设置管理，以及对所有定义的环境及其资源的完全控制。'\\\"\\n                on-change=\\\"(handleAdministratorChange)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-4\\\">\\n              <button class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!isSubmitEnabled()\\\" ng-click=\\\"updateUser()\\\">保存</button>\\n              <button class=\\\"btn btn-danger btn-sm vertical-center\\\" ng-disabled=\\\"isDeleteDisabled()\\\" ng-click=\\\"deleteUser()\\\">\\n                <pr-icon icon=\\\"'trash-2'\\\" feather=\\\"true\\\" size=\\\"'sm'\\\" class=\\\"vertical-center\\\"></pr-icon>删除此用户\\n              </button>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"lock\\\" feather-icon=\\\"true\\\" title-text=\\\"更改用户密码\\\"></rd-widget-header>\\n      <rd-widget-body>\\n        <form name=\\\"form\\\" class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n          <!-- new-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"new_password\\\" class=\\\"col-sm-2 control-label text-left required\\\">新密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.newPassword\\\" id=\\\"new_password\\\" name=\\\"new_password\\\" ng-minlength=\\\"requiredPasswordLength\\\" />\\n            </div>\\n          </div>\\n          <!-- !new-password-input -->\\n          <!-- confirm-password-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"confirm_password\\\" class=\\\"col-sm-2 control-label text-left required\\\">确认密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <div class=\\\"input-group\\\">\\n                <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.confirmPassword\\\" id=\\\"confirm_password\\\" />\\n                <span class=\\\"input-group-addon\\\">\\n                  <pr-icon\\n                    icon=\\\"'check'\\\"\\n                    feather=\\\"true\\\"\\n                    class=\\\"icon-success\\\"\\n                    ng-if=\\\"form.new_password.$viewValue !== '' && form.new_password.$viewValue === formValues.confirmPassword\\\"\\n                  ></pr-icon>\\n                  <pr-icon\\n                    icon=\\\"'x'\\\"\\n                    feather=\\\"true\\\"\\n                    class=\\\"icon-danger\\\"\\n                    ng-if=\\\"!(form.new_password.$viewValue !== '' && form.new_password.$viewValue === formValues.confirmPassword)\\\"\\n                  ></pr-icon>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !confirm-password-input -->\\n          <password-check-hint password-valid=\\\"form.new_password.$valid && formValues.newPassword\\\"></password-check-hint>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-2\\\">\\n              <button\\n                type=\\\"submit\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"form.new_password.$viewValue === '' || form.$invalid || !formValues.newPassword || !formValues.confirmPassword || form.new_password.$viewValue !== formValues.confirmPassword\\\"\\n                ng-click=\\\"updatePassword()\\\"\\n                >更新密码</button\\n              >\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/users/edit/user.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///98864\n");

}),

3799:

(function(module) {

eval("var _module_exports = \"<page-header title=\\\"'用户'\\\" breadcrumbs=\\\"['User management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"isAdmin\\\">\\n  <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n    <rd-widget>\\n      <rd-widget-header icon=\\\"plus\\\" feather-icon=\\\"true\\\" title-text=\\\"Add a new user\\\"> </rd-widget-header>\\n      <rd-widget-body>\\n        <form name=\\\"form\\\" class=\\\"form-horizontal\\\">\\n          <!-- name-input -->\\n          <div class=\\\"form-group\\\">\\n            <label for=\\\"username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">\\n              用户名\\n              <portainer-tooltip ng-if=\\\"AuthenticationMethod === 2\\\" message=\\\"'用户名必须与外部LDAP源中定义的用户名完全一致。'\\\"></portainer-tooltip>\\n            </label>\\n            <div class=\\\"col-sm-8\\\">\\n              <div class=\\\"input-group\\\">\\n                <input\\n                  type=\\\"text\\\"\\n                  class=\\\"form-control\\\"\\n                  id=\\\"username\\\"\\n                  ng-model=\\\"formValues.Username\\\"\\n                  ng-change=\\\"checkUsernameValidity()\\\"\\n                  placeholder=\\\"例如 jdoe\\\"\\n                  auto-focus\\n                  data-cy=\\\"user-usernameInput\\\"\\n                />\\n                <span class=\\\"input-group-addon\\\">\\n                  <pr-icon class=\\\"fa green-icon\\\" icon=\\\"'check'\\\" feather=\\\"true\\\" aria-hidden=\\\"true\\\" ng-if=\\\"state.validUsername\\\"></pr-icon>\\n                  <pr-icon class=\\\"fa red-icon\\\" icon=\\\"'x'\\\" feather=\\\"true\\\" aria-hidden=\\\"true\\\" ng-if=\\\"!state.validUsername\\\"></pr-icon>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !name-input -->\\n          <!-- new-password-input -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n            <label for=\\\"password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <input\\n                type=\\\"password\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"formValues.Password\\\"\\n                id=\\\"password\\\"\\n                name=\\\"password\\\"\\n                ng-minlength=\\\"requiredPasswordLength\\\"\\n                data-cy=\\\"user-passwordInput\\\"\\n              />\\n            </div>\\n          </div>\\n          <!-- !new-password-input -->\\n          <!-- confirm-password-input -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n            <label for=\\\"confirm_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left required\\\">确认密码</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <div class=\\\"input-group\\\">\\n                <input\\n                  type=\\\"password\\\"\\n                  class=\\\"form-control form-control--has-icon\\\"\\n                  ng-model=\\\"formValues.ConfirmPassword\\\"\\n                  id=\\\"confirm_password\\\"\\n                  data-cy=\\\"user-passwordConfirmInput\\\"\\n                />\\n                <span class=\\\"input-group-addon\\\">\\n                  <pr-icon\\n                    class=\\\"fa green-icon\\\"\\n                    icon=\\\"'check'\\\"\\n                    feather=\\\"true\\\"\\n                    aria-hidden=\\\"true\\\"\\n                    ng-if=\\\"form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword\\\"\\n                  ></pr-icon>\\n                  <pr-icon\\n                    class=\\\"fa red-icon\\\"\\n                    icon=\\\"'x'\\\"\\n                    feather=\\\"true\\\"\\n                    aria-hidden=\\\"true\\\"\\n                    ng-if=\\\"!(form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword)\\\"\\n                  ></pr-icon>\\n                </span>\\n              </div>\\n            </div>\\n          </div>\\n          <!-- !confirm-password-input -->\\n\\n          <!-- password-check-hint -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n            <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n            <div class=\\\"col-sm-8\\\">\\n              <password-check-hint password-valid=\\\"form.password.$valid && formValues.Password\\\"></password-check-hint>\\n            </div>\\n          </div>\\n          <!-- ! password-check-hint  -->\\n\\n          <!-- admin-checkbox -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"isAdmin\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <por-switch-field\\n                label-class=\\\"'col-sm-3 col-lg-2 control-label text-left'\\\"\\n                checked=\\\"formValues.Administrator\\\"\\n                label=\\\"'Administrator'\\\"\\n                tooltip=\\\"'管理员可以访问Portainer设置管理，以及对所有定义的环境及其资源的完全控制。'\\\"\\n                on-change=\\\"(handleAdministratorChange)\\\"\\n              ></por-switch-field>\\n            </div>\\n          </div>\\n          <!-- !admin-checkbox -->\\n          <!-- teams -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"!formValues.Administrator\\\">\\n            <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" for=\\\"teams-selector\\\">添加到团队</label>\\n            <div class=\\\"col-sm-8\\\">\\n              <span class=\\\"small text-muted\\\" ng-if=\\\"teams.length === 0\\\">\\n                你似乎没有任何团队可以添加用户。请到 <a ui-sref=\\\"portainer.teams\\\">团队视图</a> 中去创建一些。\\n              </span>\\n              <teams-selector\\n                ng-if=\\\"teams.length > 0\\\"\\n                value=\\\"formValues.TeamIds\\\"\\n                teams=\\\"teams\\\"\\n                placeholder=\\\"'选择一个或多个团队'\\\"\\n                data-cy=\\\"'user-teamSelect'\\\"\\n                on-change=\\\"(onChangeTeamIds)\\\"\\n                input-id=\\\"'teams-selector'\\\"\\n              ></teams-selector>\\n            </div>\\n          </div>\\n          <!-- !teams -->\\n          <div class=\\\"form-group\\\" ng-if=\\\"isAdmin && !formValues.Administrator && formValues.Teams.length === 0\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <span class=\\\"small text-muted vertical-center\\\">\\n                <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-circle'\\\" feather=\\\"true\\\" aria-hidden=\\\"true\\\" mode=\\\"'primary'\\\" size=\\\"'md'\\\"></pr-icon>\\n                <span\\n                  >注意：不在团队中的非管理员用户默认情况下无法访问任何环境。请前往\\n                  <a ui-sref=\\\"portainer.endpoints\\\">环境视图</a> 管理其访问权限。</span\\n                >\\n              </span>\\n            </div>\\n          </div>\\n          <div class=\\\"form-group\\\">\\n            <div class=\\\"col-sm-12\\\">\\n              <button\\n                type=\\\"button\\\"\\n                class=\\\"btn btn-primary btn-sm\\\"\\n                ng-disabled=\\\"state.actionInProgress || !state.validUsername || formValues.Username === '' || (AuthenticationMethod === 1 && (!formValues.Password || form.$invalid || formValues.Password !== formValues.ConfirmPassword))\\\"\\n                ng-click=\\\"addUser()\\\"\\n                button-spinner=\\\"state.actionInProgress\\\"\\n                data-cy=\\\"user-createUserButton\\\"\\n              >\\n                <span ng-hide=\\\"state.actionInProgress\\\" class=\\\"vertical-center icon-white\\\">\\n                  <pr-icon icon=\\\"'plus'\\\" feather=\\\"true\\\" aria-hidden=\\\"true\\\" size=\\\"'md'\\\"></pr-icon> 创建用户</span\\n                >\\n                <span ng-show=\\\"state.actionInProgress\\\">创建用户中...</span>\\n              </button>\\n              <span class=\\\"text-danger\\\" ng-if=\\\"state.userCreationError\\\">\\n                <pr-icon icon=\\\"'alert-circle'\\\" feather=\\\"true\\\" aria-hidden=\\\"true\\\" mode=\\\"'primary'\\\" size=\\\"'md'\\\"></pr-icon> {{ state.userCreationError }}\\n              </span>\\n            </div>\\n          </div>\\n        </form>\\n      </rd-widget-body>\\n    </rd-widget>\\n  </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n  <div class=\\\"col-sm-12\\\">\\n    <users-datatable\\n      title-text=\\\"Users\\\"\\n      title-icon=\\\"user\\\"\\n      dataset=\\\"users\\\"\\n      table-key=\\\"users\\\"\\n      order-by=\\\"Username\\\"\\n      authentication-method=\\\"AuthenticationMethod\\\"\\n      remove-action=\\\"removeAction\\\"\\n      is-admin=\\\"isAdmin\\\"\\n    ></users-datatable>\\n  </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/users/users.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;//# sourceURL=webpack-internal:///3799\n");

}),

69962:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "d3a18c5002453f58c8b9.png";

}),

94233:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "51906a7e4bd0e1d9e771.png";

}),

51070:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "19c2b168a8d85994e14e.png";

}),

21306:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "9d07a3ace464cfd6e27c.png";

}),

6186:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "c2c179f41199d25e0055.png";

}),

61311:

(function(module) {

"use strict";
module.exports = "data:image/svg+xml;base64, ";

}),

93261:

(function(module) {

"use strict";
module.exports = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCAzNiA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguMzM5MTEgNy45NTUwMkgxNS43NDEzTDguMDU3NyAzMS4yMjI1QzcuOTc4NyAzMS40NjE5IDcuODI4NDcgMzEuNjY5NSA3LjYyNzQ2IDMxLjgxNjVDNy40MjcxNSAzMS45NjM2IDcuMTg1OTQgMzIuMDQyOCA2LjkzOTA4IDMyLjA0MjhIMS4xNzg4NUMwLjk5MTk0MiAzMi4wNDI4IDAuODA3MTUyIDMxLjk5NzQgMC42NDA2OTkgMzEuOTEwMkMwLjQ3NDI0NyAzMS44MjMgMC4zMzAzNjUgMzEuNjk2MSAwLjIyMTA0MiAzMS41NDExQzAuMTExNzIgMzEuMzg2MiAwLjA0MDQ4NCAzMS4yMDYgMC4wMTI5NzcgMzEuMDE3MUMtMC4wMTQ1Mjk5IDMwLjgyODMgMC4wMDE2OTIzIDMwLjYzNTEgMC4wNjE2NDMzIDMwLjQ1MzRMNy4yMjEyIDguNzc2MDRDNy4zMDAyIDguNTM2NzIgNy40NTA0MyA4LjMyOTEzIDcuNjUxNDQgOC4xODIwOEM3Ljg1MTc1IDguMDM1MDMgOC4wOTI5NiA3Ljk1NTc0IDguMzM5ODIgNy45NTU3NEw4LjMzOTExIDcuOTU1MDJaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNzk2OV8zOTQyMDEpIi8+CjxwYXRoIGQ9Ik0xOS4wOTU5IDIzLjU2MTZINy4zNTgxN0M3LjI0ODg1IDIzLjU2MTYgNy4xNDIzNSAyMy41OTQ4IDcuMDUyMDcgMjMuNjU3NUM2Ljk2MTc5IDIzLjcyMDIgNi44OTE5NiAyMy44MDk2IDYuODUyNDcgMjMuOTEyN0M2LjgxMjI3IDI0LjAxNjUgNi44MDM4IDI0LjEzMDQgNi44Mjc3OCAyNC4yMzg1QzYuODUxNzYgMjQuMzQ3MyA2LjkwNzQ4IDI0LjQ0NjEgNi45ODcxOCAyNC41MjE4TDE0LjUyOTcgMzEuNzE2M0MxNC43NDkxIDMxLjkyNjEgMTUuMDM4MiAzMi4wNDIxIDE1LjMzODcgMzIuMDQyMUgyMS45ODQ4TDE5LjA5NTkgMjMuNTYwMlYyMy41NjE2WiIgZmlsbD0iIzAwNzhENCIvPgo8cGF0aCBkPSJNOC4zMzk1MyA3Ljk1NTAyQzguMDg5ODUgNy45NTQzIDcuODQ2NTIgOC4wMzUwMyA3LjY0NDggOC4xODQ5N0M3LjQ0MzA4IDguMzM1NjIgNy4yOTM1NiA4LjU0NzU0IDcuMjE4OCA4Ljc5MTE4TDAuMDcxMjIxMiAzMC40MzQ3QzAuMDA3MDM4MzYgMzAuNjE2MyAtMC4wMTI3MTAzIDMwLjgxMTcgMC4wMTI2ODA3IDMxLjAwMjdDMC4wMzgwNzE3IDMxLjE5NDQgMC4xMDg2MDIgMzEuMzc2OCAwLjIxNzIyIDMxLjUzNDdDMC4zMjY1NDIgMzEuNjkyNSAwLjQ3MTEzIDMxLjgyMTYgMC42Mzg5OTMgMzEuOTEwMkMwLjgwNjg1NSAzMS45OTg5IDAuOTkzMDU3IDMyLjA0NSAxLjE4MjA4IDMyLjA0NDNINy4wOTExNEM3LjMxMTE5IDMyLjAwMzkgNy41MTcxNCAzMS45MDUyIDcuNjg3MTIgMzEuNzU2N0M3Ljg1NzggMzEuNjA4OSA3Ljk4NjE3IDMxLjQxNzIgOC4wNjAyMyAzMS4yMDE3TDkuNDg1NjUgMjYuOTA5MUwxNC41NzczIDMxLjc2MjVDMTQuNzkwMyAzMS45NDI3IDE1LjA1ODMgMzIuMDQyOSAxNS4zMzU1IDMyLjA0NUgyMS45NTY5TDE5LjA1MjQgMjMuNTYzMUwxMC41ODY2IDIzLjU2NTJMMTUuNzY4NSA3Ljk1NTAySDguMzM5NTNaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfNzk2OV8zOTQyMDEpIi8+CjxwYXRoIGQ9Ik0xNy43OTM1IDguNzc0NkMxNy43MTQ1IDguNTM2IDE3LjU2NDMgOC4zMjg0IDE3LjM2NCA4LjE4MTM2QzE3LjE2MzcgOC4wMzQzMSAxNi45MjMxIDcuOTU1MDIgMTYuNjc3IDcuOTU1MDJIOC40Mjc3M0M4LjY3NDU5IDcuOTU1MDIgOC45MTQzOSA4LjAzNDMxIDkuMTE0NyA4LjE4MTM2QzkuMzE1MDEgOC4zMjg0IDkuNDY1MjQgOC41MzYgOS41NDQyMyA4Ljc3NDZMMTYuNzAzOCAzMC40NTQyQzE2Ljc2MzcgMzAuNjM1MSAxNi43ODA3IDMwLjgyODMgMTYuNzUyNSAzMS4wMTc4QzE2LjcyNSAzMS4yMDY3IDE2LjY1MzcgMzEuMzg2OSAxNi41NDQ0IDMxLjU0MTlDMTYuNDM1MSAzMS42OTY5IDE2LjI5MTkgMzEuODIzNyAxNi4xMjQ3IDMxLjkxMDlDMTUuOTU4MyAzMS45OTgyIDE1Ljc3NDIgMzIuMDQzNiAxNS41ODY2IDMyLjA0MzZIMjMuODM1OEMyNC4wMjI4IDMyLjA0MzYgMjQuMjA3NSAzMS45OTgyIDI0LjM3NCAzMS45MTA5QzI0LjU0MDQgMzEuODIzNyAyNC42ODQzIDMxLjY5NjkgMjQuNzkyOSAzMS41NDE5QzI0LjkwMjMgMzEuMzg2OSAyNC45NzM1IDMxLjIwNjcgMjUuMDAxIDMxLjAxNzhDMjUuMDI4NSAzMC44MjkgMjUuMDEyMyAzMC42MzU4IDI0Ljk1MjMgMzAuNDU0MkwxNy43OTM1IDguNzc0NloiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl83OTY5XzM5NDIwMSkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl83OTY5XzM5NDIwMSIgeDE9IjExLjAzNzYiIHkxPSI5Ljc0MDUiIHgyPSIzLjA0NDMiIHkyPSIzMi44NDQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzExNEE4QiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwNjY5QkMiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzc5NjlfMzk0MjAxIiB4MT0iMTMuNDM4MiIgeTE9IjIwLjU1NjUiIHgyPSIxMS42NTIzIiB5Mj0iMjEuMTQ3MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLW9wYWNpdHk9IjAuMyIvPgo8c3RvcCBvZmZzZXQ9IjAuMDciIHN0b3Atb3BhY2l0eT0iMC4yIi8+CjxzdG9wIG9mZnNldD0iMC4zMiIgc3RvcC1vcGFjaXR5PSIwLjEiLz4KPHN0b3Agb2Zmc2V0PSIwLjYyIiBzdG9wLW9wYWNpdHk9IjAuMDUiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzc5NjlfMzk0MjAxIiB4MT0iMTIuNTE1NyIgeTE9IjkuMDQyMDIiIHgyPSIyMS4yODEyIiB5Mj0iMzEuODkyMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjM0NDQkY0Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzI4OTJERiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=";

}),

84670:

(function(module) {

"use strict";
module.exports = "data:image/svg+xml;base64, ";

}),

325:

(function(module) {

"use strict";
module.exports = "data:image/svg+xml;base64, ";

}),

20739:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "63c1259abd88a9d2cebc.svg";

}),

66606:

(function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
module.exports = __webpack_require__.p + "7e697c5bab4f819328df.svg";

}),

75347:

(function() {

/* (ignored) */

}),

31777:

(function() {

/* (ignored) */

}),

34017:

(function() {

/* (ignored) */

}),

59905:

(function() {

/* (ignored) */

}),

64604:

(function() {

/* (ignored) */

}),

324:

(function(module) {

"use strict";
module.exports = JSON.parse('{"black":"#000000","white":"#ffffff","gray":{"1":"#fcfcfd","2":"#f9fafb","3":"#f2f4f7","4":"#eaecf0","5":"#d0d5dd","6":"#98a2b3","7":"#667085","8":"#475467","9":"#344054","10":"#1d2939","11":"#101828"},"blue":{"1":"#f5fbff","2":"#f0f9ff","3":"#e0f2fe","4":"#b9e6fe","5":"#7cd4fd","6":"#36bffa","7":"#0ba5ec","8":"#0086c9","9":"#026aa2","10":"#065986","11":"#0b4a6f"},"error":{"1":"#fffbfa","2":"#fef3f2","3":"#fee4e2","4":"#fecdca","5":"#fda29b","6":"#f97066","7":"#f04438","8":"#d92d20","9":"#b42318","10":"#912018","11":"#7a271a"},"warning":{"1":"#fffcf5","2":"#fffaeb","3":"#fef0c7","4":"#fedf89","5":"#fec84b","6":"#fdb022","7":"#f79009","8":"#dc6803","9":"#b54708","10":"#93370d","11":"#7a2e0e"},"success":{"1":"#f6fef9","2":"#ecfdf3","3":"#d1fadf","4":"#a6f4c5","5":"#6ce9a6","6":"#32d583","7":"#12b76a","8":"#039855","9":"#027a48","10":"#05603a","11":"#054f31"},"gray-blue":{"1":"#fcfcfd","2":"#f8f9fc","3":"#eaecf5","4":"#d5d9eb","5":"#b3b8db","6":"#717bbc","7":"#4e5ba6","8":"#3e4784","9":"#363f72","10":"#293056","11":"#293056"},"gray-cool":{"1":"#fcfcfd","2":"#f9f9fb","3":"#eff1f5","4":"#dcdfea","5":"#b9c0d4","6":"#7d89b0","7":"#5d6b98","8":"#4a5578","9":"#404968","10":"#30374f","11":"#111322"},"gray-modern":{"1":"#fcfcfd","2":"#f8fafc","3":"#eef2f6","4":"#e3e8ef","5":"#cdd5df","6":"#9aa4b2","7":"#697586","8":"#4b5565","9":"#364152","10":"#202939","11":"#121926"},"gray-neutral":{"1":"#fcfcfd","2":"#f9fafb","3":"#f3f4f6","4":"#e5e7eb","5":"#d2d6db","6":"#9da4ae","7":"#6c737f","8":"#4d5761","9":"#384250","10":"#1f2a37","11":"#111927"},"gray-iron":{"1":"#fcfcfc","2":"#fafafa","3":"#f4f4f5","4":"#e4e4e7","5":"#d1d1d6","6":"#d1d1d6","7":"#70707b","8":"#51525c","9":"#3f3f46","10":"#26272b","11":"#18181b"},"gray-true":{"1":"#fcfcfc","2":"#fafafa","3":"#f5f5f5","4":"#e5e5e5","5":"#d6d6d6","6":"#a3a3a3","7":"#737373","8":"#525252","9":"#424242","10":"#292929","11":"#141414"},"gray-warm":{"1":"#fdfdfc","2":"#fafaf9","3":"#f5f5f4","4":"#e7e5e4","5":"#d7d3d0","6":"#a9a29d","7":"#79716b","8":"#57534e","9":"#44403c","10":"#292524","11":"#1c1917"},"moss":{"1":"#fafdf7","2":"#f5fbee","3":"#e6f4d7","4":"#ceeab0","5":"#acdc79","6":"#86cb3c","7":"#669f2a","8":"#4f7a21","9":"#3f621a","10":"#335015","11":"#2b4212"},"green-light":{"1":"#fafef5","2":"#f3fee7","3":"#e4fbcc","4":"#d0f8ab","5":"#a6ef67","6":"#85e13a","7":"#66c61c","8":"#4ca30d","9":"#3b7c0f","10":"#326212","11":"#2b5314"},"green":{"1":"#f6fef9","2":"#edfcf2","3":"#d3f8df","4":"#aaf0c4","5":"#73e2a3","6":"#73e2a3","7":"#16b364","8":"#099250","9":"#087443","10":"#095c37","11":"#084c2e"},"teal":{"1":"#f6fefc","2":"#f0fdf9","3":"#ccfbef","4":"#99f6e0","5":"#5fe9d0","6":"#2ed3b7","7":"#15b79e","8":"#0e9384","9":"#107569","10":"#125d56","11":"#134e48"},"cyan":{"1":"#f5feff","2":"#ecfdff","3":"#cff9fe","4":"#a5f0fc","5":"#67e3f9","6":"#22ccee","7":"#06aed4","8":"#088ab2","9":"#0e7090","10":"#155b75","11":"#164c63"},"blue-dark":{"1":"#f5f8ff","2":"#eff4ff","3":"#d1e0ff","4":"#b2ccff","5":"#84adff","6":"#528bff","7":"#2970ff","8":"#155eef","9":"#004eeb","10":"#0040c1","11":"#00359e"},"indigo":{"1":"#f5f8ff","2":"#eef4ff","3":"#e0eaff","4":"#c7d7fe","5":"#a4bcfd","6":"#8098f9","7":"#8098f9","8":"#444ce7","9":"#3538cd","10":"#2d31a6","11":"#2d3282"},"violet":{"1":"#fbfaff","2":"#f5f3ff","3":"#ece9fe","4":"#ddd6fe","5":"#c3b5fd","6":"#a48afb","7":"#875bf7","8":"#7839ee","9":"#6927da","10":"#5720b7","11":"#491c96"},"purple":{"1":"#fafaff","2":"#f4f3ff","3":"#ebe9fe","4":"#d9d6fe","5":"#bdb4fe","6":"#9b8afb","7":"#7a5af8","8":"#6938ef","9":"#5925dc","10":"#4a1fb8","11":"#3e1c96"},"fuchsia":{"1":"#fefaff","2":"#fdf4ff","3":"#fbe8ff","4":"#f6d0fe","5":"#eeaafd","6":"#e478fa","7":"#d444f1","8":"#ba24d5","9":"#9f1ab1","10":"#821890","11":"#6f1877"},"pink":{"1":"#fef6fb","2":"#fdf2fa","3":"#fce7f6","4":"#fce7f6","5":"#faa7e0","6":"#f670c7","7":"#ee46bc","8":"#dd2590","9":"#c11574","10":"#9e165f","11":"#851651"},"rose":{"1":"#fff5f6","2":"#fff1f3","3":"#ffe4e8","4":"#fecdd6","5":"#fea3b4","6":"#fd6f8e","7":"#f63d68","8":"#e31b54","9":"#c01048","10":"#a11043","11":"#89123e"},"orange-dark":{"1":"#fff9f5","2":"#fff4ed","3":"#ffe6d5","4":"#ffd6ae","5":"#ff9c66","6":"#ff692e","7":"#ff4405","8":"#e62e05","9":"#bc1b06","10":"#97180c","11":"#771a0d"},"orange":{"1":"#fefaf5","2":"#fef6ee","3":"#fdead7","4":"#f9dbaf","5":"#f7b27a","6":"#f38744","7":"#ef6820","8":"#e04f16","9":"#b93815","10":"#932f19","11":"#772917"},"yellow":{"1":"#fefdf0","2":"#fefbe8","3":"#fef7c3","4":"#feee95","5":"#feee95","6":"#fac515","7":"#eaaa08","8":"#ca8504","9":"#a15c07","10":"#854a0e","11":"#713b12"}}');

}),

58550:

(function(module) {

"use strict";
module.exports = JSON.parse('["000000","800000","008000","808000","000080","800080","008080","c0c0c0","808080","ff0000","00ff00","ffff00","0000ff","ff00ff","00ffff","ffffff","000000","00005f","000087","0000af","0000d7","0000ff","005f00","005f5f","005f87","005faf","005fd7","005fff","008700","00875f","008787","0087af","0087d7","0087ff","00af00","00af5f","00af87","00afaf","00afd7","00afff","00d700","00d75f","00d787","00d7af","00d7d7","00d7ff","00ff00","00ff5f","00ff87","00ffaf","00ffd7","00ffff","5f0000","5f005f","5f0087","5f00af","5f00d7","5f00ff","5f5f00","5f5f5f","5f5f87","5f5faf","5f5fd7","5f5fff","5f8700","5f875f","5f8787","5f87af","5f87d7","5f87ff","5faf00","5faf5f","5faf87","5fafaf","5fafd7","5fafff","5fd700","5fd75f","5fd787","5fd7af","5fd7d7","5fd7ff","5fff00","5fff5f","5fff87","5fffaf","5fffd7","5fffff","870000","87005f","870087","8700af","8700d7","8700ff","875f00","875f5f","875f87","875faf","875fd7","875fff","878700","87875f","878787","8787af","8787d7","8787ff","87af00","87af5f","87af87","87afaf","87afd7","87afff","87d700","87d75f","87d787","87d7af","87d7d7","87d7ff","87ff00","87ff5f","87ff87","87ffaf","87ffd7","87ffff","af0000","af005f","af0087","af00af","af00d7","af00ff","af5f00","af5f5f","af5f87","af5faf","af5fd7","af5fff","af8700","af875f","af8787","af87af","af87d7","af87ff","afaf00","afaf5f","afaf87","afafaf","afafd7","afafff","afd700","afd75f","afd787","afd7af","afd7d7","afd7ff","afff00","afff5f","afff87","afffaf","afffd7","afffff","d70000","d7005f","d70087","d700af","d700d7","d700ff","d75f00","d75f5f","d75f87","d75faf","d75fd7","d75fff","d78700","d7875f","d78787","d787af","d787d7","d787ff","d7af00","d7af5f","d7af87","d7afaf","d7afd7","d7afff","d7d700","d7d75f","d7d787","d7d7af","d7d7d7","d7d7ff","d7ff00","d7ff5f","d7ff87","d7ffaf","d7ffd7","d7ffff","ff0000","ff005f","ff0087","ff00af","ff00d7","ff00ff","ff5f00","ff5f5f","ff5f87","ff5faf","ff5fd7","ff5fff","ff8700","ff875f","ff8787","ff87af","ff87d7","ff87ff","ffaf00","ffaf5f","ffaf87","ffafaf","ffafd7","ffafff","ffd700","ffd75f","ffd787","ffd7af","ffd7d7","ffd7ff","ffff00","ffff5f","ffff87","ffffaf","ffffd7","ffffff","080808","121212","1c1c1c","262626","303030","3a3a3a","444444","4e4e4e","585858","606060","666666","767676","808080","8a8a8a","949494","9e9e9e","a8a8a8","b2b2b2","bcbcbc","c6c6c6","d0d0d0","dadada","e4e4e4","eeeeee"]');

})

},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ __webpack_require__.O(0, ["vendor"], function() { return __webpack_exec__(21570); });
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);